Skip to content

Commit b478009

Browse files
committed
CI: Sanitize Docker tag names.
1 parent eaa5b0b commit b478009

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

.github/workflows/build-brev-tutorial-docker-images.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ jobs:
4949
- name: Set Git branch variables
5050
run: |
5151
GIT_BRANCH_NAME=${GITHUB_REF#refs/heads/}
52+
# Sanitize branch name for Docker tags (replace invalid characters with hyphens and convert to lowercase)
53+
DOCKER_TAG_BRANCH=$(echo "${GIT_BRANCH_NAME}" | sed 's/[^a-zA-Z0-9._-]/-/g' | tr '[:upper:]' '[:lower:]')
5254
GIT_SHA=${{ github.sha }}
5355
GIT_SHORT_SHA=${GIT_SHA::7}
5456
echo "GIT_BRANCH_NAME=${GIT_BRANCH_NAME}" >> $GITHUB_ENV
57+
echo "DOCKER_TAG_BRANCH=${DOCKER_TAG_BRANCH}" >> $GITHUB_ENV
5558
echo "GIT_SHA=${GIT_SHA}" >> $GITHUB_ENV
5659
echo "GIT_SHORT_SHA=${GIT_SHORT_SHA}" >> $GITHUB_ENV
5760
@@ -113,8 +116,8 @@ jobs:
113116
--allow=fs.read=/home/runner \
114117
--set "base.args.GIT_BRANCH_NAME=${GIT_BRANCH_NAME}" \
115118
--set "base.output=type=registry" \
116-
--set "base.tags=${IMAGE_NAME}:${GIT_BRANCH_NAME}-latest" \
117-
--set "base.tags=${IMAGE_NAME}:${GIT_BRANCH_NAME}-git-${GIT_SHORT_SHA}" \
119+
--set "base.tags=${IMAGE_NAME}:${DOCKER_TAG_BRANCH}-latest" \
120+
--set "base.tags=${IMAGE_NAME}:${DOCKER_TAG_BRANCH}-git-${GIT_SHORT_SHA}" \
118121
$([ "${GIT_BRANCH_NAME}" = "main" ] && echo "--set base.tags=${IMAGE_NAME}:latest") \
119122
--set "base.cache-from=type=registry,ref=${IMAGE_NAME}:buildcache" \
120123
--set "base.cache-to=type=registry,ref=${IMAGE_NAME}:buildcache,mode=max" \
@@ -125,21 +128,21 @@ jobs:
125128
- name: Generate Docker Compose files
126129
run: |
127130
python3 brev/generate-tagged-docker-composes.py \
128-
--image-tag "${GIT_BRANCH_NAME}-git-${GIT_SHORT_SHA}" \
131+
--image-tag "${DOCKER_TAG_BRANCH}-git-${GIT_SHORT_SHA}" \
129132
--output-dir "artifacts/commit-specific" \
130133
--tutorial "${TUTORIAL_NAME}" \
131134
--type all
132135
133136
python3 brev/generate-tagged-docker-composes.py \
134-
--image-tag "${GIT_BRANCH_NAME}-latest" \
137+
--image-tag "${DOCKER_TAG_BRANCH}-latest" \
135138
--output-dir "artifacts/branch-latest" \
136139
--tutorial "${TUTORIAL_NAME}" \
137140
--type all
138141
139142
- name: Upload commit-specific Docker Compose artifacts
140143
uses: actions/upload-artifact@v4
141144
with:
142-
name: docker-compose-${{ env.TUTORIAL_NAME }}-${{ env.GIT_BRANCH_NAME }}-git-${{ env.GIT_SHORT_SHA }}
145+
name: docker-compose-${{ env.TUTORIAL_NAME }}-${{ env.DOCKER_TAG_BRANCH }}-git-${{ env.GIT_SHORT_SHA }}
143146
path: artifacts/commit-specific/${{ env.TUTORIAL_NAME }}/
144147
retention-days: 30
145148

.github/workflows/test-brev-tutorial-docker-images.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,12 @@ jobs:
3939
- name: Set Git branch variables
4040
run: |
4141
GIT_BRANCH_NAME=${GITHUB_REF#refs/heads/}
42+
# Sanitize branch name for Docker tags (replace invalid characters with hyphens and convert to lowercase)
43+
DOCKER_TAG_BRANCH=$(echo "${GIT_BRANCH_NAME}" | sed 's/[^a-zA-Z0-9._-]/-/g' | tr '[:upper:]' '[:lower:]')
4244
GIT_SHA=${{ inputs.git_sha }}
4345
GIT_SHORT_SHA=${GIT_SHA:0:7}
4446
echo "GIT_BRANCH_NAME=${GIT_BRANCH_NAME}" >> $GITHUB_ENV
47+
echo "DOCKER_TAG_BRANCH=${DOCKER_TAG_BRANCH}" >> $GITHUB_ENV
4548
echo "GIT_SHA=${GIT_SHA}" >> $GITHUB_ENV
4649
echo "GIT_SHORT_SHA=${GIT_SHORT_SHA}" >> $GITHUB_ENV
4750
@@ -50,7 +53,7 @@ jobs:
5053
with:
5154
workflow: build-brev-tutorial-docker-images.yml
5255
run_id: ${{ inputs.workflow_run_id }}
53-
name: docker-compose-${{ inputs.tutorial }}-${{ env.GIT_BRANCH_NAME }}-git-${{ env.GIT_SHORT_SHA }}
56+
name: docker-compose-${{ inputs.tutorial }}-${{ env.DOCKER_TAG_BRANCH }}-git-${{ env.GIT_SHORT_SHA }}
5457
path: artifacts/commit-specific/${{ inputs.tutorial }}/
5558

5659
- name: Log in to GitHub Container Registry

0 commit comments

Comments
 (0)