Gitlab CI runner shell grep无法拿到变量

发布于 2022-09-12 01:22:39 字数 2002 浏览 25 评论 0

我设置的变量有:

variables:
  IMAGE_ID: registry.xxx.xxx:5000/xxx/xxx
  DOCKER_LOCAL_PORT: 10000

这是我的job yml

docker_local:
  variables:
    GIT_STRATEGY: fetch
  stage: build
  when: manual
  before_script:
    - sudo systemctl restart docker
  script:
    - echo $IMAGE_ID
    - echo $DOCKER_LOCAL_PORT
    - docker ps | grep $IMAGE_ID
    - docker ps | grep $DOCKER_LOCAL_PORT
    - sudo chown -R gitlab-runner /home/gitlab-runner/
    - id=$(docker ps | grep $IMAGE_ID | grep $DOCKER_LOCAL_PORT | awk '{print $1}'); if [ $id ]; then docker kill $id && docker rm $id; fi
    - id=$(docker images | grep $IMAGE_ID | awk '{print $3}'); if [ $id ]; then sudo docker rmi --force $id; fi
    - mvn $MAVEN_CLI_OPTS clean package -Dmaven.test.skip=true
    - rm -rf ${CI_PROJECT_DIR}/docker-temp/
    - mkdir -p ${CI_PROJECT_DIR}/docker-temp/
    - cp ${CI_PROJECT_DIR}/target/*.war ${CI_PROJECT_DIR}/docker-temp/
    - cp ${CI_PROJECT_DIR}/Dockerfile ${CI_PROJECT_DIR}/docker-temp/
    - cd ${CI_PROJECT_DIR}/docker-temp/
    - docker build --no-cache --force-rm -t $IMAGE_ID:${CI_COMMIT_SHORT_SHA} ${CI_PROJECT_DIR}/docker-temp/
    - docker run -p $DOCKER_LOCAL_PORT:8080 -d $IMAGE_ID:${CI_COMMIT_SHORT_SHA}
  tags:
    - xxx

其中

- echo $IMAGE_ID
- echo $DOCKER_LOCAL_PORT
- docker ps | grep $IMAGE_ID
- docker ps | grep $DOCKER_LOCAL_PORT

这四行脚本是我为了测试单独写的, 目前是

- echo $IMAGE_ID
- echo $DOCKER_LOCAL_PORT

可输出正确的值
但一旦执行到

- docker ps | grep $IMAGE_ID
- docker ps | grep $DOCKER_LOCAL_PORT

时就会报错, 但具体原因不明.
报错截图(给项目关键字打码了)
image.png
目前gitlab-runner已经在docker组下了.
使用gitlab-runner账号连接服务器执行

docker ps | grep $IMAGE_ID
docker ps | grep $DOCKER_LOCAL_PORT

均可成功, 但以gitlab ci的方式执行便失败了.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文