Skip to content

CI

CI #645

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@v4
- 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:
version:
- '13.3'
- '13.2'
- '13.1'
- '13.0'
- '12.4'
- '12.2'
architecture:
- name: arm64
- name: x86-64
uname: amd64
host:
- name: ubuntu-latest
# /home is symlinked to /usr/home. pwd will return the resolved path.
work_directory: /usr/home/runner/work/action/action
- name: macos-latest
work_directory: /Users/runner/work/action/action
exclude:
- version: '12.2'
architecture: { name: arm64 }
- architecture: { name: arm64 }
host: { name: macos-latest }
include:
- version: '14.0'
architecture: { name: arm64 }
host:
name: ubuntu-latest
work_directory: /home/runner/work/action/action
- version: '14.0'
architecture:
name: x86-64
uname: amd64
host:
name: ubuntu-latest
work_directory: /home/runner/work/action/action
- version: '14.0'
architecture:
name: x86-64
uname: amd64
host:
name: macos-latest
work_directory: /Users/runner/work/action/action
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: test
uses: ./.github/workflows/support/test
with:
name: FreeBSD
architecture: ${{ matrix.architecture.name }}
version: ${{ matrix.version }}
uname_release: ${{ matrix.version}}-RELEASE
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.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-latest
work_directory: /Users/runner/work/action/action
exclude:
- version: '6.8'
architecture: { name: arm64 }
- architecture: { name: arm64 }
host: { name: macos-latest }
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: test
uses: ./.github/workflows/support/test
with:
name: OpenBSD
architecture: ${{ matrix.architecture.name }}
version: ${{ matrix.version }}
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.0'
- '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-latest
work_directory: /Users/runner/work/action/action
exclude:
- version: '9.3'
architecture: { name: arm64 }
- version: '9.2'
architecture: { name: arm64 }
- architecture: { name: arm64 }
host: { name: macos-latest }
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: test
uses: ./.github/workflows/support/test
with:
name: NetBSD
architecture: ${{ matrix.architecture.name }}
version: ${{ matrix.version }}
uname_hardware: ${{ matrix.architecture.uname || matrix.architecture.name }}
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@v4
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@v4
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-latest
steps:
- name: Checkout
uses: actions/checkout@v4
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-latest
steps:
- name: Checkout
uses: actions/checkout@v4
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@v4
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@v4
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@v4
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@v4
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-latest
strategy:
fail-fast: false
matrix:
hypervisor: [qemu, xhyve]
steps:
- name: Checkout
uses: actions/checkout@v4
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-latest
steps:
- name: Checkout
uses: actions/checkout@v4
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