.github/workflows/add-artifacts-to-current-release.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
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
|