.github/workflows/test.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 |
name: Run automated tests
# Controls when the action will run.
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
release:
name: "Run all tests"
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.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-latest' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}" >> $GITHUB_OUTPUT
# 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-latest' || 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-latest'
# 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 -d:ssl -d:useOpenSsl3 --opt:size
if: matrix.os == 'ubuntu-latest'
# Build for macOS/Windows
- name: Build (macOS, Windows)
run: nimble build -y -d:release -d:ssl -d:useOpenSsl3 --opt:size
if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest'
# UPX compress (*nix)
- name: UPX
uses: svenstaro/upx-action@v2
with:
files: |
min
args: --best --force
if: matrix.os == 'macos-latest' || 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-latest'
# Install tests deps
- name: Install tests deps
run: cd ./tests && ../min install
# Test (*nix)
- name: Test
run: ./min tests/all.min
if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'
# Test (Windows)
- name: Test
run: .\min.exe tests/all.min
if: matrix.os == 'windows-latest'
|