.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 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 |
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-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/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-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-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-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 -d:ssl -d:useOpenSsl3 --opt:size if: matrix.os == 'ubuntu-latest' # 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-latest' # Build for macOS - name: Build (macOS) run: nimble build -y -d:release -d:ssl -d:useOpenSsl3 --opt:size if: matrix.os == 'macos-13' # 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-latest' - uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 # 1.6.0 id: downloadCaCertPem # Remember to give an ID if you need the output filename name: Fix Windows certs issue https://forum.nim-lang.org/t/7551 with: url: "https://curl.se/ca/cacert.pem" target: . 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-13' || matrix.os == 'ubuntu-latest' # Test (Windows) - name: Test run: .\min.exe tests/all.min if: matrix.os == 'windows-latest' |