.github/workflows/add-artifacts-to-current-releases.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 136 137 138 139 |
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.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-13' && 'macosx' || matrix.os == 'windows-2019' && '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-2019'
- 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 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 == 'windows-2019'
# UPX compress (Linux)
- name: UPX
uses: svenstaro/upx-action@v2
with:
files: |
hastysite
args: --best --force
if: matrix.os == 'ubuntu-latest'
# UPX compress (Linux)
- name: UPX
uses: svenstaro/upx-action@v2
with:
files: |
hastysite.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 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-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: "hastysite_v*.zip"
overwrite: true
tag_name: ${{steps.current-release.outputs.tag_name}}
release_id: ${{steps.current-release.outputs.id }}
verbose: true
|