如何解决如何在同一存储库中的github动作之间共享代码?
假设我要在回购中使用两个工作流程build.yml
和release.yml
。第一个应该构建项目(假设使用CMake),第二个应该构建项目并使用构建的二进制文件创建GitHub Release。
项目构建代码在两个文件之间重复。如何在它们之间共享它,而不是被复制粘贴并且必须一次在两个位置手动更新?
我还无法找到一种方法来实现单独的工作流甚至同一工作流中的作业之间的任何类型的代码共享行为。
解决方法
选择1:回答上述问题
当前没有直接在github操作中执行此操作的方法。您需要完成几个步骤才能使其正常工作。
- 建立形象
- 构建完成后上传到s3或人工制品
- 完成先前的工作流程后,下载图像。您可以通过触发第一个管道中的第二个管道来确保工作流程已完成
- 使用下载工件
每个github动作
如果您需要访问先前工作流程运行中的工件,则需要将工件存储在某处。例如,您可以在工作流的末尾运行脚本,以将构建工件存储在Amazon S3或Artifactory上,然后使用存储服务的API在以后的工作流中检索这些工件。
选项2:解决方法,使我们不必处理外部服务,而留在GitHub
在同一工作流程中运行两个作业。一个工作要构建,另一个工作要发布。这里的想法是,只有在作业构建成功完成后,您才可以运行作业发布。另外,我们将需要使用工件在作业之间传递数据
build:
...
steps:
- name: Build image
run: make ...blah blah
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: name-of-build
path: ./path/to/artifact
release:
needs: build # this basically says only run if build job is successful
steps:
- name: Download artifact
uses: actions/download-artifact@v2
with:
name: name-of-build
- name: Release image
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。