@@ -36,25 +36,37 @@ jobs:
3636
3737 - name : Derive tags (Docker Hub + GHCR)
3838 id : meta
39+ shell : bash
3940 run : |
40- OWNER_LC="${GHCR_OWNER,,}"
41- echo "OWNER_LC=$OWNER_LC" >> $GITHUB_ENV
41+ set -euo pipefail
42+
43+ # Hạ lowercase owner (an toàn POSIX)
44+ OWNER_LC="$(printf '%s' "${GHCR_OWNER}" | tr '[:upper:]' '[:lower:]')"
45+ echo "OWNER_LC=${OWNER_LC}" >> "$GITHUB_ENV"
46+
4247 if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
4348 VERSION="${GITHUB_REF_NAME#v}"
44- echo "IMAGE_TAG=${VERSION}" >> $GITHUB_ENV
49+ echo "IMAGE_TAG=${VERSION}" >> " $GITHUB_ENV"
4550 HUB="${DOCKER_REPO}:${VERSION}"
4651 GHCR="ghcr.io/${OWNER_LC}/codecampus-frontend:${VERSION}"
4752 else
4853 SHA_TAG="${GITHUB_SHA::12}"
49- echo "IMAGE_TAG=${SHA_TAG}" >> $GITHUB_ENV
54+ echo "IMAGE_TAG=${SHA_TAG}" >> " $GITHUB_ENV"
5055 HUB="${DOCKER_REPO}:${SHA_TAG}"
5156 GHCR="ghcr.io/${OWNER_LC}/codecampus-frontend:${SHA_TAG}"
5257 if [ "${GITHUB_REF_NAME}" = "main" ]; then
5358 HUB="${HUB}"$'\n'"${DOCKER_REPO}:latest"
5459 GHCR="${GHCR}"$'\n'"ghcr.io/${OWNER_LC}/codecampus-frontend:latest"
5560 fi
5661 fi
57- echo "all_tags=${HUB}"$'\n'"${GHCR}" >> $GITHUB_OUTPUT
62+
63+ # Xuất output "tags" dạng đa dòng
64+ {
65+ echo "tags<<__TAGS__"
66+ printf '%s\n' "$HUB"
67+ printf '%s\n' "$GHCR"
68+ echo "__TAGS__"
69+ } >> "$GITHUB_OUTPUT"
5870
5971 - name : Login to Docker Hub
6072 uses : docker/login-action@v3
7688 file : ${{ env.DOCKERFILE_PATH }}
7789 platforms : ${{ env.PLATFORMS }}
7890 push : true
79- tags : ${{ steps.meta.outputs.all_tags }}
91+ tags : ${{ steps.meta.outputs.tags }}
8092 cache-from : type=gha
8193 cache-to : type=gha,mode=max
0 commit comments