registry: tweaks for image cleanup #2678
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci | |
| on: [push, pull_request] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| services: | |
| mongodb: | |
| image: mongo:5 | |
| ports: ['27017:27017'] | |
| redis: | |
| image: redis | |
| ports: ['6379:6379'] | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/cache@v2 | |
| with: | |
| path: | | |
| ~/go/pkg/mod | |
| ~/.cache/go-build | |
| key: ${{ runner.os }}-gorace-${{ hashFiles('**/go.sum') }}-${{ github.run_id }} | |
| restore-keys: | | |
| ${{ runner.os }}-gorace-${{ hashFiles('**/go.sum') }}- | |
| ${{ runner.os }}-gorace- | |
| # This magic line is to restore the timestamps (mtime) for each file based | |
| # on the its last commit. This allows Go test cache to reuse results for | |
| # tests that depend on fixture files. | |
| - run: git ls-tree -r -t --full-name --name-only HEAD | grep -v vendor | xargs -I{} -P4 sh -c 'touch -d $(git log --pretty=format:%cI -1 HEAD -- "{}") "{}"' | |
| - run: sudo apt-get update && sudo apt-get install -y xmlsec1 | |
| - run: go test -race ./... | |
| integration: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| k8s_version: | |
| - "1.30" | |
| - "1.31" | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: Running up Kubernetes (using Minikube) | |
| uses: medyagh/setup-minikube@master | |
| with: | |
| kubernetes-version: "v${{ matrix.k8s_version }}" | |
| - uses: azure/setup-helm@v1 | |
| with: | |
| version: v3.14.3 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: "1.22" | |
| - uses: actions/cache@v2 | |
| with: | |
| path: | | |
| ~/go/pkg/mod | |
| ~/.cache/go-build | |
| key: ${{ runner.os }}-goleak-${{ hashFiles('**/go.sum') }}-${{ github.run_id }} | |
| restore-keys: | | |
| ${{ runner.os }}-goleak-${{ hashFiles('**/go.sum') }}- | |
| ${{ runner.os }}-goleak- | |
| - name: Run integration tests | |
| env: | |
| GOPATH: /tmp/go | |
| CLUSTER_PROVIDER: minikube | |
| DEBUG: "true" | |
| TSURU_INTEGRATION_targetaddr: "http://127.0.0.1:8080" | |
| TSURU_INTEGRATION_adminuser: "admin@admin.com" | |
| TSURU_INTEGRATION_adminpassword: "123456" | |
| run: | | |
| ./scripts/localkube-integration.sh | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| - run: make yamllint | |
| - uses: golangci/golangci-lint-action@v6 | |
| with: | |
| version: v1.59.0 | |
| args: --timeout=10m | |
| env: | |
| GOROOT: '' | |
| govulncheck: | |
| runs-on: ubuntu-latest | |
| name: Run govulncheck | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - id: govulncheck | |
| uses: golang/govulncheck-action@v1 | |
| check-contributors: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - run: ./misc/check-contributors.sh | |
| check-handlers: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| - uses: actions/cache@v2 | |
| with: | |
| path: ~/go/pkg/mod | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - run: ./misc/check-handlers.sh | |
| check-events: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| - uses: actions/cache@v2 | |
| with: | |
| path: ~/go/pkg/mod | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - run: ./misc/check-events.sh | |
| check-api-doc: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| - uses: actions/cache@v2 | |
| with: | |
| path: ~/go/pkg/mod | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - run: make check-api-doc | |
| validate-api-spec: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| - run: make validate-api-spec | |
| verify-codegen: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.22' | |
| - uses: actions/checkout@v2 | |
| - uses: actions/cache@v2 | |
| with: | |
| path: ~/go/pkg/mod | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - run: go install golang.org/x/tools/cmd/goimports@latest | |
| - run: ./hack/verify-codegen.sh | |
| docker-image: | |
| needs: | |
| - test | |
| - lint | |
| - integration | |
| - check-contributors | |
| - check-handlers | |
| - check-events | |
| - check-api-doc | |
| - validate-api-spec | |
| - verify-codegen | |
| - govulncheck | |
| runs-on: ubuntu-latest | |
| if: github.event_name != 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Set up Docker Buildx | |
| id: buildx | |
| uses: docker/setup-buildx-action@v1 | |
| - uses: actions/cache@v2 | |
| with: | |
| path: /tmp/.buildx-cache | |
| key: ${{ runner.os }}-buildx-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-buildx- | |
| - uses: Surgo/docker-smart-tag-action@v1 | |
| id: smarttag | |
| with: | |
| docker_image: tsuru/api | |
| default_branch: main | |
| tag_with_sha: 'true' | |
| - name: Get version from tag | |
| id: gittag | |
| uses: jimschubert/query-tag-action@v1 | |
| with: | |
| commit-ish: HEAD | |
| - uses: docker/login-action@v1 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
| - uses: docker/build-push-action@v2 | |
| with: | |
| context: . | |
| build-args: | | |
| TSURU_BUILD_VERSION="${{steps.gittag.outputs.tag}}" | |
| push: true | |
| tags: ${{ steps.smarttag.outputs.tag }} | |
| cache-from: type=local,src=/tmp/.buildx-cache | |
| cache-to: type=local,dest=/tmp/.buildx-cache | |
| platforms: linux/amd64,linux/arm64 | |
| publish-release: | |
| needs: [docker-image] | |
| runs-on: ubuntu-latest | |
| if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - uses: actions/checkout@v2 | |
| with: | |
| fetch-depth: 0 | |
| - uses: goreleaser/goreleaser-action@v2 | |
| with: | |
| args: release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| publish-openapi-specs: | |
| if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) | |
| needs: [validate-api-spec] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/setup-node@v3 | |
| - name: Install SwaggerHub CLI | |
| run: |- | |
| npm install -g swaggerhub-cli@0.6.4 | |
| swaggerhub version | |
| - name: yq - portable yaml processor | |
| uses: mikefarah/yq@v4.30.6 | |
| - uses: actions/checkout@v3 | |
| - name: Update OpenAPI specs on SwaggerHub | |
| run: ./misc/swaggerhub-update-api-specs.sh | |
| env: | |
| SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} |