1# For testing, you can set variables in your repo (Repo -> Settings -> 2# Security -> Actions -> Variables) to restrict the tests that are run 3# The supported variables are: 4# 5# RUN_ONLY_TARGET_CONFIG: Run only the single matching target and config, 6# separated by spaces, eg "ubuntu-latest default". All other tests will 7# fail immediately. 8# 9# LTESTS: Override the set of tests run. 10 11name: CI VM 12on: 13 push: 14 paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/workflows/vm.yml' ] 15 pull_request: 16 paths: [ '**.c', '**.h', '**.m4', '**.sh', '**/Makefile.in', 'configure.ac', '.github/configs', '.github/workflows/vm.yml' ] 17 18jobs: 19 dragonflybsd: 20 name: "dragonflybsd-${{ matrix.target }}" 21 if: github.repository != 'openssh/openssh-portable-selfhosted' 22 strategy: 23 fail-fast: false 24 matrix: 25 # First we test all OSes in the default configuration. 26 target: 27 - "6.4.2" 28 config: [default] 29 runs-on: ubuntu-latest 30 steps: 31 - uses: actions/checkout@main 32 - name: autoreconf 33 run: sh -c autoreconf 34 35 - name: start DragonFlyBSD ${{ matrix.target }} VM 36 uses: vmactions/dragonflybsd-vm@v1 37 with: 38 release: ${{ matrix.target }} 39 usesh: true 40 prepare: | 41 pkg install -y sudo 42 pw useradd builder -m 43 echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/usr/local/etc/sudoers 44 mkdir -p /var/empty /usr/local/etc 45 cp $GITHUB_WORKSPACE/moduli /usr/local/etc/moduli 46 47 - name: set file perms 48 shell: dragonflybsd {0} 49 run: cd $GITHUB_WORKSPACE && chown -R builder . 50 - name: configure 51 shell: dragonflybsd {0} 52 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure --with-ssl-dir=/usr/local 53 - name: make clean 54 shell: dragonflybsd {0} 55 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 56 - name: make 57 shell: dragonflybsd {0} 58 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 59 - name: make tests 60 shell: dragonflybsd {0} 61 run: | 62 cd $GITHUB_WORKSPACE 63 sudo -u builder env SUDO=sudo make tests 64 65 - name: "PAM: configure" 66 shell: dragonflybsd {0} 67 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure --with-ssl-dir=/usr/local --with-pam 68 - name: "PAM: make clean" 69 shell: dragonflybsd {0} 70 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 71 - name: "PAM: make" 72 shell: dragonflybsd {0} 73 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 74 - name: "PAM: make tests" 75 shell: dragonflybsd {0} 76 run: | 77 cd $GITHUB_WORKSPACE 78 sudo -u builder env SUDO=sudo SSHD_CONFOPTS="UsePam yes" make tests 79 80 freebsd: 81 name: "freebsd-${{ matrix.target }}" 82 if: github.repository != 'openssh/openssh-portable-selfhosted' 83 strategy: 84 fail-fast: false 85 matrix: 86 # First we test all OSes in the default configuration. 87 target: 88 - "13.5" 89 - "14.3" 90 # - "15.0" # "pkg" breaks with a libutil.so error... 91 config: [default] 92 runs-on: ubuntu-latest 93 steps: 94 - uses: actions/checkout@main 95 - name: autoreconf 96 run: sh -c autoreconf 97 98 - name: start FreeBSD ${{ matrix.target }} VM 99 uses: vmactions/freebsd-vm@v1 100 with: 101 release: ${{ matrix.target }} 102 usesh: true 103 prepare: | 104 pkg install -y sudo 105 pw useradd builder -m 106 echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/usr/local/etc/sudoers 107 mkdir -p /var/empty /usr/local/etc 108 cp $GITHUB_WORKSPACE/moduli /usr/local/etc/moduli 109 110 - name: set file perms 111 shell: freebsd {0} 112 run: cd $GITHUB_WORKSPACE && chown -R builder . 113 - name: configure 114 shell: freebsd {0} 115 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure 116 - name: make clean 117 shell: freebsd {0} 118 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 119 - name: make 120 shell: freebsd {0} 121 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 122 - name: make tests 123 shell: freebsd {0} 124 run: | 125 cd $GITHUB_WORKSPACE 126 sudo -u builder env SUDO=sudo make tests 127 128 - name: "PAM: configure" 129 shell: freebsd {0} 130 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure --with-pam 131 - name: "PAM: make clean" 132 shell: freebsd {0} 133 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 134 - name: "PAM: make" 135 shell: freebsd {0} 136 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 137 - name: "PAM: make tests" 138 shell: freebsd {0} 139 run: | 140 cd $GITHUB_WORKSPACE 141 sudo -u builder env SUDO=sudo SSHD_CONFOPTS="UsePam yes" make tests 142 143 144 netbsd: 145 name: "netbsd-${{ matrix.target }}" 146 if: github.repository != 'openssh/openssh-portable-selfhosted' 147 strategy: 148 fail-fast: false 149 matrix: 150 # First we test all OSes in the default configuration. 151 target: 152 - "9.0" 153 - "9.4" 154 - "10.0" 155 - "10.1" 156 config: [default] 157 runs-on: ubuntu-latest 158 steps: 159 - uses: actions/checkout@main 160 - name: autoreconf 161 run: sh -c autoreconf 162 163 - name: start NetBSD ${{ matrix.target }} VM 164 uses: vmactions/netbsd-vm@v1 165 with: 166 release: ${{ matrix.target }} 167 usesh: true 168 prepare: | 169 /usr/sbin/pkg_add sudo 170 /usr/sbin/useradd -m builder 171 echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/usr/pkg/etc/sudoers 172 mkdir -p /var/empty /usr/local/etc 173 cp $GITHUB_WORKSPACE/moduli /usr/local/etc/moduli 174 175 - name: set file perms 176 shell: netbsd {0} 177 run: cd $GITHUB_WORKSPACE && /sbin/chown -R builder . 178 - name: configure 179 shell: netbsd {0} 180 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure 181 - name: make clean 182 shell: netbsd {0} 183 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 184 - name: make 185 shell: netbsd {0} 186 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 187 - name: make tests 188 shell: netbsd {0} 189 run: | 190 cd $GITHUB_WORKSPACE 191 sudo -u builder env SUDO=sudo make tests 192 193 - name: "PAM: configure" 194 shell: netbsd {0} 195 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure --with-pam 196 - name: "PAM: make clean" 197 shell: netbsd {0} 198 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 199 - name: "PAM: make" 200 shell: netbsd {0} 201 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 202 - name: "PAM: make tests" 203 shell: netbsd {0} 204 run: | 205 cd $GITHUB_WORKSPACE 206 sudo -u builder env SUDO=sudo SSHD_CONFOPTS="UsePam yes" make tests 207 208 209 ominios: 210 name: "omnios-${{ matrix.target }}" 211 if: github.repository != 'openssh/openssh-portable-selfhosted' 212 strategy: 213 fail-fast: false 214 matrix: 215 # First we test all OSes in the default configuration. 216 target: 217 - "r151054" 218 config: [default] 219 runs-on: ubuntu-latest 220 steps: 221 - uses: actions/checkout@main 222 - name: autoreconf 223 run: sh -c autoreconf 224 225 - name: start OmniOS ${{ matrix.target }} VM 226 uses: vmactions/omnios-vm@v1 227 with: 228 release: ${{ matrix.target }} 229 usesh: true 230 prepare: | 231 set -x 232 pfexec pkg refresh 233 pfexec pkg install build-essential 234 useradd -m builder 235 sed -e "s/^root.*ALL$/root ALL=(ALL) NOPASSWD: ALL/" /etc/sudoers >>/tmp/sudoers 236 mv /tmp/sudoers /etc/sudoers 237 echo "builder ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers 238 mkdir -p /var/empty /usr/local/etc 239 cp $GITHUB_WORKSPACE/moduli /usr/local/etc/moduli 240 241 - name: set file perms 242 shell: omnios {0} 243 run: cd $GITHUB_WORKSPACE && chown -R builder . 244 - name: configure 245 shell: omnios {0} 246 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure 247 - name: make clean 248 shell: omnios {0} 249 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 250 - name: make 251 shell: omnios {0} 252 run: cd $GITHUB_WORKSPACE && sudo -u builder make 253 - name: make tests 254 shell: omnios {0} 255 run: | 256 cd $GITHUB_WORKSPACE 257 sudo -u builder make tests 258 259 260 openbsd: 261 name: "openbsd-${{ matrix.target }}" 262 if: github.repository != 'openssh/openssh-portable-selfhosted' 263 strategy: 264 fail-fast: false 265 matrix: 266 # First we test all OSes in the default configuration. 267 target: 268 - "7.3" 269 - "7.5" 270 - "7.6" 271 - "7.7" 272 config: [default] 273 runs-on: ubuntu-latest 274 steps: 275 - uses: actions/checkout@main 276 - name: autoreconf 277 run: sh -c autoreconf 278 279 - name: start OpenBSD ${{ matrix.target }} VM 280 uses: vmactions/openbsd-vm@v1 281 with: 282 release: ${{ matrix.target }} 283 usesh: true 284 prepare: | 285 env PKG_PATH=https://ftp.openbsd.org/pub/OpenBSD/${{matrix.target}}/packages/amd64 pkg_add sudo-- 286 useradd -m builder 287 echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers 288 mkdir -p /var/empty /usr/local/etc 289 cp $GITHUB_WORKSPACE/moduli /usr/local/etc/moduli 290 291 - name: set file perms 292 shell: openbsd {0} 293 run: cd $GITHUB_WORKSPACE && chown -R builder . 294 - name: configure 295 shell: openbsd {0} 296 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure 297 - name: make clean 298 shell: openbsd {0} 299 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 300 - name: make 301 shell: openbsd {0} 302 run: cd $GITHUB_WORKSPACE && sudo -u builder make -j4 303 - name: make tests 304 shell: openbsd {0} 305 run: | 306 cd $GITHUB_WORKSPACE 307 sudo -u builder env SUDO=sudo make tests 308 309 310 solaris: 311 name: "solaris-${{ matrix.target }}" 312 if: github.repository != 'openssh/openssh-portable-selfhosted' 313 strategy: 314 fail-fast: false 315 matrix: 316 # First we test all OSes in the default configuration. 317 target: 318 - "11.4-gcc" 319 config: [default] 320 runs-on: ubuntu-latest 321 steps: 322 - uses: actions/checkout@main 323 - name: autoreconf 324 run: sh -c autoreconf 325 326 - name: start Solaris ${{ matrix.target }} VM 327 uses: vmactions/solaris-vm@v1 328 with: 329 release: ${{ matrix.target }} 330 usesh: true 331 prepare: | 332 set -x 333 useradd -m builder 334 sed -e "s/^root.*ALL$/root ALL=(ALL) NOPASSWD: ALL/" /etc/sudoers >>/tmp/sudoers 335 mv /tmp/sudoers /etc/sudoers 336 echo "builder ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers 337 mkdir -p /var/empty /usr/local/etc 338 cp $GITHUB_WORKSPACE/moduli /usr/local/etc/moduli 339 340 - name: set file perms 341 shell: solaris {0} 342 run: cd $GITHUB_WORKSPACE && chown -R builder . 343 - name: configure 344 shell: solaris {0} 345 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure 346 - name: make clean 347 shell: solaris {0} 348 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 349 - name: make 350 shell: solaris {0} 351 run: cd $GITHUB_WORKSPACE && sudo -u builder make 352 - name: make tests 353 shell: solaris {0} 354 run: | 355 cd $GITHUB_WORKSPACE 356 sudo -u builder make tests 357 358 - name: "PAM: configure" 359 shell: solaris {0} 360 run: cd $GITHUB_WORKSPACE && sudo -u builder ./configure --with-pam 361 - name: "PAM: make clean" 362 shell: solaris {0} 363 run: cd $GITHUB_WORKSPACE && sudo -u builder make clean 364 - name: "PAM: make" 365 shell: solaris {0} 366 run: cd $GITHUB_WORKSPACE && sudo -u builder make 367 - name: "PAM: make tests" 368 shell: solaris {0} 369 run: | 370 cd $GITHUB_WORKSPACE 371 sudo -u builder make tests 372