name: Build on: push: branches: [ master ] tags: [ 'v*' ] pull_request: branches: [ master ] jobs: # Build and test project build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: actions/setup-go@v4 with: go-version: stable - run: make build test # Create project release if tagged release: runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') needs: build steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: actions/setup-go@v4 with: go-version: stable - uses: actions/setup-node@v3 with: node-version: current - run: npm install -g standard-changelog - run: make distribution - name: get CHANGELOG id: changelog uses: requarks/changelog-action@v1 with: token: ${{ github.token }} tag: ${{ github.ref_name }} - uses: softprops/action-gh-release@v1 with: body: ${{ steps.changelog.outputs.changes }} files: | release/webhookd-linux-amd64.tgz release/webhookd-linux-arm64.tgz release/webhookd-linux-arm.tgz release/webhookd-darwin-amd64.tgz env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Publish Docker image publish: runs-on: ubuntu-latest needs: build strategy: fail-fast: false matrix: include: - target: slim suffix: '' - target: distrib suffix: -distrib steps: - uses: actions/checkout@v4 with: submodules: recursive - name: extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v3 with: images: ncarlier/webhookd flavor: suffix=${{ matrix.suffix }} tags: | type=edge type=semver,pattern={{major}} type=semver,pattern={{version}} - uses: docker/setup-qemu-action@v1 with: image: tonistiigi/binfmt:latest platforms: arm64,arm - uses: docker/setup-buildx-action@v1 - uses: docker/login-action@v1 if: github.event_name != 'pull_request' with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build and push Docker image (${{ matrix.target }}) uses: docker/build-push-action@v2 with: context: . target: ${{ matrix.target }} platforms: linux/amd64,linux/arm64,linux/arm/v7 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}