docker
Some checks failed
Build and Publish Docker Images / build-and-push (push) Failing after 6m30s
Test Docker Compose Setup / test-compose (push) Failing after 30s
Test Docker Compose Setup / lint-dockerfiles (push) Failing after 34s
Test Docker Compose Setup / validate-compose (push) Failing after 12s
Build and Publish Docker Images / security-scan (push) Has been skipped
Build and Publish Docker Images / notify (push) Failing after 7s
Some checks failed
Build and Publish Docker Images / build-and-push (push) Failing after 6m30s
Test Docker Compose Setup / test-compose (push) Failing after 30s
Test Docker Compose Setup / lint-dockerfiles (push) Failing after 34s
Test Docker Compose Setup / validate-compose (push) Failing after 12s
Build and Publish Docker Images / security-scan (push) Has been skipped
Build and Publish Docker Images / notify (push) Failing after 7s
This commit is contained in:
303
GITEA_ACTIONS_SETUP.md
Normal file
303
GITEA_ACTIONS_SETUP.md
Normal file
@@ -0,0 +1,303 @@
|
||||
# Gitea Actions Setup for Docker Build and Publish
|
||||
|
||||
This document explains how to set up Gitea Actions to automatically build and publish Docker images for the UptimeKuma Discord Bot project.
|
||||
|
||||
## Overview
|
||||
|
||||
The Gitea Actions workflows provide:
|
||||
- **Automated Docker image building** for both Discord bot and web backend
|
||||
- **Multi-platform support** (linux/amd64, linux/arm64)
|
||||
- **Security scanning** with Trivy
|
||||
- **Automated releases** with changelog generation
|
||||
- **Docker Compose testing** to ensure everything works together
|
||||
|
||||
## Workflows
|
||||
|
||||
### 1. Docker Build (`docker-build.yml`)
|
||||
|
||||
**Triggers:**
|
||||
- Push to `main` or `develop` branches
|
||||
- Push of version tags (`v*`)
|
||||
- Pull requests to `main`
|
||||
|
||||
**Features:**
|
||||
- Builds both Discord bot and web backend images
|
||||
- Multi-platform builds (AMD64, ARM64)
|
||||
- Pushes to Docker Hub on non-PR events
|
||||
- Generates Software Bill of Materials (SBOM)
|
||||
- Security vulnerability scanning
|
||||
- GitHub Actions cache for faster builds
|
||||
|
||||
### 2. Docker Compose Test (`docker-compose-test.yml`)
|
||||
|
||||
**Triggers:**
|
||||
- Push to `main` or `develop` branches
|
||||
- Pull requests to `main`
|
||||
|
||||
**Features:**
|
||||
- Tests the complete Docker Compose setup
|
||||
- Validates Dockerfile syntax with hadolint
|
||||
- Checks service health and connectivity
|
||||
- Validates environment variable configuration
|
||||
|
||||
### 3. Release (`release.yml`)
|
||||
|
||||
**Triggers:**
|
||||
- Push of version tags (`v*`)
|
||||
|
||||
**Features:**
|
||||
- Creates GitHub releases automatically
|
||||
- Generates changelog from git commits
|
||||
- Updates release notes with Docker image information
|
||||
|
||||
## Required Secrets
|
||||
|
||||
Configure these secrets in your Gitea repository settings:
|
||||
|
||||
### Docker Hub Secrets
|
||||
- `DOCKER_USERNAME`: Your Docker Hub username
|
||||
- `DOCKER_PASSWORD`: Your Docker Hub access token (not password)
|
||||
|
||||
### How to Get Docker Hub Token
|
||||
1. Go to [Docker Hub](https://hub.docker.com/)
|
||||
2. Sign in to your account
|
||||
3. Go to Account Settings → Security
|
||||
4. Create a new access token
|
||||
5. Copy the token and use it as `DOCKER_PASSWORD`
|
||||
|
||||
## Setup Instructions
|
||||
|
||||
### 1. Enable Gitea Actions
|
||||
|
||||
1. Go to your Gitea repository
|
||||
2. Navigate to **Settings** → **Actions**
|
||||
3. Enable **Actions** if not already enabled
|
||||
|
||||
### 2. Configure Secrets
|
||||
|
||||
1. Go to **Settings** → **Secrets**
|
||||
2. Add the following secrets:
|
||||
|
||||
| Secret Name | Description | Example |
|
||||
|-------------|-------------|---------|
|
||||
| `DOCKER_USERNAME` | Docker Hub username | `myusername` |
|
||||
| `DOCKER_PASSWORD` | Docker Hub access token | `dckr_pat_...` |
|
||||
|
||||
### 3. Test the Workflow
|
||||
|
||||
1. Push a commit to the `main` branch
|
||||
2. Go to **Actions** tab in your repository
|
||||
3. Watch the workflow execution
|
||||
4. Check the logs for any errors
|
||||
|
||||
## Workflow Details
|
||||
|
||||
### Docker Build Workflow
|
||||
|
||||
```yaml
|
||||
# Key features:
|
||||
- Multi-platform builds (linux/amd64, linux/arm64)
|
||||
- Automatic tagging based on git refs
|
||||
- Build cache for faster subsequent builds
|
||||
- Security scanning with Trivy
|
||||
- SBOM generation for supply chain security
|
||||
```
|
||||
|
||||
**Image Tags Generated:**
|
||||
- `latest` (for main branch)
|
||||
- `main` (branch name)
|
||||
- `v1.0.0` (version tags)
|
||||
- `1.0` (major.minor)
|
||||
- `1` (major)
|
||||
|
||||
### Docker Compose Test Workflow
|
||||
|
||||
```yaml
|
||||
# Key features:
|
||||
- Validates Docker Compose configuration
|
||||
- Tests service startup and health checks
|
||||
- Lints Dockerfiles with hadolint
|
||||
- Validates environment variable usage
|
||||
```
|
||||
|
||||
### Release Workflow
|
||||
|
||||
```yaml
|
||||
# Key features:
|
||||
- Automatic release creation on version tags
|
||||
- Changelog generation from git commits
|
||||
- Release notes with Docker image information
|
||||
- Quick start instructions included
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Creating a Release
|
||||
|
||||
1. **Create and push a version tag:**
|
||||
```bash
|
||||
git tag v1.0.0
|
||||
git push origin v1.0.0
|
||||
```
|
||||
|
||||
2. **The workflow will:**
|
||||
- Build Docker images with version tags
|
||||
- Create a GitHub release
|
||||
- Generate changelog
|
||||
- Publish images to Docker Hub
|
||||
|
||||
### Testing Changes
|
||||
|
||||
1. **Create a pull request:**
|
||||
```bash
|
||||
git checkout -b feature/new-feature
|
||||
git commit -m "Add new feature"
|
||||
git push origin feature/new-feature
|
||||
```
|
||||
|
||||
2. **The workflow will:**
|
||||
- Build images (but not push)
|
||||
- Run security scans
|
||||
- Test Docker Compose setup
|
||||
- Validate configuration
|
||||
|
||||
## Monitoring and Troubleshooting
|
||||
|
||||
### Viewing Workflow Runs
|
||||
|
||||
1. Go to **Actions** tab in your repository
|
||||
2. Click on a workflow run to see details
|
||||
3. Expand job steps to view logs
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### 1. Docker Hub Authentication Failed
|
||||
```
|
||||
Error: Cannot perform an interactive login from a non TTY device
|
||||
```
|
||||
**Solution:** Check that `DOCKER_USERNAME` and `DOCKER_PASSWORD` secrets are correctly set.
|
||||
|
||||
#### 2. Build Cache Issues
|
||||
```
|
||||
Error: failed to solve: failed to compute cache key
|
||||
```
|
||||
**Solution:** The workflow will automatically retry without cache on failure.
|
||||
|
||||
#### 3. Security Scan Failures
|
||||
```
|
||||
Error: Trivy found vulnerabilities
|
||||
```
|
||||
**Solution:** Review the security scan results and update base images if needed.
|
||||
|
||||
### Workflow Status Badge
|
||||
|
||||
Add this to your README.md to show workflow status:
|
||||
|
||||
```markdown
|
||||
[](https://gitea.example.com/username/repo/actions)
|
||||
```
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### Custom Registry
|
||||
|
||||
To use a different registry than Docker Hub:
|
||||
|
||||
1. **Update environment variables in workflows:**
|
||||
```yaml
|
||||
env:
|
||||
REGISTRY: your-registry.com
|
||||
```
|
||||
|
||||
2. **Update image names:**
|
||||
```yaml
|
||||
env:
|
||||
IMAGE_NAME_DISCORD_BOT: your-org/uptime-kuma-discord-bot
|
||||
IMAGE_NAME_WEB_BACKEND: your-org/uptime-kuma-web-backend
|
||||
```
|
||||
|
||||
### Build Arguments
|
||||
|
||||
To pass build arguments to Docker builds:
|
||||
|
||||
```yaml
|
||||
- name: Build and push Discord Bot image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: ./Bot
|
||||
file: ./Bot/Dockerfile
|
||||
build-args: |
|
||||
NODE_VERSION=18
|
||||
BUILD_DATE=${{ github.event.head_commit.timestamp }}
|
||||
```
|
||||
|
||||
### Matrix Builds
|
||||
|
||||
To build for multiple Node.js versions:
|
||||
|
||||
```yaml
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16, 18, 20]
|
||||
```
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Secrets Management
|
||||
- Never commit secrets to the repository
|
||||
- Use Gitea's built-in secrets management
|
||||
- Rotate Docker Hub tokens regularly
|
||||
- Use least-privilege access tokens
|
||||
|
||||
### Image Security
|
||||
- Base images are automatically scanned for vulnerabilities
|
||||
- SBOMs are generated for supply chain transparency
|
||||
- Multi-platform builds ensure compatibility
|
||||
- Non-root users in containers for security
|
||||
|
||||
### Workflow Security
|
||||
- Workflows run in isolated environments
|
||||
- Secrets are encrypted and only available during execution
|
||||
- No secrets are logged or exposed in outputs
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Version Tagging
|
||||
- Use semantic versioning (`v1.0.0`)
|
||||
- Tag releases consistently
|
||||
- Include meaningful commit messages
|
||||
|
||||
### 2. Branch Strategy
|
||||
- Use `main` for production releases
|
||||
- Use `develop` for integration testing
|
||||
- Use feature branches for new development
|
||||
|
||||
### 3. Monitoring
|
||||
- Monitor workflow execution regularly
|
||||
- Set up notifications for failures
|
||||
- Review security scan results
|
||||
|
||||
### 4. Maintenance
|
||||
- Keep base images updated
|
||||
- Review and update workflow dependencies
|
||||
- Monitor for deprecated actions
|
||||
|
||||
## Support
|
||||
|
||||
For issues with Gitea Actions:
|
||||
|
||||
1. Check the workflow logs first
|
||||
2. Verify secrets are correctly configured
|
||||
3. Ensure Gitea Actions is enabled
|
||||
4. Check Gitea version compatibility
|
||||
5. Review this documentation
|
||||
|
||||
## Contributing
|
||||
|
||||
When contributing to the workflows:
|
||||
|
||||
1. Test changes in a fork first
|
||||
2. Update documentation as needed
|
||||
3. Follow the existing workflow patterns
|
||||
4. Ensure backward compatibility
|
||||
5. Add appropriate error handling
|
||||
Reference in New Issue
Block a user