xref: /freebsd/crypto/openssh/.github/workflows/vm.yml (revision 644b4646c7acab87dc20d4e5dd53d2d9da152989)
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