ci.yml (3879B)
1 name: ci 2 3 on: 4 pull_request: 5 paths: 6 - '**' 7 - '!.gitignore' 8 - '!LICENSE' 9 - '!TODO' 10 - '!doc/**' 11 - '!examples/**' 12 - '.github/workflows/ci.yml' 13 push: 14 branches: 15 - '*' 16 17 jobs: 18 linux: 19 name: Linux (Ubuntu) 20 runs-on: ubuntu-latest 21 strategy: 22 fail-fast: false 23 steps: 24 - uses: actions/checkout@v4 25 with: 26 submodules: true 27 - name: Build 28 run: | 29 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y 30 - name: Stats 31 run: | 32 ./qjs -qd 33 - name: Run built-in tests 34 run: | 35 make test 36 - name: Run microbench 37 run: | 38 make microbench 39 40 linux-asan: 41 runs-on: ubuntu-latest 42 steps: 43 - uses: actions/checkout@v4 44 with: 45 submodules: true 46 - name: Build 47 run: | 48 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_ASAN=y 49 - name: Run built-in tests 50 env: 51 ASAN_OPTIONS: halt_on_error=1 52 run: | 53 make CONFIG_ASAN=y test 54 55 linux-msan: 56 runs-on: ubuntu-latest 57 steps: 58 - uses: actions/checkout@v4 59 with: 60 submodules: true 61 - name: Build 62 env: 63 CC: clang 64 run: | 65 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_MSAN=y CONFIG_CLANG=y 66 - name: Run built-in tests 67 env: 68 MSAN_OPTIONS: halt_on_error=1 69 run: | 70 make CONFIG_MSAN=y CONFIG_CLANG=y test 71 72 linux-ubsan: 73 runs-on: ubuntu-latest 74 steps: 75 - uses: actions/checkout@v4 76 with: 77 submodules: true 78 - name: Build 79 run: | 80 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_UBSAN=y 81 - name: Run built-in tests 82 env: 83 UBSAN_OPTIONS: halt_on_error=1 84 run: | 85 make CONFIG_UBSAN=y test 86 87 macos: 88 name: macOS 89 runs-on: macos-latest 90 strategy: 91 fail-fast: false 92 steps: 93 - uses: actions/checkout@v4 94 - name: Build 95 run: | 96 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y 97 - name: Stats 98 run: | 99 ./qjs -qd 100 - name: Run built-in tests 101 run: | 102 make test 103 104 macos-asan: 105 runs-on: macos-latest 106 steps: 107 - uses: actions/checkout@v4 108 - name: Build 109 run: | 110 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_ASAN=y 111 - name: Run built-in tests 112 env: 113 ASAN_OPTIONS: halt_on_error=1 114 run: | 115 make CONFIG_ASAN=y test 116 117 macos-ubsan: 118 runs-on: macos-latest 119 steps: 120 - uses: actions/checkout@v4 121 - name: Build 122 run: | 123 make -j$(getconf _NPROCESSORS_ONLN) CONFIG_WERROR=y CONFIG_UBSAN=y 124 - name: Run built-in tests 125 env: 126 UBSAN_OPTIONS: halt_on_error=1 127 run: | 128 make CONFIG_UBSAN=y test 129 130 freebsd: 131 runs-on: ubuntu-latest 132 steps: 133 - uses: actions/checkout@v4 134 - name: Build + test 135 uses: vmactions/freebsd-vm@v1 136 with: 137 usesh: true 138 prepare: | 139 pkg install -y gmake 140 run: | 141 gmake 142 ./qjs -qd 143 gmake test 144 145 qemu-alpine: 146 runs-on: ubuntu-latest 147 148 strategy: 149 fail-fast: false 150 matrix: 151 platform: 152 - i386 153 - arm32v6 154 - arm32v7 155 - arm64v8 156 - s390x 157 158 steps: 159 - uses: actions/checkout@v4 160 with: 161 submodules: recursive 162 - name: Get qemu 163 run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 164 - name: Run tests on ${{ matrix.platform }} 165 run: docker run --rm --interactive --mount type=bind,source=$(pwd),target=/host ${{ matrix.platform }}/alpine sh -c "apk add git patch make gcc libc-dev && cd /host && make test" 166