标签: gitlab-ci

使用gitlab的nginx来提供另一个应用程序

您好我已经使用此https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#installation安装了Gitlab

现在我想使用nginx来提供除gitlab应用程序以外的其他内容我该怎么做呢

  • 我需要修改的配置文件在哪里
  • 如何指向像/ var/www这样的目录,以便nginx知道这是另一个应用程序的根目录.

更新(忘了提到我在Red Hat 6.5,Debian/Ubuntu解决方案欢迎下运行它)

nginx gitlab gitlab-ci

30
推荐指数
4
解决办法
1万
查看次数

如何使用docker-compose更新现有图像?

我有多个微服务,我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

docker gitlab-ci docker-compose

28
推荐指数
4
解决办法
3万
查看次数

gitlab 8.2.1,如何在.gitlab-ci.yml中使用缓存

我正在尝试在.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)

所以根据文档,一切都是最新的,但我无法使用缓存;-(.我的所有文件都被删除.我做错了什么?

创建缓存存档,但不传递给下一个作业.

这是我的.gitlab-ci.yml

$ 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)

作业'createcache'的输出

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)

gitlab gitlab-ci gitlab-ci-runner

27
推荐指数
2
解决办法
3万
查看次数

如何合并 GitLab CI 作业上的规则

假设我有这个隐藏的“基础”工作。

.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_1job_2有不同的规则,包括来自.base_job

如果我要使用extends,这些作业将只有自定义规则,因为根据文档
You can use extends to merge hashes but not arrays.

到目前为止,我的解决方案是复制粘贴这两项工作的规则,但我想让它更加干燥。

有关如何做的任何提示?

yaml gitlab-ci

25
推荐指数
3
解决办法
2万
查看次数

Gitlab-ci 管道中“workflow:rules”的用途是什么?

我对 Gitlab CI 管道workflow:rulesjob: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 文件中使用,会发生什么。

gitlab gitlab-ci

25
推荐指数
1
解决办法
2万
查看次数

我们如何在gitlab-ci.yml中使用'variables'关键字?

我想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.

variables:   
  DATABASE_URL: "postgres://postgres@postgres/my_database"
Run Code Online (Sandbox Code Playgroud)

这些变量稍后可用于所有已执行的命令和脚本.

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)

variables gitlab gitlab-ci

24
推荐指数
2
解决办法
3万
查看次数

使用Gitlab CI将每个构建部署到服务器

我已经设置了自己的Gitlab服务器,其中包含一个项目和一个Gitlab运行器.我是持续​​集成服务器的新手,因此不知道如何完成以下操作.

每次我提交我的项目的主分支我想将存储库部署到另一个服务器并在那里运行两个shell命令(npm installforever restartall)

我该怎么做?我是否需要在部署项目的机器上使用转轮?

continuous-integration node.js gitlab gitlab-ci gitlab-ci-runner

24
推荐指数
2
解决办法
2万
查看次数

如何从gitlab-ci将docker镜像发布到docker hub

Gitlab提供了一个.gitlab-ci.yml模板,用于构建和发布图像到自己的注册表(单击一个项目中的"新文件",选择.gitlab-ci.ymldocker).该文件看起来像这样,它开箱即用:)

# 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 …

gitlab-ci docker-registry

24
推荐指数
2
解决办法
9492
查看次数

GitLab CI:即使脚本失败,如何继续工作

我的管道中有一份工作,其中有一个包含两个非常重要步骤的脚本:

  • mvn test 对我的代码运行 JUnit 测试
  • junit2html 将测试的 XML 结果转换为 HTML 格式(查看结果的唯一可能方法,因为我的管道不是通过 MR 完成的)作为工件上传到 GitLab
  • docker rm 销毁之前在管道中创建的容器

我的问题是,当我的测试失败时,脚本会立即停止在mvn test,因此junit2html永远不会到达该步骤,这意味着在失败的情况下永远不会上传测试结果,也永远docker rm不会执行,因此容器仍然存在并弄乱了后续管道其结果。

我想要的是即使脚本在某些时候失败,也能够将工作持续到最后。基本上,该作业在 GitLab CI / CD 中仍应算作失败,但应执行其整个脚本。我该如何配置?

gitlab gitlab-ci

24
推荐指数
1
解决办法
2万
查看次数

GitLab CI管道阶段超时

我正在使用自托管GitLab CI server(社区版v8.9.5)和gitlab-ci-multi-runner1.2.0来构建项目.我的一个管道阶段(测试)需要一段时间才能运行,我得到以下erm:

ERROR: Build failed: execution took longer than 3600 seconds
Run Code Online (Sandbox Code Playgroud)

我在哪里放置超时的覆盖?我可以将它应用于测试管道阶段吗?

timeout gitlab-ci

23
推荐指数
3
解决办法
1万
查看次数