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@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0 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@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0 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