mirror of
https://github.com/AeThex-Corporation/AeThex-OS.git
synced 2026-04-18 14:27:20 +00:00
5.1 KiB
5.1 KiB
GitHub Actions - ISO Build Automation
How It Works
The build-iso.yml workflow automatically builds the AeThex Linux ISO whenever you:
- Push changes to
mainbranch (if relevant files changed) - Manually trigger it from GitHub Actions tab
Automatic Triggers
The workflow runs automatically when changes are pushed to:
client/**- React frontendserver/**- Node.js backendshared/**- Shared schemasrc-tauri/**- Tauri desktop appscript/build-linux-iso.sh- Build script itselfconfigs/**- System configuration.github/workflows/build-iso.yml- This workflow file
Manual Trigger
- Go to GitHub → Actions tab
- Select "Build AeThex Linux ISO" workflow
- Click "Run workflow" button
- Optionally check "Create a GitHub release" to publish the ISO
Outputs
Artifacts
- ISO file: Available as artifact for 90 days
- Checksum: SHA256 verification file
- Download from: Actions → Workflow run → Artifacts
Releases (Optional)
If you check "Create a GitHub release":
- Creates a GitHub Release with the ISO
- Makes it publicly downloadable
- Includes SHA256 checksum for verification
- Pre-release tag for testing builds
Usage Examples
Download Built ISO
# Via GitHub Actions artifacts
1. Go to Actions tab
2. Select latest "Build AeThex Linux ISO" run
3. Download "AeThex-Linux-ISO" artifact
# Via GitHub CLI
gh run list --workflow=build-iso.yml --branch=main
gh run download <RUN_ID> -n AeThex-Linux-ISO
Create Bootable USB from Downloaded ISO
# Verify integrity
sha256sum -c AeThex-Linux-*.sha256
# Write to USB
sudo dd if=AeThex-Linux-*.iso of=/dev/sdX bs=4M status=progress
# Eject
sudo eject /dev/sdX
Automate Releases on Tags
Edit the workflow to release on git tags:
on:
push:
tags:
- 'v*' # Trigger on version tags like v1.0.0
Then:
git tag v1.0.0
git push origin v1.0.0
Build Status Badge
Add to your README:
[](https://github.com/AeThex-Corporation/AeThex-OS/actions/workflows/build-iso.yml)
Monitoring Builds
Check Recent Builds
- GitHub UI: Actions tab → Select workflow
- GitHub CLI:
gh run list --workflow=build-iso.yml gh run view <RUN_ID> --log - Terminal:
gh workflow list gh run list -w build-iso.yml -L 5
Get Build Logs
# Download full logs
gh run download <RUN_ID> --dir ./logs
# View in terminal
gh run view <RUN_ID> --log
Customization
Change Trigger Conditions
Edit .github/workflows/build-iso.yml:
on:
push:
branches:
- main
- develop # Also build on develop branch
paths:
- 'src-tauri/**' # Only rebuild when Tauri changes
Add Slack Notifications
- name: Notify Slack
if: always()
uses: slackapi/slack-github-action@v1
with:
webhook-url: ${{ secrets.SLACK_WEBHOOK }}
payload: |
{
"text": "AeThex Linux ISO Build: ${{ job.status }}"
}
Upload to S3 or CDN
- name: Upload to S3
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'us-east-1'
SOURCE_DIR: '~/aethex-linux-build'
Troubleshooting
Build Timeout (60 minutes)
If builds take too long, try:
- Pre-compile dependencies
- Cache Docker layers
- Use GitHub-hosted larger runners (if available)
Out of Disk Space on Runner
The workflow runs on Ubuntu Latest with ~14GB free (enough for this build). If it fails:
- Check workflow logs
- Remove unnecessary steps
- Use
disk-usage-cleanupaction
Artifacts Not Uploading
- Check artifact path is correct
- Verify file was actually created
- Check artifact retention settings
Security
Best Practices
-
Limit artifact access:
permissions: contents: read -
Sign releases:
- name: Create signed release with: gpg_key: ${{ secrets.GPG_KEY }} -
Restrict workflow to trusted users:
- Only allow manual runs from specific users
- Use branch protection rules
Next Steps
-
Push changes to trigger build:
git add . git commit -m "Add AeThex Linux build automation" git push origin main -
Monitor first build:
- Go to Actions tab
- Watch build progress
- Download artifact when complete
-
Set up releases (optional):
- Modify workflow to create releases
- Distribute ISOs publicly
- Track versions
-
Add to README:
## Download AeThex Linux Get the latest bootable ISO: - [](actions-url) - Download from [Releases](releases)
Total build time: ~30-45 minutes on GitHub Actions runners No local storage required: Building happens in the cloud