Add artifacts to current release #13
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-13 | |
- 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/[email protected] | |
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-13' && '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 | |
run: echo "$HOME/.nimble/bin" >> $GITHUB_PATH | |
if: matrix.os == 'macos-13' || matrix.os == 'ubuntu-latest' | |
# 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' | |
- name: Setup Msys2 | |
if: matrix.os == 'windows-latest' | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
release: true | |
update: true | |
path-type: inherit | |
install: >- | |
base-devel | |
autotools | |
mingw-w64-x86_64-perl-locale-maketext | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-autotools | |
# Install the Nim compiler and dependencies | |
- name: Install Nim and deps | |
run: | | |
curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh | |
sh init.sh -y | |
# Build for Linux | |
- name: Build (Linux) | |
run: nimble build -y -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --mm:refc --opt:size | |
if: matrix.os == 'ubuntu-latest' | |
# Build for macOS | |
- name: Build (macOs) | |
run: nimble build -y -d:release --opt:size --mm:refc | |
if: matrix.os == 'macos-13' | |
# Build for Windows | |
- name: Build (Windows) | |
run: nimble build -v -y -d:release --mm:refc --opt:size --gcc.exe:x86_64-w64-mingw32-gcc --gcc.linkerexe:x86_64-w64-mingw32-gcc | |
if: matrix.os == matrix.os == 'windows-latest' | |
# UPX compress (Linux) | |
- name: UPX | |
uses: svenstaro/upx-action@v2 | |
with: | |
files: | | |
hastysite | |
args: --best --force | |
if: matrix.os == 'ubuntu-latest' | |
# UPX compress (Windows) | |
- name: UPX | |
uses: svenstaro/upx-action@v2 | |
with: | |
files: | | |
hastysite.exe | |
args: --best --force | |
if: matrix.os == 'windows-latest' | |
# Retrieve ID and Name of the current (draft) release | |
- name: "Get current release" | |
id: current-release | |
uses: InsonusK/[email protected] | |
with: | |
myToken: ${{ github.token }} | |
exclude_types: "release" | |
view_top: 1 | |
# Package the resulting Linux/macOS binary | |
- name: Create artifact (Linux, macOS) | |
run: zip hastysite_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip hastysite | |
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-13' | |
# Package the resulting Windows binary | |
- name: Create artifact (Windows) | |
run: Compress-Archive -Path hastysite.exe -DestinationPath hastysite_${{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: "hastysite_v*.zip" | |
overwrite: true | |
tag_name: ${{steps.current-release.outputs.tag_name}} | |
release_id: ${{steps.current-release.outputs.id }} | |
verbose: true |