From 904c0c35cee97f43f404ad1fe58790660c331f8d Mon Sep 17 00:00:00 2001 From: Vladimir Zagainov Date: Thu, 20 Aug 2026 17:36:20 +0300 Subject: [PATCH] =?UTF-8?q?fix(ci):=20replace=20single-job=20workflow=20wi?= =?UTF-8?q?th=20proper=204-job=20Gitea=20Actions=20pipeline=20(lint=20?= =?UTF-8?q?=E2=86=92=20test=20=E2=86=92=20build=20=E2=86=92=20build=20?= =?UTF-8?q?=E2=86=92=20docker)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 132 +++++++++++++++++++++++++++++------- 1 file changed, 108 insertions(+), 24 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index b7d3c6e..18a31ef 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,51 +1,135 @@ +name: CI + +# Required repo secret: PACKAGES_TOKEN +# Generate at: Gitea → User Settings → Applications → Generate New Token +# Scopes: read:package, write:package +# Save as: Repository → Settings → Actions → Secrets → PACKAGES_TOKEN +# Note: GITHUB_TOKEN is read-only for packages in Gitea (issue #23642). + on: push: - branches: - - master + branches: ["**"] + pull_request: + branches: ["master"] + +env: + GO_VERSION: "1.26.4" jobs: - build-and-deploy: + lint: runs-on: ubuntu-latest steps: - - name: Checkout Code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v5 + - uses: actions/setup-go@v5 with: - go-version: '1.26.4' + go-version: ${{ env.GO_VERSION }} - - name: Go Modules Cache - uses: actions/cache@v3 + - name: Cache Go modules + uses: actions/cache@v4 with: path: | - ~/.cache/go-build ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + ~/.cache/go-build + key: go-lint-${{ runner.os }}-${{ hashFiles('go.sum') }} restore-keys: | - ${{ runner.os }}-go- + go-lint-${{ runner.os }}- - - name: Lint & Test + - name: Download Go modules + run: go mod download + + - name: go vet + run: go vet ./... + + - name: gofmt check run: | - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.54.2 - export PATH=$(go env GOPATH)/bin:$PATH - golangci-lint run ./... - go test -v -race ./... + fmt=$(gofmt -l .) + if [ -n "$fmt" ]; then + echo "Files needing formatting:" + echo "$fmt" + exit 1 + fi + + test: + runs-on: ubuntu-latest + needs: lint + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Cache Go modules and build cache + uses: actions/cache@v4 + with: + path: | + ~/go/pkg/mod + ~/.cache/go-build + key: go-test-${{ runner.os }}-${{ hashFiles('go.sum') }} + restore-keys: | + go-test-${{ runner.os }}- + + - name: Download Go modules + run: go mod download + + - name: Run tests + run: go test ./... -v -race -cover + + build: + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Cache Go modules and build cache + uses: actions/cache@v4 + with: + path: | + ~/go/pkg/mod + ~/.cache/go-build + key: go-build-${{ runner.os }}-${{ hashFiles('go.sum') }} + restore-keys: | + go-build-${{ runner.os }}- + + - name: Download Go modules + run: go mod download + + - name: Build binary + run: go build -o api ./cmd/api + + docker: + runs-on: ubuntu-latest + needs: build + if: github.ref_name == 'master' + permissions: + packages: write + contents: read + steps: + - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Login to Docker Registry + - name: Login to Gitea Registry uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} + registry: gitea.mrixs.me + username: ${{ gitea.repository_owner }} + password: ${{ secrets.PACKAGES_TOKEN }} - - name: Build and Push Docker Image + - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: | - ${{ secrets.DOCKER_USERNAME }}/trip-planner:latest - ${{ secrets.DOCKER_USERNAME }}/trip-planner:${{ github.sha }} + gitea.mrixs.me/mrixs/trip-planner:latest + gitea.mrixs.me/mrixs/trip-planner:${{ github.sha }} + cache-from: type=registry,ref=gitea.mrixs.me/mrixs/trip-planner:buildcache + cache-to: type=registry,ref=gitea.mrixs.me/mrixs/trip-planner:buildcache,mode=max +