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

时间:2018-11-19 00:11:40

标签: 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

1 个答案:

答案 0 :(得分:1)

您可以使用CI artifactscaching来完成。请看一下以前链接中的示例。