Enhance GitHub Actions workflow for Arch Linux ISO builds: #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Update Documentation | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - dev | |
| paths: | |
| - 'packages.x86_64' | |
| - 'airootfs/**' | |
| - '.github/workflows/**' | |
| workflow_dispatch: | |
| jobs: | |
| update-docs: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.x' | |
| - name: Install Dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install PyYAML markdown | |
| - name: Generate Package List Documentation | |
| run: | | |
| echo "## π¦ Installed Packages" > packages_doc.md | |
| echo "" >> packages_doc.md | |
| echo "This ISO contains the following packages:" >> packages_doc.md | |
| echo "" >> packages_doc.md | |
| echo "| Package | Description |" >> packages_doc.md | |
| echo "|---------|-------------|" >> packages_doc.md | |
| # Set up Docker container for package info | |
| docker run --name arch-container -d archlinux:latest sleep infinity | |
| docker exec arch-container pacman -Sy | |
| while read -r pkg; do | |
| # Skip comments and empty lines | |
| [[ "$pkg" =~ ^#.*$ ]] && continue | |
| [[ -z "$pkg" ]] && continue | |
| # Get package description | |
| desc=$(docker exec arch-container bash -c "pacman -Si $pkg 2>/dev/null | grep Description | cut -d: -f2- || echo 'No description available'") | |
| echo "| \`$pkg\` | ${desc:-No description available} |" >> packages_doc.md | |
| done < packages.x86_64 | |
| docker stop arch-container | |
| docker rm arch-container | |
| - name: Update README | |
| run: | | |
| # Backup current README | |
| cp README.md README.md.bak | |
| # Update package section in README | |
| awk ' | |
| /## π¦ Installed Packages/,/##/ { next } | |
| /## π¦ Installed Packages/ { | |
| system("cat packages_doc.md") | |
| next | |
| } | |
| { print } | |
| ' README.md.bak > README.md | |
| # Clean up | |
| rm README.md.bak packages_doc.md | |
| - name: Generate Workflow Documentation | |
| run: | | |
| echo "## π Automated Workflows" > workflows_doc.md | |
| echo "" >> workflows_doc.md | |
| echo "This project uses the following GitHub Actions workflows:" >> workflows_doc.md | |
| echo "" >> workflows_doc.md | |
| for workflow in .github/workflows/*.yaml; do | |
| name=$(grep "^name:" "$workflow" | head -n1 | cut -d: -f2- | xargs) | |
| echo "### $name" >> workflows_doc.md | |
| echo "" >> workflows_doc.md | |
| echo "File: \`$(basename "$workflow")\`" >> workflows_doc.md | |
| echo "" >> workflows_doc.md | |
| # Extract description based on triggers | |
| echo "Triggered by:" >> workflows_doc.md | |
| if grep -q "workflow_dispatch:" "$workflow"; then | |
| echo "- π Manual trigger" >> workflows_doc.md | |
| fi | |
| if grep -q "schedule:" "$workflow"; then | |
| cron=$(grep -A1 "schedule:" "$workflow" | grep "cron:" | cut -d"'" -f2) | |
| echo "- β° Scheduled: \`$cron\`" >> workflows_doc.md | |
| fi | |
| if grep -q "push:" "$workflow"; then | |
| echo "- π€ Push to repository" >> workflows_doc.md | |
| fi | |
| if grep -q "pull_request:" "$workflow"; then | |
| echo "- π Pull request" >> workflows_doc.md | |
| fi | |
| echo "" >> workflows_doc.md | |
| done | |
| - name: Create Pull Request | |
| uses: peter-evans/create-pull-request@v5 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| commit-message: "docs: update automated documentation" | |
| title: "π Documentation Update" | |
| body: | | |
| π Automated documentation update | |
| This PR includes: | |
| - Updated package list | |
| - Updated workflow documentation | |
| - General documentation improvements | |
| This PR was automatically generated by the update-docs workflow. | |
| branch: update-documentation | |
| base: ${{ github.ref_name }} | |
| labels: | | |
| documentation | |
| automated | |
| draft: false |