标签: gitlab-ci

由于政策原因,Gitlab 缓存未上传

Not uploading cache {name of branch} due to policy我的 gitlab 运行程序出现错误。我的.yaml文件如下所示:

stages:
  - test
  - staging
  - publish
  - deploy

# cache using branch name
# https://gitlab.com/help/ci/caching/index.md
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .yarn
    - node_modules/
  policy: pull

before_script:
  - yarn install --cache-folder .yarn

test:
  stage: test
  image: node:14
  script:
    - yarn install
    - yarn test

pages:
  stage: staging
  image: alekzonder/puppeteer
  except:
    - master
  script:
    - yarn install
    - yarn compile
    - yarn build

publish:
  stage: publish
  image: …
Run Code Online (Sandbox Code Playgroud)

caching gitlab-ci gitlab-ci-runner

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

如何在管道中保存多个变量以供另一项作业使用

所以我正在浏览 gitlab ci 文档以将变量传递给其他作业。但是,我该如何通过多个呢?我如何访问多个?

build:
  stage: build
  script:
    - echo "BUILD_VERSION=hello" >> build.env
  artifacts:
    reports:
      dotenv: build.env

deploy:
  stage: deploy
  script:
    - echo "$BUILD_VERSION"  # Output is: 'hello'
  dependencies:
    - build
Run Code Online (Sandbox Code Playgroud)

variables gitlab gitlab-ci

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

Gitlab-将父管道的作业ID传递给子管道

有什么方法可以将父管道的作业 ID 作为变量传递给子管道

package:
  stage: package                 
  script:
    - zip -r ./service.zip

deploy:
  stage: deploy
  variables:
    
  trigger:         
    include:
      - project: '<namespace>/<project>'
        ref: '<branch>'
        file: '<path to yml file>'
    strategy: depend    
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci

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

如何安装nodejs以在gitlab作业中安装npm包?

.deploy: &deploy
  before_script:
    - apt-get update -y
  script:
    - cd source/
    - npm install multi-file-swagger
    - multi-file-swagger -o yaml temp.yml > swagger.yml
Run Code Online (Sandbox Code Playgroud)

我想安装 multi-file-swagger 包将 temp.yml(已拆分为多个文件)编译为 swagger.yml。所以在使用npm之前我需要安装nodejs。我怎样才能做到这一点?

node.js npm gitlab gitlab-ci

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

使用什么 Gitlab 工具来生成代码覆盖率报告?

有人告诉我,不使用 JaCoCo,而是会有一个内部 Gitlab 工具,我可以在其中创建测试覆盖率报告?

  • 我不想使用 JaCoCo。
  • 我对 Gitlab 中的任何可视化插件都不感兴趣。
  • 我想生成一个 xml/html 文件,其中包含条形图等,可以通过电子邮件发送并在外部打开。

我在 Gitlab 仪表板菜单中找不到任何内容。该项目是一个 Android App Kotlin 项目。

kotlin gitlab test-coverage gitlab-ci

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

Gitlab Ci include local 仅最后执行

我为一个应用程序构建了很多不同的 Android 风格,所以我想将构建拆分为不同的 yml 文件。我目前有我的基本文件.gitlab-ci.yml

image: alvrme/alpine-android:android-29-jdk11

variables:
  GIT_SUBMODULE_STRATEGY: recursive

before_script:
    - export GRADLE_USER_HOME=`pwd`/.gradle
    - chmod +x ./gradlew
    
cache:
  key: "$CI_COMMIT_REF_NAME"
  paths:
     - .gradle/

stages:
  - test
  - staging
  - production
  - firebaseUpload
  - slack

include:
  - local: '/.gitlab/bur.yml'
  - local: '/.gitlab/vil.yml'
  - local: '/.gitlab/kom.yml'
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试打造 3 种不同的口味。但我不知道为什么只有最后包含的 yml 文件被执行。前 2 个被忽略。

