Gitlab跨项目神器

Gitlab cross-project artifact

我有 2 个独立的 gitlab 项目,我已经查看了 2 天的文档,但仍在努力实现我的目标。

我有项目 A,它为整个项目生成文档。

项目 B 是一个 Gitlab Pages 项目。

我的项目 A 的 gitlab-ci.yml 文件有这样的工作

build_docs:
  stage: deploy
  artifacts:
    # Create Archive with name of [Current Job - Current Tag]
    name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
    paths:
      - documentation/build/dokka/
  script:
    - ./gradlew assemble
    - ls $CI_PROJECT_DIR/documentation/build
    - echo "Job Name = $CI_JOB_NAME"
    - echo "Project Dir = $CI_PROJECT_DIR"
    - echo "Docs trigger key = $DOCS_TRIGGER_KEY"
    - echo "Test Unprotected Unmasked Trigger = $TEST_TRIGGER"
    - echo "Job Token = $CI_JOB_TOKEN"
    - echo "Job ID= $CI_JOB_ID"
    - echo "Triggering [Documentation Pipeline]; Artifact from ACL -> Documentation"
    - "curl -X POST -F token=${CI_JOB_TOKEN} -F ref=master https://gitlab.duethealth.com/api/v4/projects/538/trigger/pipeline"

此作业触发项目 B 中的以下作业:

get-artifacts:
  stage: get-artifacts
  script:
    - echo "I have been triggered!!"
    - echo "$CI_JOB_TOKEN"
    - echo "$CI_JOB_NAME"
    - echo "$CI_PROJECT_DIR"
    - ls $CI_PROJECT_DIR
    # List artifacts generated from acl project
    - 'curl --globoff --header "PRIVATE-TOKEN: abc1234" "https://gitlab.duethealth.com/api/v4/projects/492/jobs"'
    # This should take artifacts from ACL and output them into --output filename
    - 'curl --location --output artifacts.zip --header "JOB-TOKEN: $CI_JOB_TOKEN" "https://gitlab.duethealth.com/api/v4/android-projects/492/jobs/63426/artifacts"'
    # - unzip build_docs-feature-inf-297-upload-kdoc-doc-mod-test.zip
    - ls $CI_PROJECT_DIR
    - file $CI_PROJECT_DIR/artifacts.zip
    - ls
    only:
      variables:
        - $CI_PIPELINE_SOURCE == "pipeline"
  tags:
    - pages

现在,在项目 A 的作业日志中。工件已成功上传,我看到大小为 ~50000

在项目 B 的日志中,之后 # List artifacts generated from acl project 我确实看到了 zip 文件神器

但是,我的 GET 作业工件的 curl 请求似乎以某种方式不正确。如果你看下面的图片,你可以看到两件事。

1.) 请求大小比上传小很多。所以我们上传大小为 ~50000 的工件,但随后我们下载大小为 ~1000

的相同工件

2.) 应输出工件的 zip 文件不是 zip 文件,即使它具有 .zip 文件扩展名。

在我看来,它从来没有真正获取工件,而只是创建了一些名为 artifacts.zip 的对象,它甚至不是 zip 文件,我假设文件大小是我' m看到的只是空的大小artifacts.zip.

如有任何见解,我们将不胜感激。

我的问题出在 URL,使用正确的 URL 后问题就解决了。