【发布时间】: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