/.gitlab/bur.yml

unitTests:
  stage: test

  script:
    - ./gradlew testBurDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)

/.gitlab/vil.yml

unitTests:
  stage: test

  script:
    - ./gradlew testVilDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)

/.gitlab/kom.yml

unitTests:
  stage: test

  script:
    - ./gradlew testKomDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)

yaml gitlab gitlab-ci devops

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

如何根据前一阶段的失败将作业设置为手动?

在阶段之后我有一个管道。在最后两个阶段结束时,如下所示。

在此输入图像描述

Teardown 将从 kubernetes 中删除应用程序,destroy 将从 kubenretes 集群和其他资源整体删除。

我已设置自动并允许失败为真。

但是,如果拆卸阶段失败,我想将最后一个销毁阶段设置为手动。这样我就可以交叉检查并稍后恢复工作。如果拆卸成功通过,那么它应该自动完成。

怎么设置呢?

gitlab-ci

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

来自 gitlab CI/CD 变量的 Terraform 变量

我知道 CI/CD 变量可以在 HCL 中使用,因为在环境中使用 TF_VAR_ 前缀声明它们将使我能够将它们作为输入变量查找,然后在我所在的 .tf 文件中使用它们。需要他们。

\n

我做了:

\n
    \n
  • 通过 GitLab 项目中的 UI 设置我的变量,如TF_VAR_ibm_api_key,然后屏蔽它。
  • \n
  • 为其写入一个变量块main.tf
  • \n
  • 在同一文件中需要的地方调用它main.tf
  • \n
  • 尝试将变量包含在 中variables.tf,结果相同
  • \n
  • 阅读 gitlab 和 terraform 的文档,但我没有得到正确的结果。
  • \n
\n

这是我的main.tf文件:

\n
variable ibm_api_key {\n}\n\nterraform {\n  required_version = ">= 0.13"\nrequired_providers {\n    ibm = {\n    source = "IBM-Cloud/ibm"\n    }\n }\n}\n\nprovider "ibm" {\n  ibmcloud_api_key = var.ibm_api_key\n}\n
Run Code Online (Sandbox Code Playgroud)\n

预期行为:变量从 CI/CD 传递并添加到 HCL 代码中。

\n

当前行为:在 \xc2\xb4plan\xc2\xb4 期间,作业失败并出现错误代码 1

\n
$ terraform plan\nvar.ibm_api_key\n …
Run Code Online (Sandbox Code Playgroud)

gitlab-ci terraform hcl terraform-provider-ibm

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

Gilab CI:从环境变量加载 ssh 密钥

我花了一天时间尝试将密钥对添加到 Gitlab CI 中的 docker 映像

当在 ssh-keygen 中加载密钥以生成 pub 密钥或在 ssh-add 中加载私钥时,我总是收到这些错误:“libcrypto 错误”或“格式无效”(取决于所使用的 docker 映像):

加载密钥“/root/.ssh/id_rsa”:libcrypto 中出现错误

代码如下:

job_deploy:
  image: ubuntu:kinetic
  stage: deploy
  rules:
    - if: $CI_PIPELINE_SOURCE == "push"
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == "master"

  environment: "staging"
  before_script:
    - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client openssl libssl-dev -y )'
    - eval $(ssh-agent -s)
    # - echo -n "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
    - …
Run Code Online (Sandbox Code Playgroud)

ssh openssl docker gitlab-ci

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

gitlab-ci 中的 image 和 default:image 有什么区别?

这个配置有什么区别:

image: python:latest
Run Code Online (Sandbox Code Playgroud)

和这个:

default:
    image: python:latest
Run Code Online (Sandbox Code Playgroud)

.gitlab-yml我已经使用这两个选项创建了一个文件,但实际上看不到任何重大差异。

default:image使用key in.gitlab-ci.yml而不是仅仅使用有什么好处吗image

gitlab gitlab-ci cicd

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