xref: /freebsd/crypto/openssh/.github/workflows/upstream.yml (revision 0fdf8fae8b569bf9fff3b5171e669dcd7cf9c79e)
119261079SEd Mastename: Upstream self-hosted
219261079SEd Maste
319261079SEd Masteon:
419261079SEd Maste  push:
5f374ba41SEd Maste    branches: [ master ]
6*0fdf8faeSEd Maste    paths: [ '**.c', '**.h', '**.sh', '.github/configs', '.github/workflows/upstream.yml' ]
719261079SEd Maste
819261079SEd Mastejobs:
919261079SEd Maste  selfhosted:
10*0fdf8faeSEd Maste    name: "upstream ${{ matrix.target }} ${{ matrix.config }}"
1119261079SEd Maste    if: github.repository == 'openssh/openssh-portable-selfhosted'
12f374ba41SEd Maste    runs-on: 'libvirt'
1319261079SEd Maste    env:
14*0fdf8faeSEd Maste      DEBUG_ACTIONS: true
15*0fdf8faeSEd Maste      EPHEMERAL: true
16f374ba41SEd Maste      HOST: 'libvirt'
17f374ba41SEd Maste      TARGET_HOST: ${{ matrix.target }}
18f374ba41SEd Maste      TARGET_CONFIG: ${{ matrix.config }}
19*0fdf8faeSEd Maste      TARGET_DOMAIN: ${{ format('{0}-{1}-{2}', matrix.target, matrix.config, github.run_id) || matrix.target }}
2019261079SEd Maste    strategy:
2119261079SEd Maste      fail-fast: false
2219261079SEd Maste      matrix:
23f374ba41SEd Maste        target: [ obsdsnap, obsdsnap-i386 ]
24f374ba41SEd Maste        config: [ default, without-openssl, ubsan ]
2519261079SEd Maste    steps:
26*0fdf8faeSEd Maste    - name: unmount stale workspace
27*0fdf8faeSEd Maste      run: fusermount -u ${GITHUB_WORKSPACE} || true
28*0fdf8faeSEd Maste      working-directory: ${{ runner.temp }}
2919261079SEd Maste    - name: shutdown VM if running
3019261079SEd Maste      run: vmshutdown
31f374ba41SEd Maste      working-directory: ${{ runner.temp }}
32f374ba41SEd Maste    - uses: actions/checkout@main
3319261079SEd Maste    - name: startup VM
3419261079SEd Maste      run: vmstartup
35f374ba41SEd Maste      working-directory: ${{ runner.temp }}
36*0fdf8faeSEd Maste    - name: copy and mount workspace
37*0fdf8faeSEd Maste      run: sshfs_mount
38*0fdf8faeSEd Maste      working-directory: ${{ runner.temp }}
3919261079SEd Maste    - name: update source
4019261079SEd Maste      run: vmrun "cd /usr/src && cvs up -dPA usr.bin/ssh regress/usr.bin/ssh"
4119261079SEd Maste    - name: make clean
42f374ba41SEd Maste      run: vmrun "cd /usr/src/usr.bin/ssh && make obj && make clean && cd /usr/src/regress/usr.bin/ssh && make obj && make clean && sudo chmod -R g-w /usr/src /usr/obj"
4319261079SEd Maste    - name: make
44f374ba41SEd Maste      run: vmrun "cd /usr/src/usr.bin/ssh && case ${{ matrix.config }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
4519261079SEd Maste    - name: make install
46*0fdf8faeSEd Maste      run: vmrun "cd /usr/src/usr.bin/ssh && sudo make install && sudo /etc/rc.d/sshd -f restart"
4738a52bd3SEd Maste    - name: make tests`
48f374ba41SEd Maste      run: vmrun "cd /usr/src/regress/usr.bin/ssh && case ${{ matrix.config }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
4938a52bd3SEd Maste      env:
5038a52bd3SEd Maste        SUDO: sudo
511323ec57SEd Maste      timeout-minutes: 300
5219261079SEd Maste    - name: save logs
5319261079SEd Maste      if: failure()
54f374ba41SEd Maste      uses: actions/upload-artifact@main
5519261079SEd Maste      with:
56f374ba41SEd Maste        name: ${{ matrix.target }}-${{ matrix.config }}-logs
5719261079SEd Maste        path: |
58f374ba41SEd Maste          /usr/obj/regress/usr.bin/ssh/obj/*.log
594d3fc8b0SEd Maste          /usr/obj/regress/usr.bin/ssh/obj/log/*
60*0fdf8faeSEd Maste    - name: unmount workspace
61*0fdf8faeSEd Maste      if: always()
62*0fdf8faeSEd Maste      run: fusermount -u ${GITHUB_WORKSPACE} || true
63*0fdf8faeSEd Maste      working-directory: ${{ runner.temp }}
6419261079SEd Maste    - name: shutdown VM
6519261079SEd Maste      if: always()
6619261079SEd Maste      run: vmshutdown
67f374ba41SEd Maste      working-directory: ${{ runner.temp }}
68