使用语义发布推送到存储库并使用 GitHub 操作在其他作业中检出

Pushing to repository with semantic-release and checkout out in other job with GitHub Actions

我们正在使用 GitHub 操作来自动发布我们的应用程序。为此,我们在下一步中调用 semantic-release in our CI pipeline and then generate the binaries with electron-builder。我们需要 MacOS 的二进制文件,Windows 和 Linux。可悲的是,为此我们需要两个不同的工作,因为我们一个工作必须 运行 在 macos-latest (签署 MacOS 构建)和另一个在 ubuntu-latest (因为 Linux build 在 macos-latest 上不起作用...转换主图标时出现一些问题)。

出现的问题是第一个作业中的 semantic-release 步骤更新 package.json 并将更改推送到 GitHub 存储库。然后它创建 MacOS 和 Windows 二进制文件。之后 Linux 作业开始,检出存储库并创建其二进制文件。但是,它仍然在旧版本号上运行(语义发布之前的版本号创建了一个新版本)。

如何确保第二个作业确实具有第一个作业中推送的 git 存储库修订版?

这是操作的 yaml 文件(删除了环境变量映射):

name: Release

on:
    push:
        branches:
          - master

jobs:
    release:
        runs-on: macos-latest

        strategy:
            matrix:
                node-version: [10.x]

        steps:
            - uses: actions/checkout@v2
            - name: Use Node.js ${{ matrix.node-version }}
              uses: actions/setup-node@v1
              with:
                  node-version: ${{ matrix.node-version }}
            - name: install
              run: npm ci
            - name: Release
              run: npm run semantic-release || true
            - name: Build
              run: npm run build
            - name: Publish macOS
              run: npm run publish:mac
            - name: Publish Windows
              run: npm run publish:win
    release-linux:
        needs: release
        runs-on: ubuntu-latest

        strategy:
            matrix:
                node-version: [10.x]

        steps:
            - uses: actions/checkout@v2
            - name: Use Node.js ${{ matrix.node-version }}
              uses: actions/setup-node@v1
              with:
                  node-version: ${{ matrix.node-version }}
            - name: install
              run: npm ci
            - name: Release
              run: npm run semantic-release || true
            - name: Build
              run: npm run build
            - name: Install Snapcraft
              uses: samuelmeuli/action-snapcraft@v1
              with:
                snapcraft_token: ${{ secrets.snapcraft_token }}
            - name: Publish Linux
              run: npm run publish:linux

我终于找到了如何让它工作,而且真的很简单:

第二个作业(linux 版本)只需像这样检查 master。如果您不指定分支,它将始终检查触发整个工作流程的提交。但是如果你指定 master,它会从 master 那里获取 must recent commit(被上一个作业修改过的那个)。

- uses: actions/checkout@v2
  with:
    ref: 'master'