Yuki Takei 3 лет назад
Родитель
Сommit
ab523028b7

+ 3 - 2
packages/app/docker/codebuild/buildspec-manifest.yml

@@ -4,7 +4,7 @@ env:
     IMAGE_HOST: ''
     IMAGE_NAME: weseek/growi
     TAG_TMP: codebuildtmp
-    TAGS: latest
+    TAGS: codebuildtest
     SECRETS_JSON_KEY: DOCKER_REGISTRY_PASSWORD # DOCKER_REGISTRY_PASSWORD or DOCKER_REGISTRY_ON_GITHUB_PASSWORD
   secrets-manager:
     DOCKER_REGISTRY_PASSWORD: growi/official-image-builder:$SECRETS_JSON_KEY
@@ -17,7 +17,8 @@ phases:
       - export TMP_TAG="${IMAGE_HOST}${IMAGE_HOST:+/}${IMAGE_NAME}:${TAG_TMP}"
       - export TMP_TAG_AMD64="${IMAGE_HOST}${IMAGE_HOST:+/}${IMAGE_NAME}:${TAG_TMP}-amd64"
       - export TMP_TAG_ARM64="${IMAGE_HOST}${IMAGE_HOST:+/}${IMAGE_NAME}:${TAG_TMP}-arm64"
-      - docker manifest create $TMP_TAG $TMP_TAG_AMD64 $TMP_TAG_ARM64
+      - docker manifest create ${TMP_TAG} ${TMP_TAG_AMD64} ${TMP_TAG_ARM64}
+      - bash ./tagging.sh --source-image "${TAG_TMP}" --target-image "${IMAGE_HOST}${IMAGE_HOST:+/}${IMAGE_NAME}" --tags "${TAGS}"
 
   post_build:
     commands:

+ 48 - 0
packages/app/docker/codebuild/tagging.sh

@@ -0,0 +1,48 @@
+#!/bin/bash
+
+ARGUMENT_LIST=(
+  "source-image"
+  "target-image"
+  "tags"
+)
+
+
+# read arguments
+opts=$(getopt \
+  --longoptions "$(printf "%s:," "${ARGUMENT_LIST[@]}")" \
+  --name "$(basename "$0")" \
+  --options "" \
+  -- "$@"
+)
+
+eval set --$opts
+
+while [[ $# -gt 0 ]]; do
+  case "$1" in
+    --source-image)
+      sourceImage=$2
+      shift 2
+      ;;
+
+    --target-image)
+      targetImage=$2
+      shift 2
+      ;;
+
+    --tags)
+      tags=$2
+      shift 2
+      ;;
+
+    *)
+      break
+      ;;
+  esac
+done
+
+for tag in $(echo $tags | tr "," "\n")
+do
+    tag=`echo $tag | awk '{gsub(/ /,""); print}'`
+    echo "docker tag $sourceImage $targetImage:$tag"
+    eval "docker tag $sourceImage $targetImage:$tag"
+done