如何在两个连续的GitHub操作作业之间传递变量? [英] How to pass variable between two successive GitHub Actions jobs?
本文介绍了如何在两个连续的GitHub操作作业之间传递变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试编写一个工作流,以便使用标记创建工作流填充我的GitHub项目版本。
我已经知道如何创建版本(使用actions/create-release@v1.0.0
)以及如何在版本中推送项目(使用actions/upload-release-asset
)。
但是,因为我正在构建Rust代码,所以我必须在不同的平台上编译它。 显然,对于这一点,我每个平台都有一个工作,我正在努力推动我的人工制品在那个工作中。
但要使推送起作用,我必须使用在另一个作业中运行的actions/create-release@v1.0.0
提供的版本标识符。
因此我的问题是:如何将发布URL从我的发布创建作业传递到将推送项目的作业?
此处提供完整的工作流程:https://github.com/Riduidel/rrss2imap/blob/master/.github/workflows/on_tag.yml
我把它复制到这里
name: Push release artifacts on tag
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
jobs:
Make_GitHub_Release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: true
prerelease: false
Standard_OS_build:
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
# os: [ubuntu-latest, macOS-latest]
steps:
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: actions/checkout@master
# see https://github.com/marketplace/actions/rust-cargo
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --all-features
- uses: olegtarasov/get-tag@v1
- name: Upload matrix release asset
id: upload-release-asset
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Doesn't work, since I can't access the first job from this one
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: rrss2imap_${{ matrix.os }}
asset_path: target/release/rrss2imap
asset_content_type: application/octet-stream
needs: Make_GitHub_Release
Windows_build:
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
steps:
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: actions/checkout@master
# see https://github.com/marketplace/actions/rust-cargo
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --all-features
- uses: olegtarasov/get-tag@v1
- name: Upload Windows asset
id: upload-release-asset
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Doesn't work, since I can't access the first job from this one
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: rrss2imap_${{ matrix.os }}
asset_path: target/release/rrss2imap.exe
asset_content_type: application/vnd.microsoft.portable-executable
needs: Make_GitHub_Release
Cross_build_for_Raspbian:
name: Build for Raspbian
runs-on: ubuntu-latest
steps:
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: armv7-unknown-linux-gnueabihf
override: true
- uses: actions/checkout@master
# see https://github.com/marketplace/actions/rust-cargo
- uses: actions-rs/cargo@v1
with:
use-cross: true
command: build
args: --release --all-features
- uses: olegtarasov/get-tag@v1
- name: Upload matrix release asset
id: upload-release-asset
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Doesn't work, since I can't access the first job from this one
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: rrss2imap_${{ matrix.os }}
asset_path: target/release/rrss2imap
asset_content_type: application/octet-stream
needs: Make_GitHub_Release
推荐答案
嗯,似乎有更好的方法。
创建版本时,将发送标准GitHubrelease event。
因此可以创建使用此事件触发构件上载的作业。 希望发布事件已all required elements。
但是,请注意,您必须使用具有repo
权限集的GitHub令牌!
这篇关于如何在两个连续的GitHub操作作业之间传递变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文