【问题标题】:Gitlab cross-project artifactGitlab跨项目神器
【发布时间】:2020-04-11 11:31:44
【问题描述】:

我有 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 文件工件

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

1.) 请求大小比上传小很多。所以我们要上传大小约为 50000 的工件,然后我们会下载大小约为 1000 的相同工件

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

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

任何见解将不胜感激。

【问题讨论】:

  • curl --fail 添加到您的命令中。现在即使 curl 失败,它也会将结果保存在 artifacts.zip 中。您可以检查文件的内容以查看 curl 命令 less artifacts.zip 真正返回的内容

标签: maven curl yaml gitlab-ci gitlab-api


【解决方案1】:

我的问题出在 URL 上,使用正确的 URL 后问题得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2021-11-08
    • 1970-01-01
    • 2023-02-02
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多