标签: gitlab-ci-runner

gitlab-ci:设置每天构建

真的不明白如何在 gitlab 中设置每日调度程序。我有一个简单的应用程序,我需要每天早上 8 点自动构建它。我尝试了以下https://gitlab.com/help/ci/triggers/README.md,但我不明白如何运行这个 crone 作业?

30 0 * * * curl --request POST --form token=TOKEN --form ref=master https://gitlab.example.com/api/v3/projects/9/trigger/builds
Run Code Online (Sandbox Code Playgroud)

这也是不可接受的http://cloudlady911.com/index.php/2016/11/02/how-to-schedule-a-job-in-gitlab-8-13/

因为我必须从管道手动运行它。

有什么解决办法吗?

gitlab gitlab-ci gitlab-ci-runner

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

Gitlab-Runner 部署到多台服务器

我得到了以下环境和设置:

  • 3 个负载平衡的生产服务器和
  • 一台开发服务器
  • 到我的开发服务器的工作自动部署
    • 一个 gitlab-runner 通过 ssh 连接到我的开发服务器并拉出开发分支
    • gitlab-ci.yml 仅限于我的开发分支

我怎样才能实现:

  • 如果我推入我的开发分支,进一步自动部署到我的开发服务器
  • 如果我推送到我的主分支,会自动部署到我的 3 台生产服务器

这个问题是基于我当前的设置,出现了以下问题

  • 我可以让 gitlab-runner 仅在本地运行(也不能在 docker 容器中运行,因为我还没有安装),这样它就可以由 gitlab-ci.yml 在分支上有所不同并部署到特定服务器或
  • 我可以安装多个仅在特定分支上执行操作的 gitlab-runner 吗?

或者有其他解决方案可以让我实现我的计划吗?

gitlab-ci gitlab-ci-runner

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

Docker 和 Gitlab - 如何修改 docker run

我对 Docker 和 Gitlab 的有争议的集成非常陌生。

\n\n

我遇到的情况是,我的脚本.gitlab-ci.yml需要使用 ioncube 对文件进行编码,但由于 Docker 设置了一些安全限制,现在完全可以这样做。因此,我需要修改docker run当我为我的 Gitlab 项目启动作业时 Gitlab 运行的命令。

\n\n

根据此页面...

\n\n
\n

此外,需要更改容器上的 Docker 安全选项,才能通过使用 docker run 命令的 \xe2\x80\x93security-opt seccomp:unconfined 选项来运行许可过程。

\n
\n\n

我需要在调用中添加额外的参数docker run,但由于 Gitlab 在某个地方这样做了,我不知道如何继续。

\n\n

\xe2\x80\x93security-opt seccomp:unconfined有没有办法让我在运行作业时包含 Gitlab ?

\n\n

编辑:我在自己的服务器上托管 Gitlab。

\n

gitlab docker gitlab-ci-runner

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

Gitlab-CI:为 Linux 和 Windows 设置环境变量

我有一个项目需要能够使用Git 存储库中的相同文件通过 Linux或Windows 上的 Gitlab-Runner 进行构建。.gitlab-ci.yml这是一个简单的构建,我只想使用shell执行器。

问题在于bash (Linux) 中设置环境变量的语法与cmd (Windows)不同。一个使用export另一个set

config.toml如何设置我的环境而不需要在每个跑步者上设置不同的环境?(在修改 时,这在 Linux 上似乎也有问题$PATH,但这是另一个问题。)

bash continuous-integration cmd gitlab-ci gitlab-ci-runner

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

Gradle 在 GitLab CI 上构建:无法创建 ScriptPluginFactory 类型的服务

在GitLab CI上使用并行 Gradle作业:

并行 Gradle 职位

我收到以下随机 Gradle异常:

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeScopeServices.createResourceSnapshotterCacheService().
Run Code Online (Sandbox Code Playgroud)

我使用没有任何GitLab CIdocker缓存的执行器。我使用Docker卷,而Gradle缓存指向该卷:gitlab-runner

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeScopeServices.createResourceSnapshotterCacheService().
Run Code Online (Sandbox Code Playgroud)

目录的访问权限没有问题/pipelines …

gradle docker gitlab-ci gitlab-ci-runner

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

Gitlab 运行程序无法运行 aws 命令

我正在尝试使用他们共享的 Runners 运行 GitLab 的工作,
我创建了一个.gitlab-ci.yml并将其保存在我的项目根目录中,将
AWS 凭据配置为环境变量 -

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
Run Code Online (Sandbox Code Playgroud)

在下面 Settings -> CI / CD -> Variables 在此处输入图片说明

仔细检查了我试图构建的分支是 protected

以下是我的 .gitlab-ci.yml -

stages:
    - build

build:
    image: python:latest
    stage: build
    script:
            - apt-get update
            - apt-get install -y zip unzip
            - pip install awscli
            - mkdir ~/.aws/
            - touch ~/.aws/credentials
            - pip install awscli
            - printf "[eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\nregion = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "$AWS_DEFAULT_REGION" >> ~/.aws/credentials
            - bash cicdScript.sh
Run Code Online (Sandbox Code Playgroud)

CICD 脚本具有 aws 命令 …

amazon-web-services gitlab gitlab-ci gitlab-ci-runner

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

无法在 GitLab CI 中生成签名的 APK

