如何使用gitlab-ci.yml更新gitlab中JSON文件的内容?



我正在为特定版本的浏览器构建docker图像&把它推到AWS ecr上。在运行docker push命令后,我想在gitlab中更新JSON文件中的status = deployed。在push命令之后,更改状态的命令被gitlab跳过。该命令在我的本地机器上运行,但在gitlab

中被跳过。下面是gitlab-ci中的脚本。yml文件

publish-firefox:
image: 
name: amazon/aws-cli:2.2.38
entrypoint: [""]
services:
- docker:dind
before_script:
- amazon-linux-extras install -y docker
- aws --version
- docker --version
- yum install jq -y
script:
- cd /builds/firefox-dockerfile
- aws ecr get-login-password | docker login --username AWS --password-stdin $DOCKER_REGISTRY_DEV       
- > 
jq -c '.[]' firefox-versions.json | while read i; do
STATUS=$(echo $i | jq -r .STATUS)
FIREFOX_VERSION=$(echo $i | jq -r .FIREFOX_VERSION)
GECKODRIVER_VERSION=$(echo $i | jq -r .GECKODRIVER_VERSION)
if [[ "$STATUS" != "deployed" ]]
then
docker build -t $DOCKER_REGISTRY_DEV/$APP_NAME:"$FIREFOX_VERSION" --build-arg FIREFOX_VERSION="$FIREFOX_VERSION" --build-arg GECKODRIVER_VERSION="$GECKODRIVER_VERSION" .
docker push $DOCKER_REGISTRY_DEV/$APP_NAME:"$FIREFOX_VERSION"
tmp=$(mktemp)
cat firefox-versions.json | jq --arg a "$STATUS" '.[].STATUS = "deployed"' firefox-versions.json >"$tmp" && mv "$tmp" firefox-versions.json
else
if [[ "$STATUS" = "deployed" ]]; then
echo 'Firefox-'"$FIREFOX_VERSION"' is already created and pushed to ECR'
fi
fi
done

JSON文件= firefox-versions.json

[
{
"FIREFOX_VERSION": "79.0b9",
"GECKODRIVER_VERSION": "0.29.1",
"STATUS": "deployed"
},
{
"FIREFOX_VERSION": "88.0b8",
"GECKODRIVER_VERSION": "0.29.1",
"STATUS": ""
}
]
有谁能帮我一下吗?

问题解决:在cat firefox-versions.json | jq --arg a "$STATUS" '.[].STATUS = "deployed"' firefox-versions.json >"$tmp" && mv "$tmp" firefox-versions.json命令之后,我添加了git令牌和它的命令来提交和推送json文件到GitLab

最新更新