name: Main CI on: push: branches: - 'main' - 'release-**' tags: - '*' permissions: contents: read 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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Set up Go version uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6 with: go-version: ${{ needs.get-go-version.outputs.version }} - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4 with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # 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@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7 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 == 'velero-io/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