name: Main on: push: branches: - main tags: - "v*" env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }}-publisher SUBSCRIBER_IMAGE_NAME: ${{ github.repository }}-subscriber jobs: test: name: Test runs-on: ubuntu-latest steps: - name: Setup go uses: actions/setup-go@v3 with: go-version: 1.17.x - name: Checkout code uses: actions/checkout@v3 - uses: actions/cache@v4 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Test run: go test -race -covermode=atomic -coverprofile=coverage.out ./... - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: files: ./coverage.out fail_ci_if_error: false name: codecov-watchops verbose: true build: needs: [test] name: Build Service runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} flavor: | latest=auto tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha,event=branch - name: Docker subscriber meta id: subscriber_meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.SUBSCRIBER_IMAGE_NAME }} flavor: | latest=auto tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha,event=branch - name: Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Cache Docker layers uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-single-buildx-watchops restore-keys: | ${{ runner.os }}-single-buildx - name: Build and push uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new env: VERSION: ${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} - name: Build and push uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile_subscriber push: true tags: ${{ steps.subscriber_meta.outputs.tags }} labels: ${{ steps.subscriber_meta.outputs.labels }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new # Temp fix # https://github.com/docker/build-push-action/issues/252 # https://github.com/moby/buildkit/issues/1896 ############# # Fix Cache # ############# - name: Move cache run: | rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache