- Update GITEA-ACTIONS-SETUP.md to document [skip actions] flag usage - Explain infinite loop prevention using standard Gitea Actions approach - Remove references to conditional workflow execution based on commit message detection - Document simplified git configuration using inline -c flags - Provide clear explanation of how [skip actions] prevents recursive workflow execution
7.1 KiB
Gitea Actions Setup Guide
This guide explains how to set up the CI auto-sort system for Gitea Actions.
🚀 Quick Setup
1. Enable Gitea Actions
Ensure your Gitea instance has Actions enabled:
- Admin Panel: Go to Site Administration → Actions
- Enable Actions: Check "Enable Actions for this repository"
- Runner: Ensure at least one runner is available
2. Create CI Bot Token
- Navigate to User Settings:
- Click your profile → Settings → Applications
- Generate New Token:
- Token Name:
CI Auto-Sort Bot - Scopes: Select
repo(Repository access) - Click "Generate Token"
- Token Name:
- Copy Token: Save the generated token securely
3. Add Repository Secret
- Go to Repository Settings:
- Navigate to your repository → Settings → Secrets
- Add New Secret:
- Name:
CI_BOT_TOKEN - Value: Paste the token from step 2
- Click "Add Secret"
- Name:
4. Add Repository Variables
- Go to Repository Settings:
- Navigate to your repository → Settings → Variables
- Add Worker Email Variable:
- Name:
WORKER_EMAIL - Value: Email for git commits (e.g.,
ci-bot@your-domain.com) - Click "Add Variable"
- Name:
- Add Worker Username Variable:
- Name:
WORKER_USERNAME - Value: Username for git commits (e.g.,
CI Auto-Sort Bot) - Click "Add Variable"
- Name:
5. Enable Repository Actions
- Repository Settings: Go to Settings → Actions
- Enable Actions: Check "Enable Actions"
- Allow all actions: Select appropriate action permissions
🔧 Detailed Configuration
Token Permissions
The CI_BOT_TOKEN requires these permissions:
- Repository: Full access to repository contents
- Contents: Read and write access to files
- Metadata: Read repository metadata
- Pull requests: Read pull request information (for PR triggers)
Workflow Configuration
The workflow file is located at .gitea/workflows/auto-sort-files.yml and includes:
name: Auto-Sort Files
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
Infinite Loop Prevention
The workflow uses the [skip actions] flag in commit messages to prevent infinite loops:
- When files are moved, the commit message includes
[skip actions] - This prevents the workflow from triggering again on its own commits
- Standard Gitea Actions approach for preventing recursive execution
Authentication Method
The workflow uses token-based authentication and dynamically detects the repository URL:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.CI_BOT_TOKEN }}
The push operation automatically detects the repository URL:
# Get the repository URL dynamically
REPO_URL=$(git config --get remote.origin.url)
# Supports both HTTPS and SSH repository URLs
🧪 Testing the Setup
1. Create Test Files
Create test files with the correct prefixes:
# Create a test datasheet
echo "Test datasheet content" > DS_test-component_datasheet_2024-08-11.pdf
# Create a test image
echo "Test image content" > IMG_test-diagram_v1.0.0_2024-08-11.png
2. Commit and Push
git add .
git commit -m "Test CI auto-sort system"
git push
3. Verify Workflow Execution
- Actions Tab: Go to your repository → Actions
- Check Workflow: Look for "Auto-Sort Files" workflow
- View Logs: Click on the workflow run to see detailed logs
- Verify Results: Check if files were moved to correct directories
📋 Troubleshooting
Common Issues
Workflow Not Running
- Check Actions Enabled: Verify Actions are enabled in repository settings
- Check Runner: Ensure Gitea has available runners
- Check Triggers: Verify push was to main/develop branch
Permission Denied
- Token Scope: Ensure token has
reposcope - Token Validity: Check if token hasn't expired
- Secret Name: Verify secret is named exactly
CI_BOT_TOKEN
Files Not Moving
- File Prefix: Ensure files start with
DS_orIMG_ - File Extensions: Check supported extensions (PDF, PNG, JPG, etc.)
- Already Sorted: Files already in correct location won't be moved
Debug Steps
- Check Workflow Logs:
- Go to Actions tab → Select workflow run → View logs
- Verify Token:
- Test token permissions with a simple git operation
- Manual Test:
- Run the bash script locally to test file detection
🔒 Security Considerations
Token Security
- Scope Limitation: Use minimal required scopes
- Regular Rotation: Rotate tokens periodically
- Access Control: Limit who can access repository secrets
Workflow Security
- Branch Protection: Protect main branch from direct pushes
- Review Process: Require PR reviews for workflow changes
- Audit Logs: Monitor Actions execution logs
🎯 Advanced Configuration
Custom File Types
Add support for additional file types by modifying the workflow:
# Add CAD files
find . -name "CAD_*.step" -o -name "CAD_*.sldprt" | while read file; do
if [[ "$file" != ./mechanical/cad/* ]]; then
filename=$(basename "$file")
move_file "$file" "mechanical/cad/$filename"
fi
done
Subdirectory Sorting
Implement intelligent subdirectory sorting:
# Sort datasheets by component type
case "$filename" in
DS_STM32*|DS_ESP32*) dest_dir="docs/datasheets/microcontrollers/" ;;
DS_LM*|DS_AMS*) dest_dir="docs/datasheets/power-management/" ;;
DS_USB*|DS_JST*) dest_dir="docs/datasheets/connectors/" ;;
*) dest_dir="docs/datasheets/" ;;
esac
Notification Integration
Add notifications for successful sorts:
- name: Notify on Slack
if: steps.sort_files.outputs.files_moved == 'true'
uses: 8398a7/action-slack@v3
with:
status: success
text: "Files automatically sorted by CI"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
📊 Monitoring and Maintenance
Regular Checks
- Weekly: Review auto-sort commits
- Monthly: Check workflow execution statistics
- Quarterly: Rotate CI bot token
Performance Optimization
- File Size Limits: Monitor for large files that slow down workflow
- Execution Time: Optimize script for large repositories
- Runner Resources: Ensure adequate runner capacity
🆘 Support
Getting Help
- Gitea Documentation: https://docs.gitea.io/en-us/usage/actions/
- Repository Issues: Use the issue tracker for template-specific problems
- Community: Gitea community forums and Discord
Reporting Issues
When reporting issues, include:
- Gitea version
- Workflow logs
- Repository structure
- Error messages
- Steps to reproduce
✅ Setup Checklist
- Gitea Actions enabled on instance
- CI bot token created with
reposcope CI_BOT_TOKENsecret added to repositoryWORKER_EMAILvariable added to repositoryWORKER_USERNAMEvariable added to repository- Repository Actions enabled
- Test files created and pushed
- Workflow executed successfully
- Files moved to correct directories
- Team members trained on prefix usage
Once all items are checked, your CI auto-sort system is ready! 🎉