name: Go on: push: branches: - master - release-* workflow_dispatch: {} pull_request: branches: - master - release-* permissions: # added using https://github.com/step-security/secure-workflows contents: read env: # Common versions GO_VERSION: "1.23.8" GOLANGCI_VERSION: "v1.60.1" jobs: detect-noop: runs-on: ubuntu-22.04 outputs: noop: ${{ steps.noop.outputs.should_skip }} permissions: actions: write steps: - name: Detect No-op Changes id: noop uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf with: github_token: ${{ secrets.GITHUB_TOKEN }} paths_ignore: '["**.md", "**.mdx", "**.png", "**.jpg"]' do_not_skip: '["workflow_dispatch", "schedule", "push"]' continue-on-error: true staticcheck: runs-on: ubuntu-22.04 needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' steps: - name: Setup Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 with: go-version: ${{ env.GO_VERSION }} - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 with: submodules: true - name: Static Check run: make staticcheck - name: License Header Check run: make check-license-header lint: runs-on: ubuntu-22.04 needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' permissions: contents: read # for actions/checkout to fetch code pull-requests: read # for golangci/golangci-lint-action to fetch pull requests steps: - name: Setup Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 with: go-version: ${{ env.GO_VERSION }} - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 with: submodules: true # This action uses its own setup-go, which always seems to use the latest # stable version of Go. We could run 'make lint' to ensure our desired Go # version, but we prefer this action because it leaves 'annotations' (i.e. # it comments on PRs to point out linter violations). - name: Lint uses: golangci/golangci-lint-action@v6 with: version: ${{ env.GOLANGCI_VERSION }} check-diff: runs-on: ubuntu-22.04 needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' steps: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 with: submodules: true - name: Free Disk Space run: | echo "Disk space before cleanup:" df -h # Remove unnecessary software to free up disk space sudo rm -rf /usr/share/dotnet sudo rm -rf /usr/local/lib/android sudo rm -rf /opt/ghc sudo rm -rf /opt/hostedtoolcache/CodeQL sudo docker image prune --all --force echo "Disk space after cleanup:" df -h - name: Setup Env uses: ./.github/actions/env-setup - name: Setup node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 with: node-version: "14" - name: Setup kinD uses: ./.github/actions/setup-kind-cluster - name: Run cross-build run: make cross-build - name: Free Disk Space After Cross-Build run: | echo "Disk space before cleanup:" df -h # Remove cross-build artifacts to free up space # (make build will rebuild binaries for current platform) rm -rf _bin # Clean Go build cache and test cache go clean -cache -testcache # Remove Docker build cache sudo docker builder prune --all --force || true echo "Disk space after cleanup:" df -h - name: Check Diff run: | export PATH=$(pwd)/bin/:$PATH make check-diff - name: Cleanup binary run: make build-cleanup check-windows: runs-on: windows-latest needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' steps: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 with: submodules: true - name: Setup Go uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 with: go-version: ${{ env.GO_VERSION }} - name: Cache Go Dependencies uses: actions/cache@v4 with: path: .work/pkg key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} restore-keys: ${{ runner.os }}-pkg- - name: Run Build CLI run: make vela-cli - name: Run CLI for version shell: cmd run: | move .\bin\vela .\bin\vela.exe .\bin\vela.exe version check-core-image-build: runs-on: ubuntu-22.04 needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' steps: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 with: submodules: true - name: Set up QEMU uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 - name: Set up Docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 - name: Build Test for vela core uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 with: context: . file: Dockerfile platforms: linux/amd64,linux/arm64 check-cli-image-build: runs-on: ubuntu-22.04 needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' steps: - name: Checkout uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 with: submodules: true - name: Set up QEMU uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 - name: Set up Docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 - name: Build Test for CLI uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 with: context: . file: Dockerfile.cli