【问题标题】:How to share code between github actions in the same repository?如何在同一存储库中的 github 操作之间共享代码?
【发布时间】:2020-12-22 02:22:22
【问题描述】:

假设我想要两个工作流 build.yml 和 release.yml 在我的仓库中。第一个应该构建项目(假设使用 CMake),第二个应该构建项目并使用构建的二进制文件创建一个 GitHub Release。

项目构建代码在两个文件之间重复。如何在它们之间共享它,而不是复制粘贴并且必须同时在两个地方手动更新?

我还没有找到一种方法来实现不同工作流之间甚至同一工作流中的作业之间的任何类型的代码共享行为。

【问题讨论】:

    标签: github yaml github-actions


    【解决方案1】:

    选项 1:回答上述问题

    目前没有直接在 github 操作中执行此操作的方法。您需要执行几个步骤才能使其正常工作。

    1. 建立您的形象
    2. 构建完成后上传到 s3 或 artifactory 之类的东西
    3. 在完成之前的工作流程后下载图像。您可以通过从第一个管道触发第二个管道来确保完成工作流
    4. 使用下载工件

    每个 github 操作

    如果您需要访问之前工作流程运行的工件,您需要将工件存储在某处。例如,您可以在工作流程结束时运行脚本,将构建工件存储在 Amazon S3 或 Artifactory 上,然后使用存储服务的 API 在未来的工作流程中检索这些工件。

    Resources

    选项 2: 变通,这样我们就不必处​​理外部服务,而是留在 GitHub 中

    在同一个工作流程中运行两个作业。一项用于构建,另一项用于发布。这里的想法是只有在作业构建成功完成时才运行作业发布。我们还需要使用工件在作业之间传递数据

    Resource

      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
          ...
    

    Resource

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2021-07-22
      • 2017-08-27
      • 2021-04-10
      • 1970-01-01
      • 2018-05-25
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多