我正在测试 gitlab ci/cd 并且我正在尝试构建一个签名的 APK,但我的脚本失败了。我应该更改或添加什么?

我添加了变量 KEYSTORE_FILE、KEYSTORE_PASSWORD、KEY_ALIAS、KEY_PASSWORD 的值。

assembleRelease:
 stage: release
 script:
 - echo $KEYSTORE_FILE | base64 -d > my.keystore
 - ./gradlew assembleRelease
 -Pandroid.injected.signing.store.file=$(pwd)/my.keystore
 -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD
 -Pandroid.injected.signing.key.alias=$KEY_ALIAS
 -Pandroid.injected.signing.key.password=$KEY_PASSWORD
  artifacts:
  paths:
  - app/build/outputs/apk/release
Run Code Online (Sandbox Code Playgroud)

错误:

FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':app:packageRelease'.
1 exception was raised by workers:
java.lang.RuntimeException: 
com.android.ide.common.signing.KeytoolException: Failed to read key  from 
store "/builds/juantamad.02072019/2019_samplebuild/my.keystore": null
Run Code Online (Sandbox Code Playgroud)

但是应该可以成功

android gitlab gitlab-ci gitlab-ci-runner

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

如何仅在合并请求上配置 GitLab CI Pipeline 并且仅针对特定分支配置?

我有以下用于在合并请求上启用管道的配置。我希望此管道仅在对少数特定分支的合并请求时运行。例如:“release/some-xyz-branch”和“develop”分支。怎么做 ?

test_job:
    stage: test
    only:
        - merge_requests
    script:
        - npm run test
Run Code Online (Sandbox Code Playgroud)

我尝试在“-merge_requests”之后添加分支名称,如下所示,但它没有按预期工作。

test_job:
    stage: test
    only:
        - merge_requests
        - develop
        - release/some-xyz-branch
    script:
        - npm run test
Run Code Online (Sandbox Code Playgroud)

git continuous-integration gitlab gitlab-ci gitlab-ci-runner

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

GitLab CI 无需 DinD 即可登录私有仓库

我是 GitLab 的新手,不确定这是否可行,我已经在本地设置了 GitLab 并正在运行,还有 Artifactory 私人存储库。

我总是使用 DinD 配置,使用 Docker 作为带有 DinD 服务的主映像,然后在各个阶段登录并从私有存储库中提取不同的映像。

但我听说没有 DinD 也可以做到这一点,从而缩短执行时间。所需的图像是在阶段开始时拉取的。

而不是这个:

image: docker:latest

services:
  - docker:18.09.8-dind

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_HOST: tcp://localhost:2375 

stages:
  - run_script

run_script:
  stage:
    run_script
  script:
    - docker login -u $DOCKER_TECHNICAL_USER -p $DOCKER_TECHNICAL_USER_PASSWORD $DOCKER_REGISTRY_URL
    - docker pull artifactory.example.com:5000/repo/powershell-core:6.3
    - docker run -it artifactory.example.com:5000/repo/powershell-core:6.3 pwsh -command "get-process"
Run Code Online (Sandbox Code Playgroud)

我想这样做(整个yml):

stages:
  - run_script

run_script:
  before_script:
    - docker login -u $DOCKER_TECHNICAL_USER -p $DOCKER_TECHNICAL_USER_PASSWORD $DOCKER_REGISTRY_URL
  image: artifactory.example.com:5000/repo/powershell-core:6.3
  stage:
    run_script
  script:
    - pwsh -command "get-process"
Run Code Online (Sandbox Code Playgroud)

如果我尝试这样做,它会说它无法进行身份验证:

ERROR: …
Run Code Online (Sandbox Code Playgroud)

continuous-integration gitlab gitlab-ci gitlab-ci-runner devops

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

安装和配置 CI/CD 时出现问题

我们拥有完全配置且运行完美的企业 gitlab 服务器。现在我尝试在上面使用 CI/CD。
1. 我们的系统管理员在公司网络上给了我一个安装了 ubuntu 20.04 的虚拟服务器。
2.我阅读(并理解)有关安装和配置 gitlab runner、docker 引擎、docker machine、docker hub、virtualbox 软件的文档。
3.我在虚拟服务器上安装了Gitlab Runner。
4. 我使用“shell”类型注册运行程序
5. 使用此.gitlab-ci.yml文件创建一个项目:

test_variable:
  before_script:
    - docker info
    - docker run --rm hello-world
  stage: test
  script:
    - echo $CI_JOB_STAGE
    - ls -la
    - tree
Run Code Online (Sandbox Code Playgroud)
  1. 我启动 CI/CD 管道并确保一切正常。
    然后我尝试在 docker 中运行它:
  2. 安装docker引擎。
  3. 安装docker机器(来自gitlab的fork版本)(我尝试了两个版本)
  4. 我创造了一台新机器。一切都很完美。
    现在我正在本地测试它 - 运行一个 docker,运行新的 docker 机器,创建新机器并再次运行它 - 一切正常。
  5. 我注册了一个新的跑步者,类型为“docker”。
  6. 这个新的运行程序不能使用相同的.gitlab-ci.yml文件:
Running with gitlab-runner 11.2.0 (11.2.0)
   on docker-runner zQ6fuswY
 Using Docker executor with image ubuntu …
Run Code Online (Sandbox Code Playgroud)

continuous-integration gitlab docker gitlab-ci gitlab-ci-runner

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