name: Main CI on: push: branches: - 'main' - 'release-**' tags: - '*' jobs: get-go-version: uses: ./.github/workflows/get-go-version.yaml with: ref: ${{ github.ref_name }} build: name: Build runs-on: ubuntu-latest needs: get-go-version steps: - name: Check out the code uses: actions/checkout@v6 - name: Set up Go version uses: actions/setup-go@v6 with: go-version: ${{ needs.get-go-version.outputs.version }} - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v3 with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 with: version: latest - name: Build run: | make local # Clean go cache to ease the build environment storage pressure. go clean -modcache -cache - name: Test run: make test - name: Upload test coverage uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} files: coverage.out verbose: true # Only try to publish the container image from the root repo; forks don't have permission to do so and will always get failures. - name: Publish container image if: github.repository == 'vmware-tanzu/velero' run: | sudo swapoff -a sudo rm -f /mnt/swapfile docker system prune -a --force # Build and push Velero image to docker registry docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} ./hack/docker-push.sh