Test on SHR (#15)
* Test on SHR * Fix name? Maybe? * Restore proper Bash syntax * Simplify build * Pin to Isaiah * Update to checktout v4 * Bring back the caching * Set plugin path locally * Separate jobs, just so I can handle this * Allow easier target switching * Test just qemu * Constrain HTTP ports * Prevent resource collision for network * Re-enable building all * Try only vbox
This commit is contained in:
+13
-30
@@ -9,21 +9,21 @@ name: Build the boxes
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
PACKER_PLUGIN_PATH: "~/.config/packer/plugins"
|
||||
PACKER_PLUGIN_PATH: ".config/packer/plugins"
|
||||
|
||||
jobs:
|
||||
collect:
|
||||
name: Discover distros
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
distros: ${{ steps.distros.outputs.distros }}
|
||||
boxen: ${{ steps.distros.outputs.some }}
|
||||
build: ${{ steps.time.outputs.time }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3
|
||||
cache: pip
|
||||
@@ -34,7 +34,8 @@ jobs:
|
||||
run: |-
|
||||
set -exo pipefail
|
||||
pip install xonsh PyYAML
|
||||
echo "distros=$(xonsh build.xsh -a --list)" >> "$GITHUB_OUTPUT"
|
||||
echo "all=$(xonsh build.xsh -a --list)" >> "$GITHUB_OUTPUT"
|
||||
echo "some=$(xonsh build.xsh -b virtualbox-iso.amd64 -a --list)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Find timestamp for versioning
|
||||
id: time
|
||||
@@ -43,34 +44,16 @@ jobs:
|
||||
format: 'YYYY.MM.DD.HH'
|
||||
|
||||
build:
|
||||
name: Build box
|
||||
name: Build boxes
|
||||
runs-on: ${{ matrix.runner }}
|
||||
needs:
|
||||
- collect
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson( needs.collect.outputs.distros ) }}
|
||||
matrix: ${{ fromJson( needs.collect.outputs.boxen ) }}
|
||||
steps:
|
||||
- name: Checkout project
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install Packer and related tools
|
||||
uses: ./.github/actions/install_packer
|
||||
|
||||
- name: Clear disk space
|
||||
uses: greg-hellings/make-space@main
|
||||
|
||||
- name: Output tool versions
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
packer -version
|
||||
if $(type qemu-system-x86_64); then
|
||||
qemu-system-x86_64 -version
|
||||
fi
|
||||
if $(type VBoxManage); then
|
||||
VBoxManage --version;
|
||||
fi
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Run generator, if necessary
|
||||
shell: bash
|
||||
@@ -83,7 +66,7 @@ jobs:
|
||||
uses: actions/cache/restore@v3
|
||||
id: cache-restore
|
||||
with:
|
||||
path: ${{ runner.os == 'Linux' && '~/.config/packer/plugins' || '/usr/local/bin/github.com' }}
|
||||
path: .config/packer/plugins
|
||||
key: ${{ runner.os }}-${{ hashFiles('sources/build.pkr.hcl') }}
|
||||
|
||||
- name: Install Packer plugins
|
||||
@@ -94,7 +77,7 @@ jobs:
|
||||
uses: actions/cache/save@v3
|
||||
if: always()
|
||||
with:
|
||||
path: ${{ runner.os == 'Linux' && '~/.config/packer/plugins' || '/usr/local/bin/github.com' }}
|
||||
path: .config/packer/plugins
|
||||
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
|
||||
|
||||
- name: Build
|
||||
@@ -104,16 +87,16 @@ jobs:
|
||||
# Add a retry in case something bogus like a network failure happens
|
||||
packer build -only="${{ matrix.builder }}" \
|
||||
-var-file="${{ matrix.distro }}" \
|
||||
-var "qemu_accelerator=tcg" \
|
||||
-var "build=${{ needs.collect.outputs.build }}" \
|
||||
-var "cpu_model=Skylake-Client" \
|
||||
-var "cpus=2" \
|
||||
-var "memory=4096" \
|
||||
-var "http_port_min=${HTTP_PORT_MIN:-8000}" \
|
||||
-var "http_port_max=${HTTP_PORT_MAX:-9000}" \
|
||||
${{ github.event_name != 'release' && '-except=upload' || '' }} \
|
||||
sources
|
||||
env:
|
||||
VAGRANT_CLOUD_TOKEN: ${{ secrets.VAGRANT_CLOUD_TOKEN }}
|
||||
PACKER_LOG: 1 #${{ contains(matrix.needs_timeout, matrix.distro) && '0' || '0' }}
|
||||
PACKER_LOG: 1
|
||||
|
||||
- name: Upload artifact
|
||||
if: ${{ failure() }}
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ class Provider:
|
||||
@property
|
||||
def runner(self) -> str:
|
||||
if self.name == "qemu":
|
||||
return "ubuntu-latest"
|
||||
return "isaiah"
|
||||
elif self.name.startswith("virtualbox"):
|
||||
return "macos-12"
|
||||
return "isaiah"
|
||||
return None
|
||||
|
||||
@@ -74,6 +74,16 @@ variable "http_directory" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "http_port_min" {
|
||||
type = number
|
||||
default = 8000
|
||||
}
|
||||
|
||||
variable "http_port_max" {
|
||||
type = number
|
||||
default = 9000
|
||||
}
|
||||
|
||||
variable "cpu_model" {
|
||||
type = string
|
||||
default = "host"
|
||||
|
||||
@@ -28,16 +28,16 @@ source "qemu" "amd64" {
|
||||
|
||||
qemuargs = [
|
||||
#["-chardev", "stdio,id=char0,logfile=serial-output-qemu-${var.arch}-${var.distro}-${var.version},signal=off"],
|
||||
#["-serial", "chardev:char0"],
|
||||
["-chardev", "socket,host=localhost,port=9876,server=on,wait=off,id=qga0"],
|
||||
["-chardev", "socket,path=${local.name}.qga.sock,server=on,wait=off,id=qga0"],
|
||||
["-device", "virtio-serial"],
|
||||
["-device", "virtserialport,chardev=qga0,name=org.qemu.guest_agent.0"],
|
||||
["-qmp", "tcp:localhost:4444,server,wait=off"],
|
||||
]
|
||||
accelerator = var.qemu_accelerator
|
||||
|
||||
http_content = var.http_files
|
||||
http_directory = var.http_directory
|
||||
http_port_min = var.http_port_min
|
||||
http_port_max = var.http_port_max
|
||||
cd_content = var.cd_content
|
||||
cd_files = var.cd_files
|
||||
cd_label = var.cd_label
|
||||
|
||||
Reference in New Issue
Block a user