name: Release on: push: branches: - master jobs: test: name: Lint and test runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Go uses: actions/setup-go@v2 with: go-version: 1.16.x - name: Install dependencies run: | sudo apt update -qq sudo apt install -y -qq build-essential git sqlite libtag1-dev ffmpeg libasound-dev zlib1g-dev - name: Lint uses: golangci/golangci-lint-action@v2 with: version: v1.42.1 skip-go-installation: true args: --timeout=5m - name: Test run: go test ./... release-please: name: Run Release Please runs-on: ubuntu-latest needs: [test] outputs: release_created: ${{ steps.release.outputs.release_created }} tag_name: ${{ steps.release.outputs.tag_name }} steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup Release Please uses: google-github-actions/release-please-action@v2 id: release with: token: ${{ secrets.GITHUB_TOKEN }} release-type: simple changelog-path: CHANGELOG.md package-name: gonic build-release: name: Build, tag, and publish Docker image runs-on: ubuntu-latest needs: [release-please] if: ${{ needs.release-please.outputs.release_created }} steps: - name: Checkout repository uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 with: image: tonistiigi/binfmt:latest platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 with: install: true version: latest driver-opts: image=moby/buildkit:master - name: Login into DockerHub run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin - name: Login into GitHub Container Registry run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build and Push uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7 push: true tags: | ghcr.io/${{ github.repository }}:${{ needs.release-please.outputs.tag_name }} ghcr.io/${{ github.repository }}:latest ${{ github.repository }}:${{ needs.release-please.outputs.tag_name }} ${{ github.repository }}:latest