在GitLab-ci Docker内部执行外部bash脚本

时间:2019-05-20 11:13:47

标签: docker gitlab gitlab-ci-runner dind

我想从gitlab-ci.yml执行一个使用docker:stable映像的外部bash脚本(在本地计算机上)。我想执行位于gitlab docker映像之外的startup.sh。这可能还是有更好的选择?

gitlab-ci.yaml

image: docker:stable

#Build script

variables:
  CI_DEBUG_TRACE: "true"
  DOCKER_DRIVER: overlay

before_script:
  - docker --version

build:
  services:
  - docker:dind
  script:
    - docker build --no-cache -t <tag> .
    - docker login -u root -p <pass> <registry>
    - docker tag ...
    - docker push ...
    - echo "build completed"
  stage: build
  tags:
    - <tag>

deploy_staging:
  stage: deploy
  script:
    - ./sh startup.sh

bash脚本

#!/bin/bash

docker login -u root -p <pass>
docker pull <image>
docker-compose up -d

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您的用例的最佳做法,但是 与图像共享文件的简单方法是通过编辑config.toml文件来增加音量并将此代码共享至图像。

将此行添加到[runners.docker]下的config.toml

volumes = [“ /cache",startup.sh的路径:/ root / scripts”]

然后进入your.gilatb.yml

    deploy_staging:
      stage: deploy
      script:
        - chmod +x /root/scripts/startup.sh     
        - ./sh /root/scripts/startup.sh