我想向一个Rest API发送有关部署状态的报告。
由于$IMAGE2的依赖关系,它应该与部署作业无关,因为我想在其他项目中使用报告作业。
因此,我在Gitlab CI中创建了两个作业,如下所示:
在上述解决方案中,根据部署的情况,我将
上述解决方案存在一些问题: - 除非我触发手动作业,否则流水线状态将是
deploy:
stage: deploy
image: $IMAGE1
script:
- cd ${CI_PROJECT_DIR} && echo 'Failed' > deployment-status
# some codes to deploy and exit 1 if not successful
- cd ${CI_PROJECT_DIR} && echo 'Passed' > deployment-status #This line run only when deployment is successful
when: manual
artifacts:
when: always
paths:
- deployment-status
report-deployment:
stage: post-deploy
image: $IMAGE2
script:
- cd ${CI_PROJECT_DIR} && cat deployment-status
# some codes to report the status of deployment to an API
when: always
needs: ["deploy"]
在上述解决方案中,根据部署的情况,我将
deployment-status
填充为Passed/Failed,并在下一个任务中使用deployment-status
构件文件获取部署状态信息并报告它。上述解决方案存在一些问题: - 除非我触发手动作业,否则流水线状态将是
running
。(因为report-deployment
作业需要deploy
)
- 如果我尝试触发两次deploy
作业,则只发送一次报告到API。
问题截图
report-deployment
作业成为一个独立的作业(类似模板),可以在其他项目中使用。将 $IMAGE1 和 $IMAGE2 的依赖项合并起来并不是很干净。 - Hamidreza