- vừa được xem lúc

Cách mình public GITHUB ACTION đầu tiên của mình!

0 0 1

Người đăng: Bun

Theo Viblo Asia

Cách mình public github action đầu tiên của mình!

Trong quá trình mày mò viết open source, mình đã quyết định thử sức với việc viết một GitHub Action nhỏ. Bài viết này sẽ chia những loay hoay ban đầu đến khi thành công public Action lên GitHub Marketplace. Hy vọng bài viết này sẽ hữu ích cho các bạn đang có ý định làm điều tương tự.

Đặt vấn đề

Ban đầu, mình chỉ tập trung vào việc viết code cho Action sao cho chạy đúng chức năng. Tuy nhiên, để chia sẻ Action lên marketplace, thì mình cần có:

  • Cấu hình workflow: Tạo file .github/workflows để định nghĩa cách thức chạy Action.
  • Quản lý dependencies: ví dụ src mình viết bằng js và mình có sử dụng 1 số package bên ngoài nên mình cần có file package.json
  • Mô tả Action: Viết file action.yaml để cung cấp thông tin chi tiết về Action.

Sau khi test và fix bug thì github action của mình đã chạy ổn. Mình tiến hành tạo bản release.

release

Kèm theo đó lúc này mình thấy repo của mình có alert thông báo bên dưới:

alert

Lúc này mình cứ ngỡ là mình đã thành công, nhưng khi mình cài đặt vào một src khác để sử dụng

jobs: review: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps: - name: Review the code with Gemini uses: bunheree/gemini-review@v1.0.0 ...

Vấn đề xuất hiện ngay lúc này, sau khi github action chạy thì mình nhận được lỗi là

ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null)
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@actions/core'

Sau khi research thì lỗi @actions/core package thiếu trong /node_modules là một lỗi thường gặp khi publishing GitHub Actions.

Lỗi này thường gặp khi src của bạn chưa được bundle.

Resolve

Bundle the Action

Để fix lỗi trên mình cần sử dụng trình đóng gói như esbuild hoặc ncc để tạo một file js bao gồm tất cả các dependencies.

Và mình dùng @vercel/ncc tại chỗ này

npm install -g @vercel/ncc

Sau khi cài đặt xong, mình chạy lên build

ncc build index.js --out dist

Sau khi build xong thì một folder bundle action sẽ được tạo

bundle

Kiểm tra lại file action.yaml

Trước đó mình khai báo main runs là index.js nhưng lúc này sau khi đã bundle src thì file nên gọi ở đây là dist/index.js. Kiểm tra và update lại cài đặt cho file action.yaml như bên dưới

runs: using: "node20" main: "dist/index.js"

Notes

Sau khi hoàn thành đầy đủ các cài đặt thì đừng quên release lại version mới cho github action của bạn, khi này bạn đã có thể sử dụng github action ở những repo khác.

uses: bunheree/gemini-review@v1.0.2

Summarize

Tổng hợp lại thì bên dưới là một số cài đặt và lưu ý khi bạn muốn public github action.

  • Cấu hình workflow: Tạo file .github/workflows để định nghĩa cách thức chạy Action.
  • Quản lý dependencies: ví dụ src mình viết bằng js và mình có sử dụng 1 số package bên ngoài nên mình cần có file package.json
  • Mô tả Action: Viết file action.yaml để cung cấp thông tin chi tiết về Action.
  • Bundle the Action, sử dụng esbuild hoặc ncc

Ai hứng thú có thể tham khảo github action mình vừa build ở đây: github.com/marketplace/actions/review-pull-request-auto

github-action-mkp

End.

Happy coding!!! 👩🏼‍💻

Author: bunhere.com

I am always looking for feedback on my writing, so please let me know what you think. ❤️

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cấu hình CI/CD với Github (phần 2): Trigger một work flow

Events trigger. Bạn có thể cấu hình cho workflows chạy khi có một sự kiện nào đó xảy ra trên GitHub, theo một lịch có sẵn hoặc cũng có thể là một sự kiện nào đó xảy ra ngoài GitHub.

0 0 80

- vừa được xem lúc

Khi Github Actions và CircleCI song kiếm hợp bích thì đỉnh không gì bằng [Phần 2]

Cách thức thực hiện. Có thể nói ưu điểm của Github Actions chính là số lượng trigger nhiều. Việc khởi động CircleCI sẽ gọi API của CircleCI từ phía Github Actions và kích hoạt trigger. Cho nên, ở setting của repository, hãy cài OFF cho Webhook.

0 0 49

- vừa được xem lúc

Khi Github Actions và CircleCI song kiếm hợp bích thì đỉnh không gì bằng [Phần 1]

(Sau đây xin được dịch lại bài báo nọ, ngôi xưng là "Chế"). .

0 0 48

- vừa được xem lúc

Cấu hình CI/CD với Github (phần 4): Các mẫu job cơ bản

Sau đây là một số mẫu Github action cơ bản mà các bạn có thể sử dụng để tạo một flow hoàn chỉnh, phụ thuộc vào yêu cầu của từng dự án khác nhau. .

0 1 130

- vừa được xem lúc

Cách tạo một trang blog cá nhân miễn phí dành cho dev

Vào một ngày đẹp trời, bỗng dưng mình nảy ra ý định làm một trang blog cá nhân thay vì viết Blog trên các nền tảng có sẵn. .

0 0 42

- vừa được xem lúc

Cài đặt đơn giản automating publishing Flutter app lên Google Play bằng Github Actions

Introduction. Mỗi developer hay gặp phải các công việc lặp đi lặp lại gây ra sự nhàm chán.

0 0 45