name: CI/CD # 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"] tags: ["v*"] pull_request: branches: ["master"] env: GO_VERSION: "1.27.2" REGISTRY: "gitea.mrixs.me" IMAGE_NAME: "ym-dl" # Using a fixed username since GITEA_REPOSITORY_OWNER may not be available # Replace with your actual Gitea username (must be lowercase for Docker) USERNAME: "mrixs" jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} - name: Cache Go modules 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 ym-dl ./cmd/ym-dl docker: runs-on: ubuntu-latest needs: build if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') permissions: packages: write contents: read steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Gitea Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ env.USERNAME }} password: ${{ secrets.PACKAGES_TOKEN }} - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: | ${{ env.REGISTRY }}/${{ env.USERNAME }}/${{ env.IMAGE_NAME }}:latest ${{ env.REGISTRY }}/${{ env.USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.sha }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.USERNAME }}/${{ env.IMAGE_NAME }}:buildcache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.USERNAME }}/${{ env.IMAGE_NAME }}:buildcache,mode=max