0

我们正在使用 GitHub Action 自动发布我们的应用程序。为此,我们在 CI 管道中调用语义发布,然后在下一步中使用电子生成器生成二进制文件。我们需要 MacOS、Windows 和 Linux 的二进制文件。可悲的是,为此我们需要两个不同的工作,因为我们的工作必须在 macos-latest 上运行(签署 MacOS 构建),另一个在 ubuntu-latest 上运行(因为 Linux 构建在 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

4

1 回答 1

0

我终于找到了如何让这个工作,这真的很容易:

第二个工作(Linux 版本)只需像这样检查 master。如果您不指定分支,它将始终检查触发整个工作流程的提交。但是,如果您指定 master,它将从 master(由上一个作业修改的那个)获得必须最近的提交。

- uses: actions/checkout@v2
  with:
    ref: 'master'
于 2020-09-03T06:03:32.393 回答