Open monocasual opened 4 years ago
Here's what I did:
name: Release (checkers)
on:
push:
tags:
- 'v*'
jobs:
job1:
name: Create Release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
prerelease: false
job2:
name: Build
needs: job1
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- windows-latest
- ubuntu-latest
- macOS-latest
steps:
- uses: actions/checkout@v2
- name: make all
run: |
cd checkers
mkdir build
make all
- name: Create tarball
uses: master-atul/tar-action@v1.0.2
run: |
cd checkers/build
tar -czvf ${{ matrix.os }}.tar.gz *
- name: Upload assets
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.job1.outputs.upload_url }}
asset_path: checkers/build/${{ matrix.os }}.tar.gz
asset_name: ${{ matrix.os }}.tar.gz
asset_content_type: application/gzip
And here’s my version:
Configuration: https://github.com/courselore/courselore/blob/6e1311a852360475714614fa67b94cc4bf38bb1a/.github/workflows/main.yml Example release: https://github.com/courselore/courselore/releases/tag/v0.0.5
It’s similar, but it fixes some small issues that I ran into, for example, the following didn’t work for me:
- name: Create tarball
uses: master-atul/tar-action@v1.0.2
run: |
cd checkers/build
tar -czvf ${{ matrix.os }}.tar.gz *
First, GitHub complained that a step can’t have both uses
and run
. But even if you separate it in two steps, tar -czvf ${{ matrix.os }}.tar.gz *
didn’t work for me on Windows; it complained about file permissions.
In any case, thanks @infinitepr0 for getting me very close to the solution.
I'm setting up a CI environment for a C++ application on three different platforms - Linux, macOS and Windows. My idea is the following:
actions/create-release
) once;Is there a way to pass the
upload_url
variable from job A to the other three jobs? The example in the README file only shows how to do that across steps in the same job.