- Move workflow from ci/auto-sort-files.yml to .gitea/workflows/auto-sort-files.yml - Update workflow to use CI_BOT_TOKEN secret for Gitea authentication - Configure proper git push URL for Gitea repository - Update ci/README.md with comprehensive Gitea Actions setup instructions - Add GITEA-ACTIONS-SETUP.md with detailed configuration guide - Update README.md to reference Gitea Actions setup documentation - Remove old GitHub Actions workflow file - Provide step-by-step token creation and repository secret configuration - Include troubleshooting guide and security considerations
/ci
Continuous Integration configuration and automation scripts.
Purpose
This directory contains CI/CD configuration files and automation scripts for the project, including automated file organization, testing, and deployment workflows.
CI Workflows
Auto-Sort Files (auto-sort-files.yml)
Automatically organizes datasheets and images based on filename prefixes.
How It Works
- Triggers: Runs on push to main/develop branches and pull requests
- Detection: Scans the entire repository for files with specific prefixes
- Organization: Moves files to their correct directories
- Commit: Automatically commits the reorganized files
Supported Prefixes
- DS_: Datasheets → moved to
docs/datasheets/ - IMG_: Images → moved to
docs/images/
Example Usage
# User uploads files anywhere in the project:
/some-folder/DS_STM32F401_datasheet_2024-08-11.pdf
/random-location/IMG_pcb-layout_top-view_v1.0.0_2024-08-11.png
# CI automatically moves them to:
docs/datasheets/DS_STM32F401_datasheet_2024-08-11.pdf
docs/images/IMG_pcb-layout_top-view_v1.0.0_2024-08-11.png
Supported File Types
Datasheets (DS_):
- PDF, DOC, DOCX, TXT
Images (IMG_):
- PNG, JPG, JPEG, SVG, GIF, PDF, WEBP
Configuration
The workflow can be customized by editing auto-sort-files.yml:
- Add new file extensions
- Modify destination directories
- Add new prefix categories
- Adjust trigger conditions
Benefits of Auto-Sort System
For Users
- No manual organization: Upload files anywhere with correct prefix
- Consistent structure: Files automatically end up in the right place
- Reduced errors: No need to remember directory structures
- Time saving: Focus on content, not file management
For Teams
- Enforced standards: Automatic compliance with naming conventions
- Reduced conflicts: Files always in predictable locations
- Better collaboration: Team members can find files easily
- Documentation quality: Consistent organization improves documentation
For Maintenance
- Automated cleanup: Misplaced files are automatically corrected
- Audit trail: Git history shows when files were moved
- Scalability: Works regardless of project size
- Integration: Works with existing workflows and tools
Setup Instructions
Gitea Actions (Recommended)
This template is optimized for Gitea Actions. The workflow is already configured in .gitea/workflows/auto-sort-files.yml.
Required Setup:
- Enable Gitea Actions on your Gitea instance
- Create CI Bot Token:
- Go to your Gitea user settings → Applications → Generate New Token
- Name:
CI Auto-Sort Bot - Scopes:
repo(full repository access) - Copy the generated token
- Add Repository Secret:
- Go to your repository → Settings → Secrets
- Add new secret:
CI_BOT_TOKEN - Value: Paste the token from step 2
- Enable Actions: Go to repository Settings → Actions → Enable Actions
Token Configuration:
The workflow uses ${{ secrets.CI_BOT_TOKEN }} to authenticate git operations. This token must have:
- Repository access: Read and write permissions
- Contents permission: To commit and push changes
- Actions permission: To run workflows
Verification:
- Push a test file with DS_ or IMG_ prefix to verify the workflow runs
- Check the Actions tab in your repository for workflow execution logs
- Verify that files are automatically moved to correct directories
GitHub Actions (Alternative)
If using GitHub instead of Gitea:
- Copy
.gitea/workflows/auto-sort-files.ymlto.github/workflows/ - Replace
CI_BOT_TOKENwithGITHUB_TOKENin the workflow - Update the push URL to use GitHub's format
GitLab CI (Alternative)
To adapt for GitLab CI, create .gitlab-ci.yml:
auto-sort:
stage: organize
script:
- # Copy the bash script from .gitea/workflows/auto-sort-files.yml
only:
- main
- develop
Other CI Systems
The bash script in auto-sort-files.yml can be adapted for:
- Jenkins
- Azure DevOps
- CircleCI
- Travis CI
- Any system that can run bash scripts
Customization
Adding New Prefixes
To add new file type prefixes, modify the workflow:
# Example: Add CAD files with CAD_ prefix
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 Organization
For more sophisticated organization, add logic to sort into subdirectories:
# Example: 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/" ;;
*) dest_dir="docs/datasheets/" ;;
esac
Best Practices
File Naming
- Always use the correct prefix (DS_, IMG_)
- Follow the established naming convention
- Include version numbers and dates
- Use descriptive filenames
Repository Management
- Review auto-sort commits regularly
- Manually organize files into subdirectories as needed
- Keep the CI workflow updated with project needs
- Monitor for any files that might be missed
Team Guidelines
- Train team members on prefix usage
- Document any custom prefixes or rules
- Include prefix requirements in contribution guidelines
- Set up notifications for auto-sort commits
Troubleshooting
Common Issues
- Files not moving: Check filename prefix and extension
- Permission errors: Ensure CI has write access to repository
- Workflow not running: Check trigger conditions and branch names
- Duplicate files: CI will not overwrite existing files
Debugging
- Check workflow logs in CI system
- Verify file extensions are supported
- Ensure files are not already in correct location
- Test bash script locally before deploying
Future Enhancements
- Add support for more file types
- Implement smart subdirectory sorting
- Add file validation and quality checks
- Integration with project management tools
- Automated file naming compliance checking