.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 129 130 131 132 133 134 135 136 137 |
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 (macosx) - name: UPX uses: svenstaro/upx-action@v2 with: files: | min args: --best --force-macos if: matrix.os == 'macos-13' # 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' |