Gitlab CI 在作业之间传递依赖关系

标签 gitlab gitlab-ci gitlab-ci-runner

我是 GitLab CI 的新手。我有一个项目,其中有一个 Gitlab 项目,并且有作业生成、检测更改和编译。要求是生成作业从模板生成一些 go 文件,detectchanges 需要作用于相同的代码库,包括生成作业生成的所有更改(如下例中的 tempCreateTest/myfile.txt)并再次编译作用于与生成作业相同的代码库和变化作用于。我的问题是: 1. 即使使用依赖项,我也看不到生成作业生成的更改。例如 tempCreateTest/myfile.txt 没有被 detect_changes 和编译作业看到 2. 当我使用依赖项时,gitlab 究竟在哪里下载工件?

有人可以回答这个问题吗?

这是我的示例 .gitlab-ci.yml

image: golang:1.11

stages:
  - generate
  - detect_changes
  - build

before_script:
  # Setup environment
  - export GOPATH=/builds/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/go
  - export GO_PROJECT_PATH=$GOPATH/src/gitlab.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
  - export RAW_REPO_PATH=/builds/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/.
  - mkdir -p $GO_PROJECT_PATH
  - cp -r $RAW_REPO_PATH/. $GO_PROJECT_PATH
  - cd $GOPATH
  - export GO111MODULE=on
  - cd $GO_PROJECT_PATH
  - source ci.sh # This has functions that jobs use

generate_ci:
  stage: generate
  script:
    - generate_ci_script
    - mkdir tempCreateTest/ . 
    - echo "Some text here." > tempCreateTest/myfile.txt # Stages after generate should see the changes
  artifacts:
    untracked: true

detect_changes_ci:
  stage: detect_changes
  script:
    - detect_changes_ci_script 
  dependencies:
    - generate_ci

compile_ci:
  stage: detect_changes
  script:
    - compile_ci_script
  dependencies:
    - generate_ci

最佳答案

您可以使用 CI artifactscaching来完成那个。请查看前面链接中的示例。

关于Gitlab CI 在作业之间传递依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53366764/

相关文章:

GitLab克隆不成功

caching - GitLab Pages CI 缓存似乎无法缓存和恢复任何内容。如何检查缓存?

gitlab-ci - 在一个 gitlab-ci 中使用多个运行者

找不到 Gitlab CI 页面

docker - Gradle 在 GitLab CI 上构建 : Could not create service of type ScriptPluginFactory

c# - 在 C# 中使用 GitLabCI

permissions - GitLab:部分公共(public)项目

docker - 使用k3d时指定自定义docker套接字地址?

terraform - gitlab-ci:Terraform 没有名为 "sh"的命令。你的意思是 "show"

gitlab - 当每天多次调度管道(比代码更改更频繁)时,自定义管道列表