Skip to content

Build ISO on selfhosted runner (ROCm, gui) #10

Build ISO on selfhosted runner (ROCm, gui)

Build ISO on selfhosted runner (ROCm, gui) #10

name: Build ISO on selfhosted runner (ROCm, gui)
on:
workflow_dispatch:
jobs:
vm-start:
if: always()
runs-on: ubuntu-latest
steps:
- name: Save ssh configuration
run: |
# Create ssh directory
mkdir ~/.ssh
# Save ssh config
echo "${{ secrets.SSH_CONFIG }}" | base64 -d > ~/.ssh/config
# Save ssh known hosts
echo "${{ secrets.SSH_KNOWN_HOSTS }}" | base64 -d > ~/.ssh/known_hosts
# Save ssh private key
echo "${{ secrets.SSH_PRIVATE_KEY }}" | base64 -d > /tmp/private.key
# Fix permissions for private key
chmod 600 /tmp/private.key
- name: Start Github Actions Runner VM
run: |
ssh runner "virsh start GithubActions"
build:
needs: vm-start
runs-on: self-hosted
steps:
- name: Remove previous artifacts
run: |
sudo rm -fr out/
- name: Checkout repository
uses: actions/checkout@v4
- name: Build image
uses: addnab/docker-run-action@v3
with:
image: archlinux:latest
options: --privileged --rm --volume ${{ github.workspace }}:/workspace
run: |
# Exit on error
set -eu
# Enter project directory
pushd /workspace
# Install dependencies
.ci/dependencies.sh
# Patch mkarchiso
.ci/mkarchiso.sh
# Configure to use ROCm
.ci/configure.py rocm gui
popd
# Build image
mkarchiso -v -m iso -w /_work -o /workspace/out /workspace
- name: Create summary
run: |
# Exit on error
set -eu
# Start code section
echo '`' > "$GITHUB_STEP_SUMMARY"
# Print checksums
sha256sum out/* | sed 's/out\///' >> "$GITHUB_STEP_SUMMARY"
# End code section
echo '`' >> "$GITHUB_STEP_SUMMARY"
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: archiso-output
path: out/
vm-stop:
if: always()
needs: build
runs-on: ubuntu-latest
steps:
- name: Save ssh configuration
run: |
# Create ssh directory
mkdir ~/.ssh
# Save ssh config
echo "${{ secrets.SSH_CONFIG }}" | base64 -d > ~/.ssh/config
# Save ssh known hosts
echo "${{ secrets.SSH_KNOWN_HOSTS }}" | base64 -d > ~/.ssh/known_hosts
# Save ssh private key
echo "${{ secrets.SSH_PRIVATE_KEY }}" | base64 -d > /tmp/private.key
# Fix permissions for private key
chmod 600 /tmp/private.key
- name: Stop Github Actions Runner VM
run: |
# Invoke regular shutdown
ssh runner "virsh shutdown GithubActions"
# Wait 2 minutes
sleep 120
# Forcefully stop VM if needed
ssh runner "virsh destroy GithubActions" || true