我们正在使用 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