我在这里问这个问题,因为文档没有帮助我.
在跑步者的设置过程中,有两件事要问:gitlab CI协调员和注册令牌的url.我不知道他们应该是什么.
至于url,它可以是gitlab CI web界面的url(例如:)http://localhost:80/与build相关的url,这在build的高级属性中有描述.
注册令牌可能来自文档 - 但是它的链接已经死亡(请参阅:http: //gitlab-ci-domain.com/admin/runners)或来自build的高级属性的注册令牌.
但是,当我尝试从构建属性提供跑步者的设置URL和注册令牌时,我得到访问错误,通知我注册失败.由于缺乏理解这些参数应该是什么,我无法确定是什么问题.
场景:我们是3位开发人员.
开发人员1(管理员)创建了主仓库.
开发人员2分叉管理员的回购.
开发人员3分叉管理员的回购.
开发人员2创建了一个功能分支"功能1"
开发人员3从开发人员2回购中检出"功能1".
当Developer 3尝试创建合并请求时,他只能看到自己的和管理员的回购.
所以我想知道,是否可以创建一个合并请求到另一个不同于我的叉子的遥控器?"
到目前为止我唯一看到的解决方法是:
开发人员2将功能分支推送到管理员的仓库(通过合并请求)并要求管理员"保护它",然后开发人员3也必须为管理员的仓库创建合并请求,这种方法的问题是开发人员2失去分支的所有权,他们每次想要推动更改时都必须创建合并请求.
另一方面,似乎这个功能被添加到GitLab但我找不到有关此功能的官方文档.
我正在寻找一种简单而干净的方法来将使用GitLab CI构建的人工制品发布到Artifactory上.
我能够发现https://gitlab.com/gitlab-org/omnibus/blob/af8af9552966348a15dc1bf488efb29a8ca27111/lib/omnibus/publishers/artifactory_publisher.rb但是我找不到任何关于我应该如何配置它的文档这行得通.
注意:我正在寻找一种gitlab_ci.yaml方法,而不是在外部实现它.
我认为所有3个问题都与同一个问题有关,所以我要将所有问题都放在这里.
Gitlab本身正在工作,我甚至设法将它从8.2.2更新到8.2.3.我可以创建项目,推送我的代码,拉动它,当我有正确的ssh键时重新放入它,等等.
但:
{"RepoPath":"/ var/opt/gitlab/git-data/repositories/me/myrepo.git","ArchivePrefix":"...
人们无法克隆我的公共仓库(空仓库错误).
CI无法构建我的测试:
警告:您已克隆空存储库.检查12345为开发...致命:引用不是树:123456789mycommithash987654321
错误:构建失败:退出状态1
注意:我翻译了法语版的错误消息.
我想问题出现在我的Nginx配置中,但是有很多文档我不确定哪一个是好的:有主力的那些,当我必须更改gitlab.rb的gitlab_git_http_server等时.
我的配置如下:
我的gitlab使用SLL托管在子域上,所以我添加了一个Nginx代理
/etc/gitlab/gitlab.rb:
external_url 'https://gitlab.mydomain.com'
nginx['listen_addresses'] = ['127.0.0.1', "[::1]"]
nginx['listen_port'] = 8080
nginx['listen_https'] = false
Run Code Online (Sandbox Code Playgroud)
/ etc/nginx/site_enabled/gitlab:
server {
listen *:80 default_server;
listen [::]:80 ipv6only=on default_server;
server_name gitlab.mydomain.com;
return 301 https://$server_name$request_uri;
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
}
server{
# listen 443 ssl;
listen 0.0.0.0:443 ssl default_server;
listen [::]:443 ipv6only=on ssl default_server;
server_name gitlab.mydomain.com;
server_tokens off;
location /{
proxy_pass http://localhost:8080;
proxy_redirect off; …Run Code Online (Sandbox Code Playgroud) 我正在使用GitLab CI进行项目,该过程的第一步是npm install.我node_modules稍后缓存以便更快地运行相同的作业,并将它们定义为构建工件,以便在后续阶段使用它们.但是,即使我缓存node_modules并且它是最新的,npm install每次install_packages运行作业时调用都需要很长时间,因为命令会遍历所有package.json并检查包的更新等(我假设).
根据某些条件,有没有办法只npm install在install_packages工作中运行?更具体地说(我认为这是最好的解决方案),package.json自上次构建以来是否已经改变了?
以下是我的.gitlab-ci.yml文件的相关部分:
image: node:6.9.1
stages:
- install
- prepare
- deploy
install_packages:
stage: install
script:
- npm prune
- npm install
cache:
key: ${CI_BUILD_REF_NAME}
paths:
- node_modules/
artifacts:
paths:
- node_modules/
only:
- master
- develop
build_and_test:
stage: prepare
script:
#do_stuff...
deploy_production:
stage: deploy
#do_stuff...
deploy_staging:
stage: deploy
#do_stuff...
Run Code Online (Sandbox Code Playgroud) 假设我为一个项目配置了多个作业,如下所示:
build_win32:
script: ...
build_ios:
script: ...
unit_tests:
script: ...
server_tests:
script: ...
client_tests:
script: ...
Run Code Online (Sandbox Code Playgroud)
我想要实现的是在README.md下为每个作业配置标记,以便我可以立即反馈具体哪个部分出错.
有一个关于设置徽章的Gitlab文档,但是它有一个限制,它显示了如何为build和coverage status仅配置徽章.
我想知道Gitlab CI中是否有这样的内置功能.我也可以使用第三方插件.任何帮助将不胜感激.
我正在尝试使用 gitlab ci 构建一个应用程序。
生成的文件名取决于时间,采用这种格式
DEV_APP_yyyyMMddhhmm
(例如:DEV_APP_201810221340,对应于今天的日期 2018/10/22 13h40)。
如何将此名称存储在 .gitlab-ci.yml 文件内的全局变量中?
这是我的 .gitlab-ci.yml 文件:
image: docker:latest
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay
SPRING_PROFILES_ACTIVE: gitlab-ci
# TIME: ""
# BRANCH: ""
# REC_BUILD_NAME: ""
TIME: "timex"
BRANCH: "branchx"
DEV_BUILD_NAME: "DEV_APP_x"
stages:
- preparation
- build
- package
- deploy
- manual_rec_build
- manual_rec_package
job_preparation:
stage: preparation
script:
- echo ${TIME}
- export TIME=$(date +%Y%m%d%H%M)
- "BRANCH=$(echo $CI_BUILD_REF_SLUG | sed 's/[^[[:alnum:]]/_/g')"
- "DEV_BUILD_NAME=DEV_APP_${BRANCH}_${TIME}"
- echo ${TIME}
maven-build: …Run Code Online (Sandbox Code Playgroud) 我使用 gitlab ci 来构建 docker 镜像,我想安装 python。当我构建时,以下是我的 gitlab-ci.yml:
image: docker:stable
stages:
- test
- build
before-script:
- apt install -y python-dev python pip
test1:
stage: test
script:
...
- pytest
build:
stage: build
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)
但我的工作失败了
/bin/sh: eval: line : apt: not found
ERROR: Job failed: exit code 127
Run Code Online (Sandbox Code Playgroud)
我也试过 apt-get install 但结果是一样的。
我如何安装python?
在 Gitlab 上运行 CI/CD 管道时,我的 Karma 测试超时并出现错误:
? ?wdm?: Compiled successfully.
05 08 2019 22:25:31.483:INFO [karma-server]: Karma v4.2.0 server started at http://0.0.0.0:9222/
05 08 2019 22:25:31.485:INFO [launcher]: Launching browsers ChromeHeadlessNoSandbox with concurrency 1
05 08 2019 22:25:31.488:INFO [launcher]: Starting browser ChromeHeadless
05 08 2019 22:26:31.506:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
05 08 2019 22:26:31.529:INFO [launcher]: Trying to start ChromeHeadless again (1/2).
05 08 2019 22:27:31.580:WARN [launcher]: ChromeHeadless have not captured in 60000 ms, killing.
05 08 …Run Code Online (Sandbox Code Playgroud) 即使我的所有步骤都成功通过,Gitlab CI 显示了这一点 - “清理基于文件的变量 00:01 错误:作业失败:退出代码 1”
并最终失败了。同样有趣的是,这只发生在我的主分支上。它在其他分支上成功运行。有没有人遇到过这个问题并找到了解决方案?
- >
for dir in $(git log -m -1 --name-only -r --pretty="format:" "$CI_COMMIT_SHA"); do
if [[ -f "$dir" ]]; then
SERVICE=$(echo "$dir")
# helm install the service
fi
done
- echo "deployed"
Run Code Online (Sandbox Code Playgroud)