Skip to content

Build ISO

Build ISO #51

Workflow file for this run

name: Build ISO
on:
workflow_dispatch:
schedule:
# Run the workflow every day at midnight
- cron: 0 0 * * *
jobs:
build:
runs-on: ubuntu-latest # Use a standard runner
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Arch Linux Container
run: |
docker run --privileged --name arch-container -d -v ${{ github.workspace }}:/workdir archlinux:latest sleep infinity
- name: Build ISO in Arch Container
run: |
set -e
docker exec arch-container bash -c "
pacman -Syu --noconfirm &&
pacman -S --noconfirm git archiso grub &&
cd /workdir &&
mkarchiso -v -w workdir/ -o out/ .
"
- name: Rename ISO to Arch.iso
run: |
set -e
docker exec arch-container bash -c "
iso_file=\$(ls /workdir/out/*.iso 2>/dev/null | head -n 1) &&
[ -n \"\$iso_file\" ] && mv \$iso_file /workdir/out/Arch.iso || echo 'No ISO file found.'
"
- name: List ISO files
run: |
docker exec arch-container bash -c "ls -l /workdir/out/ || echo 'Failed to list files.'"
- name: Copy ISO to Host
run: |
docker cp arch-container:/workdir/out/Arch.iso ${{ github.workspace }}/ || echo 'Failed to copy ISO to host.'
- name: Get current date
id: date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
# Create a release on GitHub using Personal Access Token (PAT)
- name: Create GitHub Release
id: create_release # Adding an ID to reference the release step
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.run_id }}-release
release_name: "Arch Linux Release"
body: |
This release contains the Arch Linux ISO built on ${{ steps.date.outputs.date }}.
draft: false
prerelease: false
# Upload the ISO to the GitHub release with a specific, predictable name
- name: Upload ISO to GitHub Release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ github.workspace }}/Arch.iso
asset_name: Arch.iso
asset_content_type: application/octet-stream
- name: Clean Up
run: |
docker stop arch-container || echo 'Failed to stop the container.'
docker rm arch-container || echo 'Failed to remove the container.'