Skip to content

Commit 6752afd

Browse files
committed
ci: GHCR commit-SHA tag, OCI labels, and build provenance
1 parent 31999af commit 6752afd

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

.github/workflows/publish-webapp.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ permissions:
44
contents: read
55
packages: write
66
id-token: write
7+
attestations: write
78

89
on:
910
workflow_call:
@@ -58,6 +59,12 @@ jobs:
5859
image_tags=$image_tags,$ref_without_tag:v4-beta
5960
fi
6061
62+
# when pushing the mutable main tag, also push an immutable-by-convention
63+
# full-commit-sha tag so a commit can be resolved to a specific digest
64+
if [[ "${STEPS_GET_TAG_OUTPUTS_TAG}" == "main" ]]; then
65+
image_tags=$image_tags,$ref_without_tag:${GITHUB_SHA}
66+
fi
67+
6168
echo "image_tags=${image_tags}" >> "$GITHUB_OUTPUT"
6269
env:
6370
STEPS_GET_TAG_OUTPUTS_TAG: ${{ steps.get_tag.outputs.tag }}
@@ -74,6 +81,7 @@ jobs:
7481
echo "BUILD_GIT_SHA=${GITHUB_SHA}"
7582
echo "BUILD_GIT_REF_NAME=${GITHUB_REF_NAME}"
7683
echo "BUILD_TIMESTAMP_SECONDS=$(date +%s)"
84+
echo "BUILD_TIMESTAMP_RFC3339=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
7785
} >> "$GITHUB_OUTPUT"
7886
env:
7987
STEPS_GET_TAG_OUTPUTS_TAG: ${{ steps.get_tag.outputs.tag }}
@@ -87,6 +95,7 @@ jobs:
8795
password: ${{ secrets.GITHUB_TOKEN }}
8896

8997
- name: 🐳 Build image and push to GitHub Container Registry
98+
id: build_push
9099
uses: depot/build-push-action@5f3b3c2e5a00f0093de47f657aeaefcedff27d18 # v1.17.0
91100
with:
92101
file: ./docker/Dockerfile
@@ -98,8 +107,16 @@ jobs:
98107
BUILD_GIT_SHA=${{ steps.set_build_info.outputs.BUILD_GIT_SHA }}
99108
BUILD_GIT_REF_NAME=${{ steps.set_build_info.outputs.BUILD_GIT_REF_NAME }}
100109
BUILD_TIMESTAMP_SECONDS=${{ steps.set_build_info.outputs.BUILD_TIMESTAMP_SECONDS }}
110+
BUILD_TIMESTAMP_RFC3339=${{ steps.set_build_info.outputs.BUILD_TIMESTAMP_RFC3339 }}
101111
SENTRY_RELEASE=${{ steps.set_build_info.outputs.BUILD_GIT_SHA }}
102112
SENTRY_ORG=triggerdev
103113
SENTRY_PROJECT=trigger-cloud
104114
secrets: |
105115
sentry_auth_token=${{ secrets.SENTRY_AUTH_TOKEN }}
116+
117+
- name: 🪪 Attest build provenance
118+
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
119+
with:
120+
subject-name: ghcr.io/triggerdotdev/trigger.dev
121+
subject-digest: ${{ steps.build_push.outputs.digest }}
122+
push-to-registry: true

docker/Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,17 @@ ARG BUILD_APP_VERSION
9898
ARG BUILD_GIT_SHA
9999
ARG BUILD_GIT_REF_NAME
100100
ARG BUILD_TIMESTAMP_SECONDS
101+
ARG BUILD_TIMESTAMP_RFC3339
101102
ENV BUILD_APP_VERSION=${BUILD_APP_VERSION} \
102103
BUILD_GIT_SHA=${BUILD_GIT_SHA} \
103104
BUILD_GIT_REF_NAME=${BUILD_GIT_REF_NAME} \
104105
BUILD_TIMESTAMP_SECONDS=${BUILD_TIMESTAMP_SECONDS}
105106

107+
LABEL org.opencontainers.image.source="https://github.com/triggerdotdev/trigger.dev" \
108+
org.opencontainers.image.revision="${BUILD_GIT_SHA}" \
109+
org.opencontainers.image.version="${BUILD_APP_VERSION}" \
110+
org.opencontainers.image.created="${BUILD_TIMESTAMP_RFC3339}"
111+
106112
EXPOSE 3000
107113

108114
# Add global pnpm shims and install pnpm during build (root user)

0 commit comments

Comments
 (0)