- 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
190 lines
6.1 KiB
Markdown
190 lines
6.1 KiB
Markdown
# /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
|
|
1. **Triggers**: Runs on push to main/develop branches and pull requests
|
|
2. **Detection**: Scans the entire repository for files with specific prefixes
|
|
3. **Organization**: Moves files to their correct directories
|
|
4. **Commit**: Automatically commits the reorganized files
|
|
|
|
#### Supported Prefixes
|
|
- **DS_**: Datasheets → moved to `docs/datasheets/`
|
|
- **IMG_**: Images → moved to `docs/images/`
|
|
|
|
#### Example Usage
|
|
```bash
|
|
# 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:
|
|
1. **Enable Gitea Actions** on your Gitea instance
|
|
2. **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
|
|
3. **Add Repository Secret**:
|
|
- Go to your repository → Settings → Secrets
|
|
- Add new secret: `CI_BOT_TOKEN`
|
|
- Value: Paste the token from step 2
|
|
4. **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:
|
|
1. Copy `.gitea/workflows/auto-sort-files.yml` to `.github/workflows/`
|
|
2. Replace `CI_BOT_TOKEN` with `GITHUB_TOKEN` in the workflow
|
|
3. Update the push URL to use GitHub's format
|
|
|
|
### GitLab CI (Alternative)
|
|
To adapt for GitLab CI, create `.gitlab-ci.yml`:
|
|
```yaml
|
|
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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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
|
|
1. **Files not moving**: Check filename prefix and extension
|
|
2. **Permission errors**: Ensure CI has write access to repository
|
|
3. **Workflow not running**: Check trigger conditions and branch names
|
|
4. **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
|