on: push: branches: - main pull_request: branches: - main release: types: - published name: build-test jobs: build-test: name: Build and test ZOT runs-on: ubuntu-latest services: s3mock: image: ghcr.io/project-zot/localstack/localstack:0.13.2 env: SERVICES: s3 ports: - 4563-4599:4563-4599 - 9090:8080 steps: - name: Install go uses: actions/setup-go@v2 with: go-version: 1.17.x - name: Check out source code uses: actions/checkout@v1 - name: Install dependencies run: | cd $GITHUB_WORKSPACE go get -u github.com/swaggo/swag/cmd/swag go mod download sudo apt-get update sudo apt-get install rpm sudo apt install snapd sudo snap install skopeo --edge --devmode curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v0.7.1-alpha.1/notation_0.7.1-alpha.1_linux_amd64.tar.gz sudo tar xvzf notation.tar.gz -C /usr/bin notation go get github.com/wadey/gocovmerge - name: Run build and test timeout-minutes: 60 run: | cd $GITHUB_WORKSPACE && make && make ARCH=arm64 binary-arch-minimal && make ARCH=arm64 binary-arch env: S3MOCK_ENDPOINT: localhost:4566 AWS_ACCESS_KEY_ID: fake AWS_SECRET_ACCESS_KEY: fake - name: Upload code coverage uses: codecov/codecov-action@v1 - if: github.event_name == 'release' && github.event.action == 'published' name: Publish artifacts on releases uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: bin/z* tag: ${{ github.ref }} overwrite: true file_glob: true push-image: if: github.event_name == 'release' && github.event.action== 'published' name: Push Docker image to GitHub Packages runs-on: ubuntu-latest steps: - name: Check out the repo uses: actions/checkout@v2 - name: Log in to GitHub Docker Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build container image uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} push: true tags: | ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}:latest - name: Build minimal container image uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} push: true file: Dockerfile-minimal tags: | ghcr.io/${{ github.repository }}-minimal:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}-minimal:latest - name: Build zot-exporter container image uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} push: true file: Dockerfile-zxp tags: | ghcr.io/${{ github.repository }}-zxp:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}-zxp:latest - name: Build zot-exporter container image (arm64) uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} ARCH=arm64 push: true file: Dockerfile-arch-zxp tags: | ghcr.io/${{ github.repository }}-arm64-zxp:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}-arm64-zxp:latest - name: Build container image (arm64) uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} ARCH=arm64 push: true file: Dockerfile-arch tags: | ghcr.io/${{ github.repository }}-arm64:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}-arm64:latest - name: Build minimal container image (arm64) uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} ARCH=arm64 push: true file: Dockerfile-arch-minimal tags: | ghcr.io/${{ github.repository }}-arm64-minimal:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}-arm64-minimal:latest - name: Build container image uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} push: true file: Dockerfile-zb tags: | ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}:latest - name: Build container image (arm64) uses: docker/build-push-action@v2 with: build-args: | COMMIT=${{ github.event.release.tag_name }}-${{ github.sha }} ARCH=arm64 push: true file: Dockerfile-arch-zb tags: | ghcr.io/${{ github.repository }}-arm64:${{ github.event.release.tag_name }} ghcr.io/${{ github.repository }}-arm64:latest