我最近安装了GitLab并尝试使用GitLab CI.我在我的GitLab服务器中成功启用了GitLab CI并成功安装了CI Runner(在Windows上,如果这是相关的).我为Windows CI Runner启用了一个项目,当我提交到存储库时,运行器被执行,我可以看到构建.
我按照文档安装了第二个CI Runner(在Debian上).我可以看到Debian CI Runner和Windows CI Runner一起注册.Debian CI Runner分配了相同的项目.但是,当我提交存储库时,只执行Windows CI Runner,Debian CI Runner不会尝试构建.
我犯了什么错误或者有什么额外的配置才能启用它?我已经尝试重新注册Debian CI Runner但没有成功.
更新1: Debian CI Runner现在正在执行,但Windows CI Runner不是.它似乎只选择一个单一的跑步者.
更新2:升级到'GitLab CI 7.14.1 2dee1b3'但相同的行为仍然存在.
更新3:在Scientific Linux机器上添加了第三个跑步者.它已注册并分配了项目,但只执行了一个运行程序(目前是Debian CI Runner).
GitLab CI 7.12.0 e96755c
我在gitlab.com上托管了一个Rails应用程序,我按照本指南将其配置为部署到heroku:http://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application- to-heroku.html.它工作正常.
我的问题是,每次部署到heroku时如何运行迁移?通过CLI进行部署时,我通常会这样做:
git push heroku master && heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)
但是使用gitlab-ci.yml我不知道如何做到这一点......
那么标题几乎是不言自明的.
总之,如果构建成功,我希望将分支(即dev)合并到另一个分支(即生产).
如果你想知道为什么,请看看这个问题:https:
//stackoverflow.com/questions/42109335/gitlab-runner-starts-merge-automate-merge?noredirect=1#comment71394445_42109335
是否可以在特定运行器上运行管道?(不使用标签)
使用可行environments,甚至可行gitlab runner exec?
场景:
已有一个已有多个运行器的项目(用于注册运行器的特定项目令牌),并且具有自己的关联标签(因此也不能更改它们)。
我要添加一个新的运行器,但是需要首先对其进行测试以确保其正常工作,但是我需要强制在该机器上构建管道,而无需更改任何标签或运行器的特定项目。
我刚刚学习一些有关 GitLab CI 的知识。我的本地计算机上运行的 GitLab Runner 已成功连接到我的 GitLab 项目。我编写的命令运行良好,但如果控制台中有一些带有非 asci 字符的输出,Gitlab 中的输出将显示 \xef\xbf\xbd 字符。
\n\nWin10 Pro 捷克本地化(企业机)
\n\n我的 .gitlab-ci.yml 文件:
\n\nvariables:\n PROJECT_FOLDER: \'Code\'\n PROJECT_NAME: \'Apps.InfoPanels.Cloud.WebApp\'\n\n TEST_FOLDER: \'Apps.InfoPanels.Cloud.Test\'\n TEST_NAME: \'Apps.InfoPanels.Cloud.Test\'\n\n NUGET_PATH: \'C:\\NuGet\\nuget.exe\'\n MSBUILD_PATH: \'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe\'\n COREBUILD_PATH: \'C:\\Program Files\\dotnet\\dotnet.exe\'\n NUNIT_PATH: \'C:\\Program Files (x86)\\NUnit.org\\nunit-console\\nunit3-console.exe\'\n\nstages:\n - build\n\nbefore_script:\n - \'tree\'\n\nbuild:\n stage: build\n script:\n - \'& "$env:MSBUILD_PATH" /p:Configuration=Debug ".\\$env:PROJECT_FOLDER\\$env:PROJECT_NAME.sln"\'\n artifacts:\n untracked: true\nRun Code Online (Sandbox Code Playgroud)\n\n和 config.toml:
\n\nconcurrent = 1\ncheck_interval = 0\n\n[[runners]]\n name = "sykora-nb"\n url = "URL"\n token = "TOKEN"\n executor = …Run Code Online (Sandbox Code Playgroud) .net continuous-integration gitlab gitlab-ci gitlab-ci-runner
管道完成后,是否可以使用Gitlab CI使管道缓存无效或清除?
我的.gitlab-ci.yml文件具有以下全局缓存定义
cache:
key: "%CI_PIPELINE_ID%"
paths:
- './msvc/Project1`/bin/Debug'
- './msvc/Project2`/bin/Debug'
- './msvc/Project3`/bin/Debug'
Run Code Online (Sandbox Code Playgroud)
该cache-key值指定每个管道应维护自己的缓存,这可以正常工作,但是在管道完成后,缓存文件仍然存在。随着数百个管道的运行,大小开始增加,手动删除我们计算机上的缓存文件夹并不是一个很好的解决方案。
我尝试在管道的末尾添加清理作业
cleanup:
stage: cleanup
script:
- rm -rf './msvc/Project1/bin'
- rm -rf './msvc/Project2/bin'
- rm -rf './msvc/Project3/bin'
when: always
Run Code Online (Sandbox Code Playgroud)
会删除本地文件,但不会从缓存中删除它们。
我在这里想念什么吗?
当前正在运行的Gitlab-EE 10.3.3
我有一个dockerized GitLab和GitLab Runner安装,包括docker-compose.yml:
version: "3"
services:
gitlab:
image: gitlab/gitlab-ee:latest
container_name: gitlab
restart: always
hostname: gitlab
ports:
- "45022:22"
- "45080:80"
- "45443:443"
volumes:
- /srv/gitlab/config:/etc/gitlab
- /srv/gitlab/logs:/var/log/gitlab
- /srv/gitlab/data:/var/opt/gitlab
python-runner:
image: gitlab/gitlab-runner:latest
container_name: python-runner
hostname: python-runner
volumes:
- /srv/python-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
environment:
- CI_SERVER_URL=http://gitlab/ci
- RUNNER_TOKEN=myTokenCode
- RUNNER_DESCRIPTION=Python 2.7.14
- RUNNER_EXECUTOR=docker
- DOCKER_IMAGE=python:2.7.14
restart: always
Run Code Online (Sandbox Code Playgroud)
我已经注册了跑步者:
docker exec -it python-runner gitlab-runner register \
--non-interactive \
--url "http://gitlab/" \
--registration-token "${GITLAB_REGISTRATION_TOKEN}" \
--description "Python 2.7.14" \
--executor "docker" \ …Run Code Online (Sandbox Code Playgroud) 我想在两个作业之间共享一个文件,如果有更改的文件则修改它.python脚本将cache.json文件与更改进行比较,并有时修改cahce文件.
.gitlab-ci.yaml:
image: ubuntu
stages:
- test
cache:
key: one-cache
paths:
- cache.json
job1:
stage: test
script:
# - touch cache.json
- cat cache.json
- python3 modify_json_file.py
- cat cache.json
Run Code Online (Sandbox Code Playgroud)
问题是cache.json在下次作业运行时文件不存在.我收到错误消息:cat: cache.json: No such file or directory.我也确实插入了一次touch命令,但是如果没有touch命令,这不会改变下一次运行的任何内容.
我做错了什么或者我不理解cacheat gitlab错了.
在系统模式下配置 GitLab 运行器时,服务无法启动,但在用户模式下服务运行良好。
在 GitLab 运行程序文档中,他们没有介绍目的 https://docs.gitlab.com/runner/commands/#super-user-permission
我理解的唯一区别是路径:
用户模式 = /Users/ayufan/.gitlab-runner/config.toml
系统模式 = /etc/gitlab-runner/config.toml
任何人都可以解释一下系统模式如何影响结果。
更新:我没有从 gitlab 论坛得到答案,但我在这里阅读了一些注释https://medium.com/static-object/how-to-set-up-gitlab-ci-for-ios-in-a-few- relative-simple-steps-56a0d88d0272,我了解到这是他们大多数人面临的问题。
作为系统管理员,我使用 gitlab 作为 git 服务器,并使用一些 docker 服务器作为部署服务器。我们在 gitlab 上有很多项目,现在我决定使用 gitlab runner 作为简单的 CI/CD ro 自动部署我们的项目。
现在我对下面的跑步者的一些概念感到困惑:
那么现在,该使用哪一个呢?
gitlab-ci-runner ×10
gitlab ×7
gitlab-ci ×7
git ×3
.net ×1
docker ×1
gitlab-api ×1
heroku ×1
merge ×1
yaml ×1