Add Artifacts to Current Release #5
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: Add Artifacts to Current Release | |
# Controls when the action will run. | |
on: | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
release: | |
name: 'Build and upload artifacts' | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
env: | |
CHOOSENIM_CHOOSE_VERSION: stable | |
CHOOSENIM_NO_ANALYTICS: 1 | |
steps: | |
# Cancel other actions of the same type that might be already running | |
- name: 'Cancel similar actions in progress' | |
uses: styfle/cancel-workflow-action@0.6.0 | |
with: | |
access_token: ${{ github.token }} | |
# Detects OS and provide Nim-friendly OS identifiers | |
- name: Detect current OS | |
id: os | |
run: echo "::set-output name=id::${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-latest' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}" | |
# Checks out the repository | |
- uses: actions/checkout@v2 | |
# Installs libraries | |
- name: install musl-gcc | |
run: sudo apt-get install -y musl-tools | |
if: matrix.os == 'ubuntu-latest' | |
# Sets path (Linux, macOS) | |
- name: Update $PATH | |
shell: bash | |
run: | | |
echo "$HOME/.nimble/bin" >> $GITHUB_PATH | |
echo $GITHUB_WORKSPACE >> $GITHUB_PATH | |
# Sets path (Windows) | |
- name: Update %PATH% | |
run: | | |
echo "${HOME}/.nimble/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
echo "${GITHUB_WORKSPACE}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
echo "C:\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
if: matrix.os == 'windows-latest' | |
# Install the Nim compiler | |
- name: Install Nim | |
run: | | |
curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh | |
sh init.sh -y | |
# Temporary Windows-specific fix (missing certificates for nimble) | |
- name: Install cert (temporary fix, windows only) | |
run: | | |
curl https://curl.se/ca/cacert.pem -L -o cacert.pem | |
if: matrix.os == 'windows-latest' | |
# Build for Linux | |
- name: Build (Linux) | |
run: | | |
nimble install -y nifty | |
nifty install | |
nifty build discount | |
nimble build -v -y --passL:-static -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --gc:orc --opt:size | |
if: matrix.os == 'ubuntu-latest' | |
# Build for macOS/Windows | |
- name: Build (macOS, Windows) | |
shell: bash | |
run: | | |
nimble install -y nifty | |
nifty install | |
nifty build discount | |
nimble build -v -y -d:release --gc:orc --opt:size | |
if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest' | |
# Retrieve ID and Name of the current (draft) release | |
- name: 'Get current release' | |
id: current-release | |
uses: InsonusK/get-latest-release@v1.0.1 | |
with: | |
myToken: ${{ github.token }} | |
exclude_types: 'release' | |
view_top: 1 | |
# Package the resulting Linux/macOS binary | |
- name: Create artifact (Linux, macOS) | |
shell: bash | |
run: zip hastyscribe_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip hastyscribe | |
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' | |
# Package the resulting Windows binary | |
- name: Create artifact (Windows) | |
run: Compress-Archive -Path hastyscribe.exe -DestinationPath hastyscribe_${{steps.current-release.outputs.tag_name}}_windows_x64.zip | |
if: matrix.os == 'windows-latest' | |
# Upload artifacts to current draft release | |
- name: 'Upload to current release' | |
uses: xresloader/upload-to-github-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
file: 'hastyscribe_v*.zip' | |
overwrite: true | |
tag_name: ${{steps.current-release.outputs.tag_name}} | |
release_id: ${{steps.current-release.outputs.id }} | |
verbose: true |