Skip to content

Add Artifacts to Current Release #5

Add Artifacts to Current Release

Add Artifacts to Current Release #5

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