|
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
Adds title, description, type, domain, and tags frontmatter to every doc for improved KB semantic search. The description field is prepended to every search chunk, and domain/type/tags enable filtered queries. Type values: context, guide, runbook, reference, troubleshooting Domain values match directory structure (networking, docker, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| snippets | ||
| deploy-script-template.sh | ||
| docker-build-template.yml | ||
| README.md | ||
| title | description | type | domain | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Gitea Actions Workflow Templates | Reusable CI/CD workflow templates for Gitea Actions including Docker build pipelines with version validation, Docker Hub push, Discord notifications, and multi-registry support. Based on Paper Dynasty reference implementation. | reference | server-configs |
|
Gitea Actions Workflow Templates
Reusable CI/CD workflow templates for Gitea Actions (GitHub Actions compatible).
Templates
docker-build-template.yml
Complete Docker build pipeline with semantic versioning validation, Docker Hub push, and Discord notifications.
Features:
- ✅ Semantic version validation on PRs
- ✅ Docker build on every push/PR
- ✅ Push to Docker Hub on main branch
- ✅ Discord notifications (success/failure)
- ✅ Build caching for faster builds
- ✅ Multi-tag strategy (latest, version, version+commit)
Reference Implementation: Paper Dynasty Discord bot - First production use (2026-02-04)
Quick Start
-
Copy template to your repo:
mkdir -p .gitea/workflows cp docker-build-template.yml .gitea/workflows/docker-build.yml -
Customize placeholders:
- Replace
yourusername/yourrepowith your Docker Hub repository - Replace
Your Projectin notification titles - Replace
YOUR_DISCORD_WEBHOOK_URL_HEREwith your webhook URLs
- Replace
-
Add Gitea secrets:
- Go to your repo → Settings → Secrets → Actions
- Add
DOCKERHUB_USERNAME(your Docker Hub username) - Add
DOCKERHUB_TOKEN(access token from hub.docker.com)
-
Create VERSION file:
echo "1.0.0" > VERSION git add VERSION git commit -m "Add initial VERSION file" -
Push and test:
- Create a PR to test version validation
- Merge to main to test Docker push and notifications
Customization Guide
Disable Features
Don't want version validation?
- Delete the "Check VERSION was bumped" step
Don't want Discord notifications?
- Delete both "Discord Notification" steps
Don't want Docker Hub push?
- Remove "Login to Docker Hub" step
- Change
push: ${{ github.ref == 'refs/heads/main' }}topush: false
Customize Version Validation
The template enforces strict semantic versioning. To modify:
Allow any version bump:
# Remove the validation logic, just check if changed:
if [ "$PR_VERSION" = "$MAIN_VERSION" ]; then
echo "❌ VERSION unchanged"
exit 1
fi
echo "✅ VERSION changed: $MAIN_VERSION → $PR_VERSION"
Allow pre-release versions:
# Modify parsing to handle versions like "1.2.3-beta"
IFS='-' read -r VERSION_NUMBER PRERELEASE <<< "$PR_VERSION"
Add More Notifications
Slack webhook:
- name: Slack Notification
if: success() && github.ref == 'refs/heads/main'
run: |
curl -X POST YOUR_SLACK_WEBHOOK_URL \
-H 'Content-Type: application/json' \
-d '{"text": "Build succeeded: v${{ steps.meta.outputs.version }}"}'
Email notification:
- name: Email Notification
if: failure()
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.gmail.com
server_port: 465
username: ${{ secrets.EMAIL_USERNAME }}
password: ${{ secrets.EMAIL_PASSWORD }}
subject: Build Failed - ${{ github.repository }}
body: Build failed on commit ${{ github.sha }}
to: you@example.com
Troubleshooting
Version Validation Issues
Problem: PR fails validation but VERSION was bumped
Solution: Check VERSION file format - should be just 1.2.3 with no prefix, suffix, or extra text
Problem: Validation allows invalid bumps Solution: Version parsing may be failing - check for special characters in VERSION file
Docker Hub Push Issues
Problem: Login fails with "unauthorized" Solution: Regenerate Docker Hub access token at hub.docker.com → Settings → Security
Problem: Push fails with "denied" Solution: Check repository name matches exactly (case-sensitive)
Problem: Tags not appearing on Docker Hub Solution: Wait a few seconds and refresh - tags may take a moment to appear
Discord Notification Issues
Problem: Webhook succeeds but no message appears Solution:
- Check timestamp format is ISO 8601:
YYYY-MM-DDTHH:MM:SSZ - Test webhook manually with curl
- Verify webhook hasn't been deleted in Discord
Problem: Message appears malformed Solution: Check for unescaped quotes or special characters in message content
Problem: Rate limited Solution: Discord limits webhooks to ~5 messages per second - add delays if sending multiple
Advanced Usage
Multi-Stage Builds
Add test/lint steps before build:
- name: Run tests
run: |
npm install
npm test
- name: Lint code
run: npm run lint
- name: Build Docker image
# ... existing build step
Deploy After Build
Add deployment to production:
- name: Deploy to production
if: success() && github.ref == 'refs/heads/main'
run: |
ssh production "docker pull yourusername/yourrepo:latest && docker-compose up -d"
Multiple Docker Registries
Push to multiple registries:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@v5
with:
push: ${{ github.ref == 'refs/heads/main' }}
tags: |
yourusername/yourrepo:latest
ghcr.io/yourusername/yourrepo:latest
Template Updates
This template was created based on the Paper Dynasty Discord bot workflow and represents battle-tested CI/CD practices. Future improvements might include:
- Automatic changelog generation from commits
- Security scanning (Trivy, Snyk)
- Multi-architecture builds (ARM, AMD64)
- Deployment strategies (blue-green, canary)
- Integration testing with docker-compose
- Performance benchmarking
Contributing
Found a bug or improvement? Update this template and document the change in this README.
License
Free to use and modify for any project.
Template Version: 1.0.0 Last Updated: 2026-02-04 Maintained By: Manticorum Home Lab