我仍然不太了解gitlab-ci多跑者启动docker并与代码进行内部交互的过程.
是否有可能gitlab-ci多个运行器启动一个docker容器,其中包含此docker容器中的当前代码,然后针对此代码运行测试?(例如:代码掉落)
我基本上想要一个安装了各种挂钩的docker容器.GitLab-CI多跑者应该在主机系统上运行并按需启动docker容器.在docker容器内部,应该根据phpcs检查代码.
如何将repo代码放入docker容器?
谢谢您的帮助
我想创建一个简单的"hello,world"Gitlab CI脚本.我已经让Docker转轮工作,我正在尝试这样的事情:
image: debian:sid
test:first:
script:
- true
Run Code Online (Sandbox Code Playgroud)
不幸的是,构建失败并出现错误: test:first job: script should be a string or an array of a strings
我究竟做错了什么?
我将Gitlab CI与使用Docker的运行程序结合使用。在Gitlab中一个项目的git仓库中,我放置了一个.gitlab-ci.yml文件。推送此文件将使运行程序根据我提供的Docker映像创建Docker容器。然后,它运行yml文件中规定的构建步骤。构建成功后,这将非常有效。
但是,当构建失败时,我希望能够在用于运行此构建的Docker容器中找到原因。这可能吗?
'docker ps'的输出显示该容器在构建期间正在运行,但是此后'docker ps -a'的输出显示该容器已被完全删除。有什么办法可以防止这种情况?
我想用一个gitlab-runner来制作两个相似但不完全相同的版本。
在git存储库中,我有几个分支:prod,test,dev。是否可以仅使用一个跑步者来构建不同的路径?
例如:
/home/gitlab-runner/builds/860ee11a/0/projectname -产品/home/gitlab-runner/builds/860ee11a/1/projectname -测试/home/gitlab-runner/builds/860ee11a/2/projectname -开发如果是这样,您该怎么做?
我使用GitLab CI Runner,它使用命令:
docker run -d --name postgres postgres:9.4
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
docker run -d --name postgres --volumes-from postgres_datastore postgres:9.4
Run Code Online (Sandbox Code Playgroud)
但GitLab CI Runner不支持任何选项(-v or --volumes-from).
还有其他方法吗?
我设置了我的第一个GitLab Ci Pipeline,包括docker来运行我的项目.我想把我的管道分成几个阶段,所以我创建了"build","test"和"clean-build".
在这种情况下一切正常:
stages:
- build
- test
- clean
image: docker:latest
services:
- docker:dind
before_script:
- export RELEASE=${CI_BUILD_REF_NAME}
- docker version
build:
stage: build
tags:
- sendis-dind
script:
- echo "Hallo in Build Stage"
test:
stage: test
tags:
- sendis-dind
script:
- echo "Hallo in TEST Stage"
clean-build:
stage: clean
tags:
- sendis-dind
script:
- echo "Hallo beim Clean Up"
when: always
Run Code Online (Sandbox Code Playgroud)
所有3个阶段都成功运行
但这失败了:
stages:
- build
- test
- clean
image: docker:latest
services:
- docker:dind
before_script:
- …Run Code Online (Sandbox Code Playgroud) 我在docker中使用docker来托管我的容器,因为它们在管道中工作.我从我的代码创建的容器被设置为具有将gcloud密钥传递给容器的卷.这在我的本地机器上完美运行,但在gitlab-runner上它没有正确链接.
从阅读来看,这似乎是因为它将主机链接到我的容器,而不是将dind主机链接到我的容器.
如何将dind内的目录链接到我的容器?
(还要忽略标记等任何小问题,这个ci文件在开发的早期阶段)
GitLab ci如下
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
SPRING_PROFILES_ACTIVE: gitlab-ci
CONTAINER_TEST_IMAGE: registry.gitlab.com/fdsa
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/asdf
stages:
- build_test_image
- deploy
.docker_login: &docker_login | # This is an anchor
docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
build test image:
stage: build_test_image
script:
- *docker_login
- docker build -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
test run:
stage: deploy
script:
- *docker_login
- mkdir /key
- echo $GCP_SVC_KEY > /key/application_default_credentials.json
# BROKEN LINE HERE
- docker run …Run Code Online (Sandbox Code Playgroud) 我的问题是bash脚本我创建了这个错误"/ bin/sh的:EVAL:行88:./deploy.sh:未找到"上gitlab.下面是我的示例脚本.gitlab-ci.yml.
我怀疑gitlab ci不支持bash脚本.
image: docker:latest
variables:
IMAGE_NAME: registry.gitlab.com/$PROJECT_OWNER/$PROJECT_NAME
DOCKER_DRIVER: overlay
services:
- docker:dind
stages:
- deploy
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker pull $IMAGE_NAME:$CI_BUILD_REF_NAME || true
production-deploy:
stage: deploy
only:
- master@$PROJECT_OWNER/$PROJECT_NAME
script:
- echo "$PRODUCTION_DOCKER_FILE" > Dockerfile
- docker build --cache-from $IMAGE_NAME:$CI_BUILD_REF_NAME -t $IMAGE_NAME:$CI_BUILD_REF_NAME .
- docker push $IMAGE_NAME:$CI_BUILD_REF_NAME
- echo "$PEM_FILE" > deploy.pem
- echo "$PRODUCTION_DEPLOY" > deploy.sh
- chmod 600 deploy.pem
- chmod 700 deploy.sh
- ./deploy.sh …Run Code Online (Sandbox Code Playgroud) bash continuous-integration gitlab gitlab-ci gitlab-ci-runner
我目前正在尝试使用GitLab运行CI / CD作业,该作业运行一个Python文件,该文件对特定的存储库进行更改,然后提交并将这些更改推送到master。在存储库中,我还担任过Master的角色。看来,所有git功能运行正常除外git push,这导致fatal: You are not currently on a branch.与使用git push origin HEAD:master --force,这导致fatal: unable to access 'https://gitlab-ci-token:xxx@xxx/project.git/': The requested URL returned error: 403。我一直在寻找在线解决方案,一个是这个,另一个是不保护它,而我现在还找不到。这也是GitLab存储库中的一个子项目。
现在,这几乎就是我的.gitlab-ci.yml模样。
before_script:
- apt-get update -y
- apt-get install git -y
- apt-get install python -y
- apt-get python-pip -y
main:
script:
- git config --global user.email "xxx@xxx"
- git config --global user.name "xxx xxx"
- git config --global …Run Code Online (Sandbox Code Playgroud)