我使用 Gitlab runner 并且在单个服务器上运行良好。gitlab-ci.yml 很简单:
stages:
- test
- deploy
test:
stage: test
image: php
tags:
- docker
script:
- echo "Run tests..."
deploy:
stage: deploy
tags:
- shell
script:
- sh deploy.sh
Run Code Online (Sandbox Code Playgroud)
正如我所说,这适用于单个服务器,但要在另一台服务器上部署相同的应用程序?我尝试使用相同的 gitlab-runner 配置(相同的 conf.toml),但它只是随机更新其中一个。
是否有超过 1 个跑步者触发 gitlab Ci 并根据 gitlab-ci.yml 部署所有这些?
我想在我的 Windows 10 机器上安装一个gitlab-runner(executor shaell)。我在 gitlab 服务器上开始工作,它总是以消息结束the command "git" cannot be found(大致翻译成英文)。事实上,git这不是我的道路的一部分。如何PATH在gitlab-runner启动时修改shell 的变量?
To use git on the command line in windows I usually set it with the statement: PATH %PATH%C:\Program Files\Git\bin.
Is it documented somewhere, git has to be available to the runner?
How can I see the command line the runner invokes (i.e. the call to git)?
我有一个docker-compose.yml设置 Gitlab、Container Registry 和 Gitlab Runner 的文件。
version: '2'
services:
redis:
restart: always
image: sameersbn/redis:latest
command:
- --loglevel warning
volumes:
- redis:/var/lib/redis:Z
postgresql:
restart: always
image: sameersbn/postgresql:9.5-3
volumes:
- postgresql:/var/lib/postgresql:Z
environment:
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm
gitlab:
restart: always
image: sameersbn/gitlab:10.1.1
volumes:
- gitlab-data:/home/git/data:Z
- gitlab-logs:/var/log/gitlab
- ./certs:/certs
depends_on:
- redis
- postgresql
ports:
- "80:80"
- "2222:22"
external_links:
- "registry:registry"
environment:
- DEBUG=false
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- …Run Code Online (Sandbox Code Playgroud) 我们想知道,如果在技术上可以像在GitHub上,做了git push使用https协议,而不是ssh与没有在卷曲的请求直接使用的用户名和密码。
我见过一些人似乎认为这是可能的,但我们无法证明。
是否有任何证据或证人可以确认允许您使用用户访问令牌或gitlab-ci-tokenCI 内推送的功能?
我正在尝试使用 gitlab ci feature 构建我的项目。根据这个问题,我已经正确地完成了一切。这是我的 .gitlab-ci.yml。
.gitlab-ci.yml
image: docker:latest
services:
- docker:dind
stages:
- build
- release
- deploy
variables:
DOCKER_DRIVER: overlay
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
cache:
paths:
- .m2/repository/
- auth/target/
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
build:
image: maven:latest
stage: build
script:
- mvn $MAVEN_CLI_OPTS package
auth-release:
stage: release
when: on_success
script:
- docker build -f auth/Dockerfile -t "$CI_REGISTRY/$CI_PROJECT_PATH/auth" ./auth
- docker push "$CI_REGISTRY/$CI_PROJECT_PATH/auth"
Run Code Online (Sandbox Code Playgroud)
但控制台打印出错误:
控制台输出
Running with gitlab-runner 11.7.0-rc1 (6e20bd76)
on docker-auto-scale …Run Code Online (Sandbox Code Playgroud) continuous-integration gitlab docker gitlab-ci gitlab-ci-runner
我想在构建 Docker 映像时添加一个标签,到目前为止我正在这样做,但我不知道如何获取正在部署的存储库上的最新标签。
docker build -t company/app .
Run Code Online (Sandbox Code Playgroud)
我的目标 docker build -t company/app:$LATEST_TAG_IN_REPO? .
我有一个 gitlab ci 工作,它为我做了一些工作,但它取决于另一个仓库,所以我需要在这个工作中克隆另一个仓库。我无法使用 https 克隆,因为 gitlab 会询问我的用户名和密码,而 gitlab ci 是非交互式的。
那么如何在 gitlab ci 作业中使用 https 克隆 gitlab repo。
提前致谢。
我正在尝试构建一个可以有条件地执行的作业,这取决于是否WebClient在develop分支中修改了文件或子目录,使用rules. 如果仅在开发分支中发现更改,则将构建管道。
目前我得到的.gitlab-ci.yml是
deploy_dev_client:
stage: client
tags:
- my tags
script:
- '& cd WebClient'
- 'npm rebuild node-sass'
- 'npm install @angular/cli@7.0.3'
- '& npm run build-release --max_old_space_size=$NODE_MEMORY_SIZE'
rules:
- changes:
- WebClient/**/*
when: always
- when: never
Run Code Online (Sandbox Code Playgroud)
但是,经过测试,我意识到每当我从本地存储库向 gitlab 推送某些内容时都会执行管道,即使在另一侧的分支上也是如此。
我试过使用only:-develop',但它导致yaml invalid错误,可能是因为only如果rules已经使用则无法使用。无论如何,我仍然可以使用rules仅针对develop分支吗?
我正在使用 rest API 在 GitLab CI 中运行手动作业。当我从 UI 开始手动作业时,我能够定义可以在作业期间使用的自定义变量。通过 API 运行作业时如何定义它们?
找不到任何关于它的文档。或者在论坛中甚至没有一个问题。
这就是我目前的工作方式
curl -k --request POST --header "PRIVATE-TOKEN: abc" https://mygit.com/api/v4/projects/17/jobs/1956/play
Run Code Online (Sandbox Code Playgroud)
我尝试添加:
--form variables[TEST]=hello
Run Code Online (Sandbox Code Playgroud)
但这没有用。
编辑:关于我在做什么的更多信息。所以我的管道有两个阶段。构建和部署。在每次提交时,我希望构建运行一次,然后我希望能够将此结果部署到多个不同的服务器。因为服务器列表是动态的,而且有很多,所以我希望将服务器的 IP 地址作为我可以提供给部署作业的变量。
我使用 Gitlab 进行持续集成和开发,突然间我收到此错误消息“运行器系统出现故障,请重试”
没有真正的错误消息或错误代码。
我已经尝试重新启动 gitlab runner,使用gitlab-runner restart,我已经重新启动了它运行的服务器,但是每当我推送代码更改时,我都会在 Gitlab 上收到此错误消息。