Skip to content

Commit 1d07a1d

Browse files
committed
ci(cd): sign images in deploy script
1 parent b08764f commit 1d07a1d

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

.github/workflows/cd.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,32 @@
1-
name: CD
1+
name: Continuous Deployment
22

33
permissions:
44
contents: read
5+
id-token: write
56

67
on:
78
push:
89
branches: ["main"]
10+
tags: ["v*"]
911
workflow_dispatch:
1012

1113
jobs:
1214
deploy-to-registry:
1315
runs-on: ubuntu-latest
1416
environment: production
1517
steps:
18+
- name: Checkout repository code
19+
uses: actions/checkout@v6
20+
21+
- name: Install Cosign
22+
uses: sigstore/cosign-installer@v4.1.2
23+
1624
- name: Login to container registry
17-
uses: docker/login-action@v3
25+
uses: docker/login-action@v4
1826
with:
1927
registry: ${{ vars.REGISTRY_HOSTNAME }}
2028
username: ${{ secrets.HARBOR_USERNAME }}
2129
password: ${{ secrets.HARBOR_PASSWORD }}
2230

23-
- name: Checkout repository code
24-
uses: actions/checkout@v4
25-
2631
- name: Run deploy script
2732
run: ./deploy.sh

deploy.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
#!/bin/bash
22

3-
NAMESPACE='liveseries'
3+
REGISTRY_HOSTNAME="${REGISTRY_HOSTNAME:-registry.guzek.uk}"
4+
PROJECT_NAME='liveseries'
45

56
for dockerfile in ./Dockerfile.*; do
67
repository=${dockerfile#./Dockerfile.}
7-
tag="registry.guzek.uk/$NAMESPACE/$repository:latest"
8-
# DOCKER_TOKEN=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$NAMESPACE/$repository:pull" | jq -r '.token')
9-
# REMOTE_MANIFEST=$(curl -sH "Authorization: Bearer $DOCKER_TOKEN" "https://registry.hub.docker.com/v2/$NAMESPACE/$repository/manifests/latest" | jq -r .layers[0].digest)
10-
# LOCAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$tag" | cut -d '@' -f 2)
8+
tag="$REGISTRY_HOSTNAME/$PROJECT_NAME/$repository:latest"
119

1210
echo "Building $repository..."
1311
build_output=$(docker build -t "$tag" -f "$dockerfile" . 2>&1)
@@ -19,6 +17,8 @@ for dockerfile in ./Dockerfile.*; do
1917
if [[ "$cached_steps" -lt "$total_steps" || $1 = "--force" ]]; then
2018
echo "Pushing image..."
2119
docker push "$tag"
20+
digest=$(docker image inspect "$tag" --format '{{index .RepoDigests 0}}' | grep "^$REGISTRY_HOSTNAME/")
21+
cosign sign --yes "$digest"
2222
else
2323
echo "Skipping push."
2424
fi

0 commit comments

Comments
 (0)