Skip to content

fixup! Fix #83: Add support for custom shell #765

fixup! Fix #83: Add support for custom shell

fixup! Fix #83: Add support for custom shell #765

Workflow file for this run

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