有没有办法在 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) 我正在运行一个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 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)
我想,如果我将添加bin和build迪尔斯到缓存中,make每次都不会重建整个项目(就像它在当地的行为),但似乎什么CI亚军重写我的srcDIR每一次,所以时间戳的文件正在也更新了,并make认为每个文件都更新了。我想将srcdir 包含在缓存中,但它包含在 repo 中,我不确定这是否正确。那么,使用以前构建的二进制文件重建 gitlab ci 项目的最佳方法是什么?
我是 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
我目前正在研究 Gitlab CI。我想在我的 YAML 文件中添加一种方法来标记由构建步骤生成的 docker 图像,并使用以下方式组成的版本号推送到我的 Gitlab 注册表:MajorVersion.Minorversion.BuildNumber
我想自动增加 BuildNumber,但要手动设置 MajorVersion 和 MinorVersion。
我为构建 ID找到了一个标准变量CI_JOB_ID。但我需要一种流畅的方式来管理我的版本号..
我正在Django使用Gitlab CI/CD和pytest测试代码以及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 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) 我已经在 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 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) 我正在尝试在 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。我怎样才能做到这一点?