Skip to content

ci: improve release workflow with error handling and shell configuration #22

ci: improve release workflow with error handling and shell configuration

ci: improve release workflow with error handling and shell configuration #22

Workflow file for this run

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/ {
print
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