您好我已经使用此https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#installation安装了Gitlab
现在我想使用nginx来提供除gitlab应用程序以外的其他内容我该怎么做呢
更新(忘了提到我在Red Hat 6.5,Debian/Ubuntu解决方案欢迎下运行它)
我有多个微服务,我anonymous用于开发部署.当微服务代码库发生一些变化时,我会触发ci job来重新部署它们.我有以下脚本来做到这一点.但每次我必须从头开始构建所有图像然后运行它们.完成所有这些操作后,我有了gitlab-ci图像.所以我使用最后一个脚本删除它们.你建议什么使这个过程更实用?有没有办法更新现有图像而不用新的更改删除它?
- docker-compose build
- docker-compose down
- docker-compose up -d --force-recreate
- docker rmi $(docker images -f "dangling=true" -q) -f
Run Code Online (Sandbox Code Playgroud)
附加信息:我正在使用 anonymous
我正在尝试在.gitlab-ci.yml(http://doc.gitlab.com/ce/ci/yaml/README.html#cache)中使用'cache' .我的gitlab版本是8.2.1,我的Runner是:
$ docker exec -it gitlab-runner gitlab-runner -v
gitlab-runner version 0.7.2 (998cf5d)
Run Code Online (Sandbox Code Playgroud)
所以根据文档,一切都是最新的,但我无法使用缓存;-(.我的所有文件都被删除.我做错了什么?
创建缓存存档,但不传递给下一个作业.
$ cat .gitlab-ci.yml
stages:
- createcache
- testcache
createcache:
type: createcache
cache:
untracked: true
paths:
- doc/
script:
- touch doc/cache.txt
testcache:
type: testcache
cache:
untracked: true
paths:
- doc/
script:
- find .
- ls doc/cache.txt
Run Code Online (Sandbox Code Playgroud)
Running on runner-141d90d4-project-2-concurrent-0 via 849d416b5994...
Fetching changes...
HEAD is now at 2ffbadb MUST BE REVERTED
[...]
$ touch doc/cache.txt
[...]
Archiving cache...
INFO[0000] Creating …Run Code Online (Sandbox Code Playgroud) 假设我有这个隐藏的“基础”工作。
.base_job:
rules:
- if: "$CI_COMMIT_TAG"
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
Run Code Online (Sandbox Code Playgroud)
我想将这些规则添加到新工作中,并且也能够扩展它们,例如:
job_1:
rules:
- <add .base_job here>
- if: "$CI_MERGE_REQUEST_IID"
job_2:
rules:
- <add .base_job here>
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
Run Code Online (Sandbox Code Playgroud)
请注意,job_1和job_2有不同的规则,包括来自.base_job。
如果我要使用extends,这些作业将只有自定义规则,因为根据文档:
You can use extends to merge hashes but not arrays.
到目前为止,我的解决方案是复制粘贴这两项工作的规则,但我想让它更加干燥。
有关如何做的任何提示?
我对 Gitlab CI 管道workflow:rules和job:rules
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "push"'
- if: '$CI_PIPELINE_SOURCE != "schedule"'
Run Code Online (Sandbox Code Playgroud)
和
test:
stage: test
image: image
script:
- echo "Hello world!"
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
Run Code Online (Sandbox Code Playgroud)
如果它们都在同一个 GitLab-ci YAML 文件中使用,会发生什么。
我想variables:在这里使用Gitlab CI文档中记录的关键字:
来自:https://docs.gitlab.com/ce/ci/yaml/README.html
变量
此功能需要gitlab-runner版本等于或大于0.5.0.
GitLab CI允许您添加在构建环境中设置的.gitlab-ci.yml变量.变量存储在存储库中,用于存储非敏感项目配置,即.RAILS_ENV或DATABASE_URL.
Run Code Online (Sandbox Code Playgroud)variables: DATABASE_URL: "postgres://postgres@postgres/my_database"这些变量稍后可用于所有已执行的命令和脚本.
YAML定义的变量也设置为所有创建的服务容器,从而允许对它们进行微调.
当我尝试使用它时,我的版本不会运行任何阶段,并且无论如何都标记为成功,这是一个糟糕的YAML的好兆头.我将gitlab-ci.yml内容粘贴到设置区域的LINT工具中,输出错误为:
状态:语法不正确
错误:变量作业:未知参数PACKAGE_NAME
我使用的YAML语法与文档相同,但是它不起作用.我无法找到任何与此相关的漏洞.以下是我当前的版本和我的gitlab-ci.yml的清理版本.
Gitlab版本:7.13.2 Omnibus
Gitlab Runner版本:0.5.2
gitlab-ci.yml(Sanitized)
types:
- test
- build
variables:
PACKAGE_NAME: "awesome-django-app"
PACKAGE_SUMMARY: "Awesome webapp backend."
MAJOR_RELEASE: "1"
MINOR_RELEASE: "0"
PATCH_LEVEL: "0dev"
DEV_DB_URL: "db"
DEV_SERVER: "pydev.example.com"
PROD_SERVER: "pyprod.example.com"
TEST_SERVER: "pytest.example.com"
envtest:
type: test
script:
- ". ./testbuild.sh"
tags:
- python2.7
- postgres
- linux
except:
- tags
buildrpm:
type: build
script:
- mkdir -p …Run Code Online (Sandbox Code Playgroud) 我已经设置了自己的Gitlab服务器,其中包含一个项目和一个Gitlab运行器.我是持续集成服务器的新手,因此不知道如何完成以下操作.
每次我提交我的项目的主分支我想将存储库部署到另一个服务器并在那里运行两个shell命令(npm install和forever restartall)
我该怎么做?我是否需要在部署项目的机器上使用转轮?
continuous-integration node.js gitlab gitlab-ci gitlab-ci-runner
Gitlab提供了一个.gitlab-ci.yml模板,用于构建和发布图像到自己的注册表(单击一个项目中的"新文件",选择.gitlab-ci.yml和docker).该文件看起来像这样,它开箱即用:)
# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
build-master:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
- master
build:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
- master
Run Code Online (Sandbox Code Playgroud)
但默认情况下,这将发布到gitlab的注册表.我们怎样才能发布到docker hub …
我的管道中有一份工作,其中有一个包含两个非常重要步骤的脚本:
mvn test 对我的代码运行 JUnit 测试junit2html 将测试的 XML 结果转换为 HTML 格式(查看结果的唯一可能方法,因为我的管道不是通过 MR 完成的)作为工件上传到 GitLabdocker rm 销毁之前在管道中创建的容器我的问题是,当我的测试失败时,脚本会立即停止在mvn test,因此junit2html永远不会到达该步骤,这意味着在失败的情况下永远不会上传测试结果,也永远docker rm不会执行,因此容器仍然存在并弄乱了后续管道其结果。
我想要的是即使脚本在某些时候失败,也能够将工作持续到最后。基本上,该作业在 GitLab CI / CD 中仍应算作失败,但应执行其整个脚本。我该如何配置?
我正在使用自托管GitLab CI server(社区版v8.9.5)和gitlab-ci-multi-runner1.2.0来构建项目.我的一个管道阶段(测试)需要一段时间才能运行,我得到以下erm:
Run Code Online (Sandbox Code Playgroud)ERROR: Build failed: execution took longer than 3600 seconds
我在哪里放置超时的覆盖?我可以将它应用于测试管道阶段吗?