2024-03-04 16:20:18 +03:00
name : Build Private Images GHCR
on :
push :
branches : [ master, stable]
tags : [ 'r*' ]
pull_request :
types : [ synchronize, labeled]
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress : true
jobs :
build :
2024-06-26 17:52:37 +03:00
if : ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'preview') }}
2024-08-27 12:06:12 +03:00
runs-on : ubuntu-latest
2024-03-04 16:20:18 +03:00
permissions :
contents : read
packages : write
steps :
- name : Docker meta
id : meta
uses : docker/metadata-action@v5.0.0
2024-06-06 17:49:08 +03:00
env :
DOCKER_METADATA_PR_HEAD_SHA : true
2024-03-04 16:20:18 +03:00
with :
images : ghcr.io/plausible/analytics/ee
tags : |
type=ref,event=pr
type=ref,event=branch
type=ref,event=tag
2024-06-06 17:49:08 +03:00
type=sha
2024-03-04 16:20:18 +03:00
- name : Set up Docker Buildx
uses : docker/setup-buildx-action@v3
- name : Login to GitHub Container Registry
uses : docker/login-action@v3
with :
registry : ghcr.io
username : ${{ github.actor }}
password : ${{ secrets.GITHUB_TOKEN }}
- name : Build and push
id : docker_build
2024-06-24 11:41:56 +03:00
uses : docker/build-push-action@v6
2024-03-04 16:20:18 +03:00
with :
push : true
tags : ${{ steps.meta.outputs.tags }}
labels : ${{ steps.meta.outputs.labels }}
cache-from : type=gha
cache-to : type=gha,mode=max
build-args : |
MIX_ENV=prod
BUILD_METADATA=${{ steps.meta.outputs.json }}
- name : Image digest
run : echo ${{ steps.docker_build.outputs.digest }}
- name : Notify team on failure
if : ${{ failure() }}
uses : fjogeleit/http-request-action@v1
with :
url : ${{ secrets.BUILD_NOTIFICATION_URL }}
method : 'POST'
customHeaders : '{"Content-Type": "application/json"}'
data : '{"content": "<a href=\"https://github.com/plausible/analytics/actions/workflows/build-private-images.yml\">Build failed</a>"}'
2024-08-17 01:46:30 +03:00
- name : Notify team on success
if : ${{ success() && github.ref == 'refs/heads/master' }}
uses : fjogeleit/http-request-action@v1
with :
url : ${{ secrets.BUILD_NOTIFICATION_URL }}
method : 'POST'
customHeaders : '{"Content-Type": "application/json"}'
2024-08-17 02:15:06 +03:00
escapeData : 'true'
2024-09-17 18:42:04 +03:00
data : '{"content": "<h1>🚀 New changes are about to be deployed to production!</h1><br/><h3>👷 Author: ${{ github.actor }}</h3><br/><p>📝 Commit message: ${{ github.event.head_commit.message }}</p><br/>"}'
- name : Set Honeycomb marker on success
if : ${{ success() && github.ref == 'refs/heads/master' }}
uses : cnkk/honeymarker-action@1bd92aec746e38efe43a0faee94ced1ebb930712
with :
apikey : ${{ secrets.HONEYCOMB_MARKER_APIKEY }}
dataset : 'plausible-prod'
message : "${{ github.sha }}"