在GitLab ci Docker构建中执行外部bash脚本
我想从gitlab-ci.yml执行一个外部(在本地机器上)bash脚本,它使用docker:stable映像。我想执行位于gitlab docker映像外部的startup.sh。这是可能的还是有更好的选择 gitlab-ci.yaml在GitLab ci Docker构建中执行外部bash脚本,docker,gitlab,gitlab-ci-runner,dind,Docker,Gitlab,Gitlab Ci Runner,Dind,我想从gitlab-ci.yml执行一个外部(在本地机器上)bash脚本,它使用docker:stable映像。我想执行位于gitlab docker映像外部的startup.sh。这是可能的还是有更好的选择 gitlab-ci.yaml image: docker:stable #Build script variables: CI_DEBUG_TRACE: "true" DOCKER_DRIVER: overlay before_script: - docker --ver
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
image:docker:stable
#构建脚本
变量:
CI_调试_跟踪:“真”
DOCKER_驱动程序:覆盖
在脚本之前:
-docker--版本
建造:
服务:
-码头工人:丁
脚本:
-docker构建——没有缓存-t。
-docker登录-u根-p
-码头工人标签。。。
-码头工人推。。。
-回显“构建完成”
阶段:建造
标签:
-
部署(u)登台:
阶段:部署
脚本:
-./sh startup.sh
bash脚本
#!/bin/bash
docker login -u root -p <pass>
docker pull <image>
docker-compose up -d
#/bin/bash
docker登录-u根-p
码头工人拉力
docker compose up-d
我不确定这是否是您用例的最佳实践,但是
与映像共享文件的简单方法是添加卷,并通过编辑config.toml文件将此代码共享到映像中
将此行添加到[runners.docker]下的config.toml
卷=[“/cache”,启动路径。sh:/root/scripts”]
然后在你的.gilatb.yml
deploy_staging:
stage: deploy
script:
- chmod +x /root/scripts/startup.sh
- ./sh /root/scripts/startup.sh
你能详细说明一下你想通过这个设置实现什么目标吗?问题很复杂。你想在容器内还是容器外执行外部脚本?所以我目前的设置是:我的服务器上有一个docker gitlab实例,当我将代码提交到我的存储库时,它会自动生成一个带有更新代码的docker映像并将其作为“最新”映像推送到gitlab注册表。现在,构建完成后,bash脚本应该自动从gitlab注册表中提取新映像,docker将其组合起来,以便重新创建服务于网站的容器。构建脚本(gitlab ci.yaml)完全在docker容器中发生,因此我不知道它如何在主机上访问bash脚本。我希望能清除它?这将在gitlab-ci.yml文件中创建的docker映像中执行sh,而不是在文件所在的服务器上,对吗?