Skip to content

Add artifacts to current release #32

Add artifacts to current release

Add artifacts to current release #32

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-2019
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.9.1
with:
access_token: ${{ github.token }}
# Detects OS and provide Nim-friendly OS identifiers
- name: Detect current OS
id: os
run: echo "os=${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-13' && 'macosx' || matrix.os == 'windows-2019' && 'windows'}}" >> $GITHUB_OUTPUT
# Checks out the repository
- uses: actions/checkout@v2
# 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
if: matrix.os == 'windows-2019'
# Installs libraries
- name: install musl-gcc
run: sudo apt-get install -y musl-tools
if: matrix.os == 'ubuntu-latest'
- name: Setup Msys2
if: matrix.os == 'windows-2019'
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
- name: Install Nim
uses: iffy/install-nim@v4.5.0
# Build for Linux
- name: Build (Linux)
run: nimble build -v -y -d:release --gcc.exe:musl-gcc --mm:refc --gcc.linkerexe:musl-gcc -d:ssl --opt:size min
if: matrix.os == 'ubuntu-latest'
# Build for macOS
- name: Build (macOS)
run: nimble build -v -y -d:release -d:ssl --opt:size --mm:refc min
if: matrix.os == 'macos-13'
# Build for Windows
- name: Build (Windows)
shell: msys2 {0}
run: nimble build -v -y -d:release --mm:refc --opt:size -d:ssl --gcc.exe:x86_64-w64-mingw32-gcc --gcc.linkerexe:x86_64-w64-mingw32-gcc min
if: matrix.os == 'windows-2019'
# UPX compress (Linux)
- name: UPX
uses: svenstaro/upx-action@v2
with:
files: |
min
args: --best --force
if: matrix.os == 'ubuntu-latest'
# UPX compress (Windows)
- name: UPX
uses: svenstaro/upx-action@v2
with:
files: |
min.exe
args: --best --force
if: matrix.os == 'windows-2019'
# 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)
run: zip min_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.os}}_x64.zip min
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-13'
# Package the resulting Windows binary
- name: Create artifact (Windows)
run: Compress-Archive -Path min.exe -DestinationPath min_${{steps.current-release.outputs.tag_name}}_windows_x64.zip
if: matrix.os == 'windows-2019'
# 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: "min_v*.zip"
overwrite: true
tag_name: ${{steps.current-release.outputs.tag_name}}
release_id: ${{steps.current-release.outputs.id }}
verbose: true