fixup! Fix #83: Add support for custom shell #765
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: '*' | |
| tags: v* | |
| pull_request: | |
| branches: | |
| - master | |
| jobs: | |
| build: # make sure build/ci work properly | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: npm install | |
| - run: npm run all | |
| # FreeBSD: # make sure the action works on a clean machine without building | |
| # name: FreeBSD ${{ matrix.architecture.name }} ${{ matrix.version }} on ${{ matrix.host.name }} | |
| # runs-on: ${{ matrix.host.name }} | |
| # timeout-minutes: 5 | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # hostname: [runnervmg1sw1.local] | |
| # version: | |
| # - '15.0' | |
| # - '14.3' | |
| # - '14.2' | |
| # - '14.1' | |
| # - '14.0' | |
| # - '13.4' | |
| # - '13.3' | |
| # - '13.2' | |
| # - '13.1' | |
| # - '13.0' | |
| # - '12.2' | |
| # | |
| # architecture: | |
| # - name: arm64 | |
| # - name: x86-64 | |
| # uname: amd64 | |
| # | |
| # host: | |
| # - name: ubuntu-latest | |
| # work_directory: /home/runner/work/action/action | |
| # | |
| # - name: macos-15-intel | |
| # work_directory: /Users/runner/work/action/action | |
| # | |
| # exclude: | |
| # - version: '12.2' | |
| # architecture: { name: arm64 } | |
| # | |
| # - architecture: { name: arm64 } | |
| # host: { name: macos-15-intel } | |
| # | |
| # include: | |
| # - version: '12.4' | |
| # architecture: { name: arm64 } | |
| # hostname: '' | |
| # host: | |
| # name: ubuntu-latest | |
| # work_directory: /home/runner/work/action/action | |
| # | |
| # - version: '12.4' | |
| # architecture: | |
| # name: x86-64 | |
| # uname: amd64 | |
| # hostname: 'runnervmg1sw1.local' | |
| # host: | |
| # name: ubuntu-latest | |
| # work_directory: /home/runner/work/action/action | |
| # | |
| # - version: '12.4' | |
| # architecture: | |
| # name: x86-64 | |
| # uname: amd64 | |
| # hostname: 'runnervmg1sw1.local' | |
| # host: | |
| # name: macos-15-intel | |
| # work_directory: /Users/runner/work/action/action | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: test | |
| # uses: ./.github/workflows/support/test | |
| # with: | |
| # name: FreeBSD | |
| # architecture: ${{ matrix.architecture.name }} | |
| # version: ${{ matrix.version }} | |
| # hostname: ${{ matrix.hostname }} | |
| # uname_release: ${{ matrix.version}}-RELEASE | |
| # uname_hardware: ${{ matrix.architecture.uname || matrix.architecture.name }} | |
| # work_directory: ${{ matrix.host.work_directory }} | |
| # | |
| # Haiku: | |
| # name: Haiku ${{ matrix.architecture.name }} ${{ matrix.version.name }} on ${{ matrix.host.name }} | |
| # runs-on: ${{ matrix.host.name }} | |
| # timeout-minutes: 5 | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # version: | |
| # - name: 'r1beta5' | |
| # uname: hrev57937 | |
| # | |
| # architecture: | |
| # - name: x86-64 | |
| # uname: x86_64 | |
| # | |
| # host: | |
| # - name: ubuntu-latest | |
| # work_directory: /boot/home/home/runner/work/action/action | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: test | |
| # uses: ./.github/workflows/support/test | |
| # with: | |
| # name: Haiku | |
| # architecture: ${{ matrix.architecture.name }} | |
| # version: ${{ matrix.version.name }} | |
| # hostname: ${{ matrix.hostname }} | |
| # uname_version: ${{ matrix.version.uname }} | |
| # uname_hardware: ${{ matrix.architecture.uname || matrix.architecture.name }} | |
| # work_directory: ${{ matrix.host.work_directory }} | |
| # | |
| # OpenBSD: | |
| # name: OpenBSD ${{ matrix.architecture.name }} ${{ matrix.version }} on ${{ matrix.host.name }} | |
| # runs-on: ${{ matrix.host.name }} | |
| # timeout-minutes: 5 | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # version: | |
| # - '7.8' | |
| # - '7.7' | |
| # - '7.6' | |
| # - '7.5' | |
| # - '7.4' | |
| # - '7.3' | |
| # - '7.2' | |
| # - '7.1' | |
| # - '6.9' | |
| # - '6.8' | |
| # | |
| # architecture: | |
| # - name: arm64 | |
| # - name: x86-64 | |
| # uname: amd64 | |
| # | |
| # host: | |
| # - name: ubuntu-latest | |
| # work_directory: /home/runner/work/action/action | |
| # | |
| # - name: macos-15-intel | |
| # work_directory: /Users/runner/work/action/action | |
| # | |
| # exclude: | |
| # - version: '6.8' | |
| # architecture: { name: arm64 } | |
| # | |
| # - architecture: { name: arm64 } | |
| # host: { name: macos-15-intel } | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: test | |
| # uses: ./.github/workflows/support/test | |
| # with: | |
| # name: OpenBSD | |
| # architecture: ${{ matrix.architecture.name }} | |
| # version: ${{ matrix.version }} | |
| # hostname: ${{ matrix.hostname }} | |
| # uname_hardware: ${{ matrix.architecture.uname || matrix.architecture.name }} | |
| # work_directory: ${{ matrix.host.work_directory }} | |
| # | |
| # NetBSD: | |
| # name: NetBSD ${{ matrix.architecture.name }} ${{ matrix.version }} on ${{ matrix.host.name }} | |
| # runs-on: ${{ matrix.host.name }} | |
| # timeout-minutes: 5 | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # version: | |
| # - '10.1' | |
| # - '10.0' | |
| # - '9.4' | |
| # - '9.3' | |
| # - '9.2' | |
| # | |
| # architecture: | |
| # - name: x86-64 | |
| # uname: amd64 | |
| # | |
| # - name: arm64 | |
| # uname: aarch64 | |
| # | |
| # host: | |
| # - name: ubuntu-latest | |
| # work_directory: /home/runner/work/action/action | |
| # | |
| # - name: macos-15-intel | |
| # work_directory: /Users/runner/work/action/action | |
| # | |
| # exclude: | |
| # - version: '9.4' | |
| # architecture: { name: arm64 } | |
| # | |
| # - version: '9.3' | |
| # architecture: { name: arm64 } | |
| # | |
| # - version: '9.2' | |
| # architecture: { name: arm64 } | |
| # | |
| # - architecture: { name: arm64 } | |
| # host: { name: macos-15-intel } | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: test | |
| # uses: ./.github/workflows/support/test | |
| # with: | |
| # name: NetBSD | |
| # architecture: ${{ matrix.architecture.name }} | |
| # version: ${{ matrix.version }} | |
| # hostname: ${{ matrix.hostname }} | |
| # uname_hardware: ${{ matrix.architecture.uname || matrix.architecture.name }} | |
| # work_directory: ${{ matrix.host.work_directory }} | |
| # | |
| # OmniOS: | |
| # name: OmniOS ${{ matrix.architecture.name }} ${{ matrix.version }} on ${{ matrix.host.name }} | |
| # runs-on: ${{ matrix.host.name }} | |
| # timeout-minutes: 5 | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # hostname: [runnervmg1sw1.local] | |
| # version: | |
| # - 'r151056' | |
| # | |
| # architecture: | |
| # - name: x86-64 | |
| # uname: i86pc | |
| # | |
| # host: | |
| # - name: ubuntu-latest | |
| # work_directory: /home/runner/work/action/action | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: test | |
| # uses: ./.github/workflows/support/test | |
| # with: | |
| # name: OmniOS | |
| # architecture: ${{ matrix.architecture.name }} | |
| # version: ${{ matrix.version }} | |
| # uname_version: ${{ matrix.version }} | |
| # uname_hardware: ${{ matrix.architecture.uname || matrix.architecture.name }} | |
| # hostname: ${{ matrix.hostname }} | |
| # work_directory: ${{ matrix.host.work_directory }} | |
| # | |
| # test-no-env: | |
| # timeout-minutes: 5 | |
| # name: Test without environment variables | |
| # runs-on: ubuntu-latest | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.0' | |
| # shutdown_vm: false | |
| # run: env | sort | |
| # | |
| # test-cpu-count-config: | |
| # timeout-minutes: 5 | |
| # name: Test configuring CPU count | |
| # runs-on: ubuntu-latest | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.1' | |
| # cpu_count: 8 | |
| # shutdown_vm: false | |
| # run: | | |
| # sysctl hw.ncpu | |
| # [ `sysctl -n hw.ncpu` = 8 ] | |
| # | |
| # test-hypervisor-config: | |
| # timeout-minutes: 5 | |
| # name: Test configuring hypervisor | |
| # runs-on: macos-15-intel | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.1' | |
| # hypervisor: qemu | |
| # shutdown_vm: false | |
| # run: sysctl hw.model | |
| # | |
| # - name: Hypervisor should still be running, verify it's QEMU | |
| # run: ps aux | grep -v grep | grep -q qemu | |
| # | |
| # test-custom-vm-image: | |
| # timeout-minutes: 5 | |
| # name: Test custom VM image | |
| # runs-on: macos-15-intel | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: openbsd | |
| # architecture: x86-64 | |
| # version: '7.3' | |
| # image_url: https://github.com/cross-platform-actions/test-custom-image-builder/releases/download/v1.0.0/openbsd-7.3-x86-64.qcow2 | |
| # shutdown_vm: false | |
| # run: test -f /foo | |
| # | |
| # test-cpu-features: | |
| # timeout-minutes: 5 | |
| # name: Test CPU features | |
| # runs-on: ubuntu-latest | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.2' | |
| # hypervisor: qemu | |
| # shutdown_vm: false | |
| # run: dmesg | grep -i avx2 | |
| # | |
| # test-no-vm-shutdown: | |
| # timeout-minutes: 5 | |
| # name: Test not shutting down the VM | |
| # runs-on: ubuntu-latest | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.2' | |
| # hypervisor: qemu | |
| # shutdown_vm: false | |
| # run: true | |
| # | |
| # - name: Verify VM is still running | |
| # run: ps aux | grep -v grep | grep -q qemu | |
| # | |
| # test-vm-shutdown: | |
| # timeout-minutes: 5 | |
| # name: Test shutting down the VM | |
| # runs-on: ubuntu-latest | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.2' | |
| # hypervisor: qemu | |
| # shutdown_vm: true | |
| # run: true | |
| # | |
| # - name: Verify VM is not running | |
| # run: ps aux | grep -v grep | grep -q -v qemu | |
| # | |
| # test-sync-files: | |
| # timeout-minutes: 5 | |
| # name: 'Test sync files: ${{ matrix.data.direction }}' | |
| # runs-on: ubuntu-latest | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # data: | |
| # - direction: runner-to-vm | |
| # run: test -f foo.txt && touch bar.txt | |
| # run_after: '! test -f bar.txt' # The new files from the VM should not sync back | |
| # | |
| # - direction: vm-to-runner | |
| # run: '[ ! -f foo.txt ] && touch bar.txt' | |
| # run_after: 'test -f bar.txt' # The new files from the VM should sync back | |
| # | |
| # - direction: false | |
| # run: '[ ! -f foo.txt ] && touch bar.txt' | |
| # run_after: '! test -f bar.txt' # The new files from the VM should not sync back | |
| # | |
| # - direction: true | |
| # run: test -f foo.txt && touch bar.txt | |
| # run_after: test -f bar.txt | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - run: touch foo.txt | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.2' | |
| # sync_files: ${{ matrix.data.direction }} | |
| # shutdown_vm: false | |
| # run: ${{ matrix.data.run }} | |
| # | |
| # - name: Run after | |
| # run: ${{ matrix.data.run_after }} | |
| # | |
| # multiple-steps: | |
| # timeout-minutes: 5 | |
| # name: Test running the action multiple times | |
| # runs-on: macos-15-intel | |
| # | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # hypervisor: [qemu, xhyve] | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Run action first time | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.2' | |
| # hypervisor: ${{ matrix.hypervisor }} | |
| # shutdown_vm: false | |
| # run: touch foo.txt | |
| # | |
| # - name: Verify VM is still running | |
| # run: ps aux | grep -v grep | grep -q -v qemu | |
| # | |
| # - name: Verify file is synced back | |
| # run: test -f foo.txt | |
| # | |
| # - name: Run action second time | |
| # uses: ./ | |
| # with: | |
| # operating_system: freebsd | |
| # architecture: x86-64 | |
| # version: '13.2' | |
| # hypervisor: qemu | |
| # shutdown_vm: true | |
| # run: test -f foo.txt | |
| # | |
| # openbsd-qemu-macos: | |
| # timeout-minutes: 5 | |
| # name: Test OpenBSD with QEMU on macOS runner | |
| # runs-on: macos-15-intel | |
| # | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v6 | |
| # with: | |
| # persist-credentials: false | |
| # | |
| # - name: Test | |
| # uses: ./ | |
| # with: | |
| # operating_system: openbsd | |
| # architecture: x86-64 | |
| # version: '7.4' | |
| # hypervisor: qemu | |
| # sync_files: false | |
| # shutdown_vm: false | |
| # run: true | |
| shell-mode: | |
| timeout-minutes: 5 | |
| name: Test running the action in shell mode | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: cpa.sh {0} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - shell: bash | |
| run: | | |
| sudo apt update | |
| sudo apt install -y dosfstools rsync fdisk | |
| - name: Start VM | |
| uses: ./ | |
| with: | |
| operating_system: freebsd | |
| architecture: x86-64 | |
| version: '13.2' | |
| hypervisor: qemu | |
| shutdown_vm: false | |
| run: echo "Starting VM" | |
| - name: Verify VM configuration | |
| run: | | |
| uname -a | |
| # [ "$(uname)" = "FreeBSD" ] | |
| # [ "$(uname -r | cut -d- -f1)" = "13.2" ] | |
| # [ "$(uname -m)" = "amd64" ] | |
| # | |
| # - name: Create file in VM | |
| # run: touch shell_mode_test.txt | |
| # | |
| # - name: Check file in subsequent step | |
| # run: test -f shell_mode_test.txt |