标签: gitlab-ci-runner

是否可以在 GitLab CI 中配置 N 个 postgresql 服务实例?

有没有办法在 Gitlab CI 中配置 5 个 postgresql 实例?

这是我的配置:

image: something:latest

variables:
  SPRING_PROFILES_ACTIVE: gitlab-ci
  POSTGRES_USER: gitlab-ci
  POSTGRES_PASSWORD: gitlab-ci
  POSTGRES_DB: DATA_V1
  LDAP_DOMAIN: domain.com
  LDAP_ORGANISATION: org
  LDAP_ADMIN_PASSWORD: hello-ci

services:
- name: docker:dind
- name: osixia/openldap:1.1.9
- name: postgres:10.0-alpine
  alias: user-management-db
- name: postgres:10.0-alpine
  alias: company-management-db
Run Code Online (Sandbox Code Playgroud)

它在 CI 中产生错误:

[0;m[0KStarting service docker:dind ...
[0;m[0KPulling docker image docker:dind ...
[0;m[0KUsing docker image docker:dind ID=sha256:4998cc824d9ac8e4be3bb89afa004c87911e796cde15f0676d437fcb8a8dd06b for docker service...
[0;m[0KStarting service osixia/openldap:1.1.9 ...
[0;m[0KPulling docker image osixia/openldap:1.1.9 ...
[0;m[0KUsing docker image osixia/openldap:1.1.9 ID=sha256:0670342c5b82a10b014f0cf1060752ccb740cd8bd28a704ac3fa1191a4e31594 for osixia/openldap service... …
Run Code Online (Sandbox Code Playgroud)

postgresql gitlab gitlab-ci gitlab-ci-runner gitlab-ce

5
推荐指数
1
解决办法
841
查看次数

gitlab-ci:动态工件名称

我正在运行一个gitlab-ci将从远程服务器本地获取文件的作业,或多或少如下:

retrieve_docs:
    stage: fetch_docs
    image: debian:jessie
    script:
      - ssh $USERNAME@$SERVER /perform/some/work
      - INSTFILE=$(ssh $USERNAME@$SERVER bash -c 'find /root -iname "somepattern*" | tail -n 1 | xargs readlink -f')
      - echo "Will retrieve locally $INSTFILE"
      - scp $USERNAME@$SERVER:$INSTFILE .
      - BASEFILE=$(basename $INSTFILE)
      - mv $BASEFILE downloads/
    artifacts:
      name: $BASEFILE
      paths:
        - downloads/
Run Code Online (Sandbox Code Playgroud)

然而,上面的作业定义似乎不起作用,因为BASEFILE在提供文件名时变量呈现为空。

  • 有没有办法使用动态工件名称?

  • 是否有任何原因也从未将这个工件复制到我的(空/已跟踪)downloads文件夹中?

  • 上面的过程实际上会.zip在本地获取一个文件。有没有办法(虽然我设置了 1 周的到期时间)让每个作业删除旧工件并只保留最新的工件/zip 文件?

gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
4334
查看次数

是否可以在 Gitlab CI 中仅重建更新的文件?

我在我的 Gitlab CI 构建阶段使用这个脚本(只显示相关部分):

cache:
  key: "$CI_BUILD_REF"
  paths:
    - bin/
    - build/

build:
  image: <my_build_image>
  stage: build
  script:
    - "make PLATFORM='x86_64-linux-gnu' BUILD='release' JOBS=8 all"
  only:
    - master
    - tags
    - merge-requests
  artifacts:
    untracked: true
    paths:
      - bin/x86_64-linux-gnu/release
Run Code Online (Sandbox Code Playgroud)

我想,如果我将添加binbuild迪尔斯到缓存中,make每次都不会重建整个项目(就像它在当地的行为),但似乎什么CI亚军重写我的srcDIR每一次,所以时间戳的文件正在也更新了,并make认为每个文件都更新了。我想将srcdir 包含在缓存中,但它包含在 repo 中,我不确定这是否正确。那么,使用以前构建的二进制文件重建 gitlab ci 项目的最佳方法是什么?

makefile gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
326
查看次数

如何设置 Dockerized 应用程序到 Elastic Beanstalk 的持续集成?

我是 Docker 的新手,我之前的经验是将 Java Web 应用程序(在 Tomcat 容器中运行)部署到 Elastic Beanstalk。我习惯使用的管道是这样的:提交被检入 git,这会触发 Jenkins 作业,该作业构建应用程序 JAR(或 WAR)文件,将其发布到 Artifactory,然后将相同的 JAR 部署到应用程序在 Elastic Beanstalk 中使用eb deploy. (抱歉,如果“管道”是一个保留术语;我是在概念上使用它。)

顺便说一句,我还将使用 Gitlab 进行 CI/CD 而不是 Jenkins(由于我无法控制的组织原因),但是从 Jenkins 跳转到 Gitlab 对我来说似乎很简单——当然比从 Jenkins 跳转更重要直接部署 WAR 以部署 Dockerized 容器。

进入 Docker 世界,我想管道将是这样的:提交被检入 git,这会触发 Gitlab CI,然后它将构建 JAR 或 WAR 文件,将其发布到 Artifactory,然后使用Dockerfile构建Docker 映像,将该 Docker 映像发布到 Amazon ECR(也许?)...然后老实说,我不确定 Elastic Beanstalk 集成将如何从那里进行。我知道它与Dockerrun.aws.json文件有关,大概需要调用 AWS CLI。

我刚刚看完了来自 Amazon 的名为Running Microservices and Docker on AWS Elastic Beanstalk的网络研讨会,其中指出在我的存储库的根目录中应该有一个Dockerrun.aws.json文件,该文件基本上定义了与 …

amazon-web-services jenkins docker amazon-elastic-beanstalk gitlab-ci-runner

5
推荐指数
1
解决办法
769
查看次数

使用 yaml 在 Gitlab 中使用版本标记 Docker 映像

我目前正在研究 Gitlab CI。我想在我的 YAML 文件中添加一种方法来标记由构建步骤生成的 docker 图像,并使用以下方式组成的版本号推送到我的 Gitlab 注册表:MajorVersion.Minorversion.BuildNumber

我想自动增加 BuildNumber,但要手动设置 MajorVersion 和 MinorVersion。

我为构建 ID找到了一个标准变量CI_JOB_ID。但我需要一种流畅的方式来管理我的版本号..

gitlab docker gitlab-ci gitlab-ci-runner

5
推荐指数
2
解决办法
4200
查看次数

Gitlab 覆盖率徽章不起作用

我正在Django使用Gitlab CI/CDpytest测试代码以及pytest-cov生成覆盖率报告来部署应用程序

我的 .gitlab-ci.yml

stages:
  - test
  - deploy

image: python:3.6

test:
  stage: test
  script:
    - pip install pipenv
    - pipenv install
    - pipenv run py.test src/
  artifacts:
    paths:
      - htmlcov/

pages:
  stage: deploy
  dependencies:
    - test
  script:
    - mv htmlcov/ public/
  artifacts:
    paths:
      - public
    expire_in: 30 days
  only:
    - master

staging:
  stage: deploy
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci-runner

5
推荐指数
2
解决办法
5416
查看次数

GitLab:在构建映像中挂载 /builds 作为 tmpfs

在我们的 GitLab CI 环境中,我们有一个具有大量 RAM 和机械磁盘的构建服务器,运行 npm install 需要很长时间(我添加了缓存,但它仍然需要处理现有的包,因此缓存无法单独解决所有这些问题)。

我想在构建器 docker 映像中挂载 /builds 作为 tmpfs,但我很难弄清楚将此配置放在哪里。我可以在构建器映像本身中执行此操作,还是可以在 .gitlab-ci.yml 中为每个项目执行此操作?

目前我的 gitlab-ci.yml 看起来像这样:

image: docker:latest

services:
  - docker:dind

variables:
  DOCKER_DRIVER: overlay

cache:
  key: node_modules-${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/

stages:
  - test

test:
  image: docker-builder-javascript
  stage: test
  before_script:
    - npm install
  script:
    - npm test
Run Code Online (Sandbox Code Playgroud)

gitlab tmpfs docker gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
2221
查看次数

没有 Docker 的 Gitlab-runner

我已经在 ubuntu 16.04 上安装了 gitlab-runner

我已经设置了 Executor=shell

我的项目托管在 gitlab.com 上,带有一个非常简单的 yaml 配置文件:

dev:
 script:
 - pwd
Run Code Online (Sandbox Code Playgroud)

暂时不愿意使用 Docker

为什么作业的日志提到 docker ?

使用 Docker 执行器和镜像 ruby​​:2.5 ...

拉取 docker 镜像 ruby​​:2.5 ...

使用 docker image ... for ruby​​:2.5 ...

为什么在执行 pwd 时提到一个不存在的路径?

$ pwd
/builds/my_gitlab_name/my_project_name
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci-runner

5
推荐指数
1
解决办法
5854
查看次数

gitlab ci 脚本函数失败时掩码退出 1

我们知道,默认情况下,gitlab ci runners 使用set -o pipefail,如coderwall.com 中所述,此特定选项将管道的退出代码设置为最右侧命令的退出代码,以非零状态退出,或者如果所有命令都为零管道退出成功。

我们都使用“|| true”语句来防止 gitlab ci 作业在真正的退出 1 上失败(以允许后期处理失败),例如,如果我grep退出 1 但我认为这是正常的,因此我不我不希望我的工作失败,我写道:

job:
  script:
    - grep "a" myfile.txt || true
Run Code Online (Sandbox Code Playgroud)

但是当我使用函数而不是命令或脚本时,它不再起作用了:(

脚本的工作示例(给我退出 0):

job:
  script:
    - echo "exit 1" > test
    - chmox u+x test
    - test || true
Run Code Online (Sandbox Code Playgroud)

命令的工作示例(给我退出 0):

job:
  script:
    - exit 1 || true
Run Code Online (Sandbox Code Playgroud)

具有功能的非工作示例(给我退出 1):

job:
  script:
    - function test { exit 1; }
    - test || true
Run Code Online (Sandbox Code Playgroud)

具有功能的非工作示例(给我退出 1):

job:
  script:
    - function test …
Run Code Online (Sandbox Code Playgroud)

yaml function exit gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
5633
查看次数

GitLab CI .yaml 中的两个 Docker 镜像

我正在尝试在 GitLab 上扩展我的一项 CI 工作:

deploy-stage:
  image: python:3.5
  environment: stage
  script:
  - pip install awscli
  - aws s3 cp dist s3://$S3_BUCKET_STAGE/ --recursive
  only:
    - stage
Run Code Online (Sandbox Code Playgroud)

我想要实现的是能够从 Vue.js 文件构建代码(通过使用npm run build),但要做到这一点,我需要 Node.js。但我还需要 Python 才能将文件上传到 S3。我怎样才能做到这一点?

docker gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
6066
查看次数