This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Release | |
on: push | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
# - windows-latest | |
include: | |
- os: ubuntu-latest | |
image: ubuntu:latest | |
- os: macos-latest | |
image: macos-latest | |
#- os: windows-latest | |
#image: windows-latest | |
steps: | |
- name: Set dummy ACTIONS_RUNTIME_TOKEN and ACTIONS_RUNTIME_URL for act | |
if: ${{ env.ACT }} | |
run: | | |
echo "ACTIONS_RUNTIME_TOKEN=dummy_token" >> $GITHUB_ENV | |
echo "ACTIONS_RUNTIME_URL=https://dummy_url" >> $GITHUB_ENV | |
# - name: Install GCC on Ubuntu | |
# if: matrix.os == 'ubuntu-latest' && ${{env.ACT}} | |
# run: | | |
# apt-get update | |
# apt-get install -y gcc | |
# - name: Install GCC on macOS | |
# if: matrix.os == 'macos-latest' && ${{ env.ACT }} | |
# run: | | |
# brew install gcc | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Build on Linux and macOS | |
run: gcc await.c -o await_${{ matrix.os }} -lpthread | |
- name: Generate autocompletion scripts | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
mkdir -p releases | |
mkdir -p autocompletions | |
./await_${{ matrix.os }} --autocomplete-fish > autocompletions/await.fish | |
./await_${{ matrix.os }} --autocomplete-bash > autocompletions/await.bash | |
./await_${{ matrix.os }} --autocomplete-zsh > autocompletions/await.zsh | |
- name: Upload Binary | |
uses: actions/upload-artifact@v4 | |
with: | |
path: '*' | |
overwrite: true | |
release: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if Release Exists | |
id: check_release | |
run: | | |
gh release view 1.0.5 || echo "Release does not exist" | |
- name: Create or Update Release | |
id: create_update_release | |
if: steps.check_release.outputs.exists == 'false' | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: 1.0.5 | |
release_name: 1.0.5 | |
body: Fixed ctrl-c handling when it's run from bash script | |
draft: false | |
prerelease: false | |
- name: Update Release Archives | |
if: steps.check_release.outputs.exists == 'true' | |
run: | | |
gh release upload 1.0.5 archives/* --clobber | |
- name: Download Artifact | |
uses: actions/download-artifact@v4 | |
- name: Create Archives | |
run: | | |
mkdir -p archives | |
ls -l | |
tree | |
tar -czvf archives/await-1.0.5-aarch64-apple-darwin.tar.gz -C await/releases await-macos-latest | |
tar -czvf archives/await-1.0.5-x86_64-unknown-linux-gnu.tar.gz -C await/releases await-ubuntu-latest | |
- name: Upload Release Artifacts | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
await/archives/* | |
tag_name: 1.0.5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |