使用语义发布推送到存储库并使用 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'
我们正在使用 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'