Workflow CI hiện tại trong .gitea/workflows/ci.yml đang dùng actions/setup-go@v5 ở nhiều job. Việc setup Go trong lúc chạy pipeline làm CI chậm hơn cần thiết.
Pipeline này cũng cần Node, nên image Go thuần không phù hợp.
Mục tiêu
Viết lại CI để dùng image có sẵn môi trường Node + Go:
git.thuanle.me/public/node-go
Mục đích:
bỏ bước setup Go trong từng job
tận dụng image đã có sẵn dependency runtime cần thiết
giảm thời gian khởi động và tổng thời gian chạy CI
Phạm vi
Cập nhật .gitea/workflows/ci.yml
Cho các job cần Go chạy bằng container image git.thuanle.me/public/node-go
Loại bỏ actions/setup-go@v5
Giữ nguyên các bước kiểm tra hiện có như gofmt và go test ./...
Đề xuất triển khai
Ví dụ hướng cập nhật:
jobs:fmt:runs-on:linuxcontainer:image:git.thuanle.me/public/node-gosteps:- uses:actions/checkout@v4- run:| out=$(gofmt -l .)
if [ -n "$out" ]; then
echo "Files not formatted:"
echo "$out"
exit 1
fitest:runs-on:linuxcontainer:image:git.thuanle.me/public/node-gosteps:- uses:actions/checkout@v4- run:go test ./...
Acceptance criteria
.gitea/workflows/ci.yml không còn dùng actions/setup-go@v5
Các job CI cần Go chạy bằng image git.thuanle.me/public/node-go
gofmt và go test ./... vẫn chạy bình thường
Log pipeline không còn bước cài đặt Go động
Thời gian chạy CI giảm so với workflow hiện tại
Lưu ý
Image git.thuanle.me/public/node-go cần có sẵn node, go, gofmt
Nếu có tag ổn định, nên pin tag cụ thể thay vì dùng floating tag
## Vấn đề
Workflow CI hiện tại trong `.gitea/workflows/ci.yml` đang dùng `actions/setup-go@v5` ở nhiều job. Việc setup Go trong lúc chạy pipeline làm CI chậm hơn cần thiết.
Pipeline này cũng cần Node, nên image Go thuần không phù hợp.
## Mục tiêu
Viết lại CI để dùng image có sẵn môi trường Node + Go:
`git.thuanle.me/public/node-go`
Mục đích:
- bỏ bước setup Go trong từng job
- tận dụng image đã có sẵn dependency runtime cần thiết
- giảm thời gian khởi động và tổng thời gian chạy CI
## Phạm vi
- Cập nhật `.gitea/workflows/ci.yml`
- Cho các job cần Go chạy bằng container image `git.thuanle.me/public/node-go`
- Loại bỏ `actions/setup-go@v5`
- Giữ nguyên các bước kiểm tra hiện có như `gofmt` và `go test ./...`
## Đề xuất triển khai
Ví dụ hướng cập nhật:
```yaml
jobs:
fmt:
runs-on: linux
container:
image: git.thuanle.me/public/node-go
steps:
- uses: actions/checkout@v4
- run: |
out=$(gofmt -l .)
if [ -n "$out" ]; then
echo "Files not formatted:"
echo "$out"
exit 1
fi
test:
runs-on: linux
container:
image: git.thuanle.me/public/node-go
steps:
- uses: actions/checkout@v4
- run: go test ./...
```
## Acceptance criteria
- `.gitea/workflows/ci.yml` không còn dùng `actions/setup-go@v5`
- Các job CI cần Go chạy bằng image `git.thuanle.me/public/node-go`
- `gofmt` và `go test ./...` vẫn chạy bình thường
- Log pipeline không còn bước cài đặt Go động
- Thời gian chạy CI giảm so với workflow hiện tại
## Lưu ý
- Image `git.thuanle.me/public/node-go` cần có sẵn `node`, `go`, `gofmt`
- Nếu có tag ổn định, nên pin tag cụ thể thay vì dùng floating tag
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Vấn đề
Workflow CI hiện tại trong
.gitea/workflows/ci.ymlđang dùngactions/setup-go@v5ở nhiều job. Việc setup Go trong lúc chạy pipeline làm CI chậm hơn cần thiết.Pipeline này cũng cần Node, nên image Go thuần không phù hợp.
Mục tiêu
Viết lại CI để dùng image có sẵn môi trường Node + Go:
git.thuanle.me/public/node-goMục đích:
Phạm vi
.gitea/workflows/ci.ymlgit.thuanle.me/public/node-goactions/setup-go@v5gofmtvàgo test ./...Đề xuất triển khai
Ví dụ hướng cập nhật:
Acceptance criteria
.gitea/workflows/ci.ymlkhông còn dùngactions/setup-go@v5git.thuanle.me/public/node-gogofmtvàgo test ./...vẫn chạy bình thườngLưu ý
git.thuanle.me/public/node-gocần có sẵnnode,go,gofmtImplementation Plan
Changes
Update
.gitea/workflows/ci.yml:fmtjob — addcontainer: image: git.thuanle.me/public/node-go, removeactions/setup-go@v5steptestjob — addcontainer: image: git.thuanle.me/public/node-go, removeactions/setup-go@v5stepAcceptance Checks
actions/setup-go@v5in CI filecontainer: image: git.thuanle.me/public/node-gogofmtandgo test ./...steps preservedBranch:
feat/issue-11-ci-node-go-image