Files
cicd_new_version/.gitlab-ci.yml
ByeonJungHun 8b6a8ba191 CI 수정
2024-07-25 14:53:45 +09:00

69 lines
1.8 KiB
YAML

stages:
- version_update
version_update:
image: harbor.exem-oss.org/test/test-runner:latest
stage: version_update
variables:
file1: "./old/old_version.json"
file2: "./new_version.json"
git_token: $TOKEN
git_user: $USER
git_url: $URL
before_script: |
git config --global user.email "sa_8001@ex-em.com"
git config --global user.name "변정훈"
git clone https://${git_user}:${git_token}@${git_url} ./old
script: |
jq_parse() {
jq -r '.[] | "\(.name):\(.version)"' "$1"
}
declare -A old_version
while IFS=: read -r name version; do
old_version["$name"]=$version
done < <(jq_parse "$file1")
declare -a different_names
declare -a different_versions
while IFS=: read -r name version; do
if [[ "${old_version["$name"]}" != "$version" ]]; then
different_names+=("$name")
different_versions+=("$version")
fi
done < <(jq_parse "$file2")
if [ ${#different_names[@]} -gt 0 ]; then
echo "아래 항목에 대해서 CI 작업을 시작합니다!"
for index in "${!different_names[@]}"; do
name="${different_names[$index]}"
version="${different_versions[$index]}"
echo "$name:$version"
curl --request POST \
--form "token=${git_token}" \
--form "ref=main" \
--form "variables[TRIGGERED_BY]=sa_8001" \
--form "variables[TRIGGER_NAME]=$name" \
--form "variables[VER]=$version" \
"https://gitlab.com/api/v4/projects/$name/trigger/pipeline"
done
cp $file2 $file1
cd ./old
ls -l
git add ./
git commit -m "버전 관리"
git push origin main
else
echo "버전이 변한 애플리케이션이 없습니다."
fi
except:
variables:
- $CI_COMMIT_MESSAGE =~ /CI 수정/