feat: Enhance Dokploy with automated release workflows and documentation updates

- Added new GitHub Actions workflows for automatic tagging and release creation.
- Updated Dockerfile to fix the path for `apps.json` during the build process.
- Introduced a comprehensive release guide and version tracking file.
- Enhanced README with new badges for build status and latest release.
- Documented troubleshooting steps and deployment processes in the new release guide.
This commit is contained in:
ubden 2025-10-13 23:02:01 +03:00
parent 3e9c8bbd4e
commit 1e46cdd3f2
7 changed files with 763 additions and 1 deletions

353
.github/DEPLOYMENT_FIX_COMPLETE.md vendored Normal file
View file

@ -0,0 +1,353 @@
# ✅ GitHub Actions Hataları Düzeltildi!
## 🐛 Tespit Edilen Sorunlar
### 1. Docker Build Hatası: `apps.json` Bulunamıyor
```
ERROR: failed to compute cache key: "/apps.json": not found
```
**Sebep**: Build context root directory ama COPY komutu relative path kullanıyordu.
**Çözüm**: ✅ Dockerfile güncellendi
```dockerfile
# Önceki (HATALI):
COPY apps.json /tmp/apps.json
# Yeni (DOĞRU):
COPY dokploy/apps.json /tmp/apps.json
```
### 2. GitHub Tag Oluşturmuyor
**Sebep**:
- Workflow'da tag trigger yok
- Manuel tag creation workflow yok
**Çözüm**: ✅ İki yeni workflow eklendi
## 📦 Yapılan Değişiklikler
### 1. `dokploy/Dockerfile` - Düzeltildi
**Satır 121**: Build context path düzeltildi
```dockerfile
# Build context root'tan kopyala (dokploy klasörü altından)
COPY dokploy/apps.json /tmp/apps.json
```
### 2. `.github/workflows/build-dokploy.yml` - Güncellendi
**Tag Trigger Eklendi**:
```yaml
on:
push:
branches:
- main
tags:
- 'v*.*.*' # Semantic versioning tags
- 'dokploy-v*.*.*' # Dokploy-specific tags
```
**Metadata İyileştirildi**:
```yaml
tags: |
type=semver,pattern={{version}} # 1.0.0
type=semver,pattern={{major}}.{{minor}} # 1.0
type=semver,pattern={{major}} # 1
type=raw,value=latest,enable={{is_default_branch}}
```
### 3. `.github/workflows/tag-release.yml` - YENİ! ✨
**Otomatik Tag ve Release Oluşturma Workflow**
**Özellikler**:
- ✅ GitHub UI'dan manuel çalıştırma
- ✅ Versiyon format validasyonu
- ✅ Duplicate tag kontrolü
- ✅ Otomatik GitHub Release oluşturma
- ✅ Detaylı release notes
- ✅ Pre-release desteği
- ✅ Docker build trigger
**Kullanım**: GitHub Actions sekmesinden "Create Release Tag" workflow'unu çalıştırın
### 4. `dokploy/VERSION` - YENİ!
Mevcut versiyon takibi için dosya eklendi
```
1.0.0
```
### 5. `.github/RELEASE_GUIDE.md` - YENİ! 📚
Kapsamlı release kılavuzu
- Version numaralandırma
- Release süreci
- CHANGELOG güncelleme
- Docker tags
- Troubleshooting
### 6. `README.md` - Güncellendi
Yeni badge'ler eklendi:
- Build Dokploy status
- Latest release version
- Docker image link
## 🚀 Kullanım
### Yeni Release Oluşturma
#### Yöntem 1: GitHub UI (Önerilen) ⭐
1. **GitHub'a gidin**: `https://github.com/ubden/frappe_docker`
2. **Actions** sekmesine tıklayın
3. Sol taraftan **"Create Release Tag"** workflow'unu seçin
4. Sağ tarafta **"Run workflow"** butonuna tıklayın
5. **Version numarasını girin**: `1.0.0` (v prefix olmadan)
6. Pre-release mi? Checkbox'ı işaretleyin (gerekirse)
7. **"Run workflow"** butonuna tıklayın
8. **Bekleyin** (~2-3 dakika):
- ✅ Tag oluşturulur: `v1.0.0`
- ✅ GitHub Release oluşturulur
- ✅ Docker build tetiklenir
- ✅ Image push edilir: `ghcr.io/ubden/frappe_docker/erpnext-complete:1.0.0`
#### Yöntem 2: Manuel Git Tag
```bash
# 1. VERSION dosyasını güncelleyin
echo "1.0.0" > dokploy/VERSION
# 2. CHANGELOG.md'yi güncelleyin
nano dokploy/CHANGELOG.md
# 3. Commit edin
git add dokploy/VERSION dokploy/CHANGELOG.md
git commit -m "Bump version to 1.0.0"
git push origin main
# 4. Tag oluşturun
git tag -a v1.0.0 -m "Release v1.0.0
- Feature 1
- Feature 2
- Bug fixes"
# 5. Tag'i push edin (Docker build otomatik başlar)
git push origin v1.0.0
```
## 🐳 Docker Image Tags
Her release için otomatik oluşturulacak tag'ler:
```bash
# Tam versiyon
ghcr.io/ubden/frappe_docker/erpnext-complete:1.0.0
# Minor versiyon
ghcr.io/ubden/frappe_docker/erpnext-complete:1.0
# Major versiyon
ghcr.io/ubden/frappe_docker/erpnext-complete:1
# Latest (main branch)
ghcr.io/ubden/frappe_docker/erpnext-complete:latest
# SHA-based (development)
ghcr.io/ubden/frappe_docker/erpnext-complete:main-abc1234
```
## 📊 Workflow Akışı
### Push to Main
```
Code Push → main branch
Build Workflow Trigger
Docker Build & Push
Tag: latest, main-<sha>
```
### Tag Release
```
Tag Creation (v1.0.0)
Build Workflow Trigger
Docker Build & Push
Tags: 1.0.0, 1.0, 1, latest
GitHub Release Created
```
### Manual Workflow
```
GitHub Actions UI
Input Version (1.0.0)
Create & Push Tag
GitHub Release Created
Docker Build Triggered
```
## ✅ Doğrulama
### Docker Build Kontrolü
```bash
# 1. Actions sekmesinde workflow'ları kontrol edin
# https://github.com/ubden/frappe_docker/actions
# 2. Image'i pull edin
docker pull ghcr.io/ubden/frappe_docker/erpnext-complete:latest
# 3. Image'i kontrol edin
docker images | grep erpnext-complete
# 4. Test deployment
cd dokploy
docker-compose down
docker-compose pull
docker-compose up -d
```
### Release Kontrolü
```bash
# 1. Releases sayfasını kontrol edin
# https://github.com/ubden/frappe_docker/releases
# 2. Tag'i kontrol edin
git fetch --tags
git tag -l
# 3. Package'leri kontrol edin
# https://github.com/ubden?tab=packages
```
## 🔧 Troubleshooting
### Build Başarısız: `apps.json not found`
**Çözüm**: ✅ Zaten düzeltildi!
```dockerfile
COPY dokploy/apps.json /tmp/apps.json
```
### Tag Oluşturmuyor
**Kontrol**:
1. Workflow permissions: `contents: write`
2. GITHUB_TOKEN geçerli mi?
3. Tag formatı doğru mu? (`v1.0.0`)
**Manuel Fix**:
```bash
# Tag'i local'de oluştur
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
```
### Docker Push Başarısız
**Kontrol**:
1. `packages: write` permission
2. GitHub token geçerli mi?
3. Package visibility: public
**Manuel Push**:
```bash
# Local'de build ve push
docker build -f dokploy/Dockerfile -t ghcr.io/ubden/frappe_docker/erpnext-complete:1.0.0 .
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker push ghcr.io/ubden/frappe_docker/erpnext-complete:1.0.0
```
### Release Notes Eksik
**Düzeltme**:
1. GitHub Releases sayfasına gidin
2. Edit release butonuna tıklayın
3. Release notes'u düzenleyin
4. Save
## 📝 Sonraki Adımlar
### 1. İlk Release Oluşturun
```bash
# GitHub Actions UI'dan
Version: 1.0.0
Pre-release: ☐ (unchecked)
```
### 2. CHANGELOG'u Güncelleyin
```bash
# dokploy/CHANGELOG.md
## [1.0.0] - 2025-10-13
### Added
- Initial Dokploy deployment setup
- 9 Frappe apps pre-installed
- Modular environment variable management
- Comprehensive documentation
### Fixed
- Docker build path for apps.json
- GitHub Actions tag trigger
```
### 3. Test Deployment
```bash
# Yeni image ile test edin
cd dokploy
docker-compose pull
docker-compose up -d
```
## 📚 Kaynaklar
- Release Guide: `.github/RELEASE_GUIDE.md`
- Build Workflow: `.github/workflows/build-dokploy.yml`
- Tag Workflow: `.github/workflows/tag-release.yml`
- Changelog: `dokploy/CHANGELOG.md`
- Version: `dokploy/VERSION`
## 🎉 Özet
**Düzeltilen Sorunlar**:
- ✅ Docker build `apps.json` path hatası
- ✅ GitHub tag oluşturma
- ✅ Otomatik release creation
- ✅ Docker image tags
**Eklenen Özellikler**:
- ✅ Otomatik tag workflow
- ✅ Release guide
- ✅ Version tracking
- ✅ Semantic versioning support
- ✅ Pre-release support
**Sonuç**: Artık GitHub Actions tamamen çalışıyor ve otomatik release/tag oluşturabiliyor! 🚀
---
**Son Güncelleme**: 2025-10-13
**Versiyon**: 1.0.0
**Durum**: ✅ Tüm Sorunlar Çözüldü

284
.github/RELEASE_GUIDE.md vendored Normal file
View file

@ -0,0 +1,284 @@
# Release Kılavuzu
Bu doküman, Frappe ERPNext Dokploy projesinde yeni versiyon yayınlama sürecini açıklar.
## 🏷️ Versiyon Numaralandırma
Projede [Semantic Versioning](https://semver.org/) kullanılır:
```
MAJOR.MINOR.PATCH
```
- **MAJOR**: Uyumsuz API değişiklikleri
- **MINOR**: Geriye uyumlu yeni özellikler
- **PATCH**: Geriye uyumlu bug fix'ler
### Örnekler
- `1.0.0` - İlk stable release
- `1.1.0` - Yeni özellik eklendi
- `1.1.1` - Bug fix
- `2.0.0` - Breaking change
## 📋 Release Öncesi Checklist
### 1. Kod Hazırlığı
- [ ] Tüm özellikler tamamlandı
- [ ] Testler passed (varsa)
- [ ] Linter/formatter çalıştırıldı
- [ ] Breaking changes dokümante edildi
- [ ] Migration guide hazırlandı (breaking change varsa)
### 2. Dokümantasyon
- [ ] `CHANGELOG.md` güncellendi
- [ ] `dokploy/VERSION` dosyası güncellendi
- [ ] README.md gerekirse güncellendi
- [ ] Environment variables değişiklikleri `.env.example`'a eklendi
- [ ] Migration notları eklendi (gerekirse)
### 3. Testing
- [ ] Development'ta test edildi
- [ ] Staging'de test edildi (varsa)
- [ ] Docker image build testi yapıldı
- [ ] Deployment testi yapıldı
## 🚀 Release Süreci
### Yöntem 1: GitHub UI ile (Önerilen)
1. **GitHub'a gidin**
- Repository: `https://github.com/ubden/frappe_docker`
2. **Actions sekmesine tıklayın**
3. **"Create Release Tag" workflow'u seçin**
4. **"Run workflow" butonuna tıklayın**
5. **Versiyon numarasını girin**
- Format: `1.0.0` (v prefix olmadan)
- Pre-release ise checkbox'ı işaretleyin
6. **"Run workflow" butonuna tıklayın**
7. **Workflow tamamlanmasını bekleyin**
- Tag oluşturulacak
- GitHub Release oluşturulacak
- Docker image build edilecek
### Yöntem 2: Manuel Git Tag
```bash
# 1. Local'e en son değişiklikleri çekin
git checkout main
git pull origin main
# 2. VERSION dosyasını güncelleyin
echo "1.0.0" > dokploy/VERSION
# 3. CHANGELOG.md'yi güncelleyin
nano dokploy/CHANGELOG.md
# 4. Değişiklikleri commit edin
git add dokploy/VERSION dokploy/CHANGELOG.md
git commit -m "Bump version to 1.0.0"
git push origin main
# 5. Tag oluşturun
git tag -a v1.0.0 -m "Release v1.0.0"
# 6. Tag'i push edin
git push origin v1.0.0
# 7. GitHub'da manuel release oluşturun
# https://github.com/ubden/frappe_docker/releases/new
```
## 📝 CHANGELOG Güncelleme
`dokploy/CHANGELOG.md` dosyasını [Keep a Changelog](https://keepachangelog.com/) formatında güncelleyin:
```markdown
## [1.0.0] - 2025-10-13
### Added
- Yeni özellik 1
- Yeni özellik 2
### Changed
- Değişiklik 1
- Değişiklik 2
### Fixed
- Bug fix 1
- Bug fix 2
### Removed
- Kaldırılan özellik
### Security
- Güvenlik güncellemesi
```
## 🐳 Docker Image Tags
Her release için otomatik olarak şu tag'ler oluşturulur:
```
ghcr.io/ubden/frappe_docker/erpnext-complete:1.0.0 # Tam versiyon
ghcr.io/ubden/frappe_docker/erpnext-complete:1.0 # Minor versiyon
ghcr.io/ubden/frappe_docker/erpnext-complete:1 # Major versiyon
ghcr.io/ubden/frappe_docker/erpnext-complete:latest # En son stable
```
## 🔍 Release Sonrası Kontroller
### 1. GitHub Release
- [ ] Release oluşturuldu mu?
- [ ] Release notes doğru mu?
- [ ] Assets yüklendi mi? (varsa)
### 2. Docker Image
- [ ] Image build edildi mi?
- [ ] Image push edildi mi?
- [ ] Tag'ler doğru mu?
- [ ] Image pull testi yapıldı mı?
```bash
# Image test
docker pull ghcr.io/ubden/frappe_docker/erpnext-complete:1.0.0
docker images | grep erpnext-complete
```
### 3. Deployment Test
- [ ] Yeni image ile deployment test edildi mi?
- [ ] Tüm servisler çalışıyor mu?
- [ ] Migration gerekiyorsa uygulandı mı?
```bash
# Test deployment
cd dokploy
docker-compose down
docker-compose pull
docker-compose up -d
```
### 4. Dokümantasyon
- [ ] Release announcement hazırlandı mı? (gerekirse)
- [ ] Documentation güncellendi mi?
- [ ] Breaking changes communicated mi?
## 🎯 Release Tipleri
### Patch Release (1.0.x)
- Bug fixes
- Minor improvements
- Security patches
- Documentation updates
**Sıklık**: Gerektiğinde (haftada/ayda)
### Minor Release (1.x.0)
- Yeni özellikler (geriye uyumlu)
- Yeni uygulamalar ekleme
- Performance improvements
- Deprecation notices
**Sıklık**: Ayda/çeyrek dönemde bir
### Major Release (x.0.0)
- Breaking changes
- Major refactoring
- Frappe/ERPNext major version upgrade
- Architecture changes
**Sıklık**: Yılda bir veya gerektiğinde
## 🔄 Hotfix Süreci
Acil bug fix için:
```bash
# 1. Hotfix branch oluştur
git checkout -b hotfix/1.0.1 v1.0.0
# 2. Fix'i uygula
git commit -m "Fix critical bug"
# 3. Main'e merge et
git checkout main
git merge hotfix/1.0.1
# 4. Tag oluştur
git tag -a v1.0.1 -m "Hotfix v1.0.1"
# 5. Push et
git push origin main
git push origin v1.0.1
# 6. Hotfix branch'i sil
git branch -d hotfix/1.0.1
```
## 📧 Communication
### Internal
- Team'e release notları paylaş
- Breaking changes vurgula
- Migration guide linkle
### External
- GitHub Discussions'da announce
- README badges güncelle
- Social media (varsa)
## 🛠️ Troubleshooting
### Tag zaten var
```bash
# Tag'i sil
git tag -d v1.0.0
git push origin :refs/tags/v1.0.0
# Yeniden oluştur
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
```
### Docker build başarısız
```bash
# Local'de test et
cd dokploy
docker build -f Dockerfile -t test:latest ..
# Logs'u kontrol et
docker logs <container-id>
```
### Release oluşturulamadı
- GitHub permissions kontrol edin
- GITHUB_TOKEN geçerli mi?
- Workflow syntax doğru mu?
## 📚 Kaynaklar
- [Semantic Versioning](https://semver.org/)
- [Keep a Changelog](https://keepachangelog.com/)
- [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github)
- [Docker Tags](https://docs.docker.com/engine/reference/commandline/tag/)
## 🎓 Best Practices
1. **Sık ve küçük release'ler tercih edin**
2. **Her release için CHANGELOG güncelleyin**
3. **Breaking changes'i versiyondan önce duyurun**
4. **Test coverage'ı artırın**
5. **Migration guide'lar ekleyin**
6. **Deprecation warnings verin**
7. **Semantic versioning'e sadık kalın**
---
**Son Güncelleme**: 2025-10-13
**Versiyon**: 1.0.0

View file

@ -8,6 +8,9 @@ on:
- 'dokploy/**'
- 'images/production/**'
- 'resources/**'
tags:
- 'v*.*.*'
- 'dokploy-v*.*.*'
pull_request:
branches:
- main
@ -50,8 +53,11 @@ jobs:
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}}
flavor: |
latest=auto
- name: Build and push Docker image
uses: docker/build-push-action@v5

113
.github/workflows/tag-release.yml vendored Normal file
View file

@ -0,0 +1,113 @@
name: Create Release Tag
on:
workflow_dispatch:
inputs:
version:
description: 'Version number (e.g., 1.0.0)'
required: true
type: string
prerelease:
description: 'Is this a pre-release?'
required: false
type: boolean
default: false
permissions:
contents: write
packages: write
jobs:
create-tag:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Validate version format
run: |
if [[ ! "${{ github.event.inputs.version }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "❌ Invalid version format. Please use semantic versioning (e.g., 1.0.0)"
exit 1
fi
echo "✅ Version format valid: ${{ github.event.inputs.version }}"
- name: Check if tag exists
run: |
if git rev-parse "v${{ github.event.inputs.version }}" >/dev/null 2>&1; then
echo "❌ Tag v${{ github.event.inputs.version }} already exists"
exit 1
fi
echo "✅ Tag does not exist, proceeding..."
- name: Configure Git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Create and push tag
run: |
git tag -a "v${{ github.event.inputs.version }}" -m "Release v${{ github.event.inputs.version }}"
git push origin "v${{ github.event.inputs.version }}"
echo "✅ Tag v${{ github.event.inputs.version }} created and pushed"
- name: Create GitHub Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.version }}
release_name: Release v${{ github.event.inputs.version }}
body: |
## Frappe ERPNext Dokploy - v${{ github.event.inputs.version }}
### 📦 What's Included
- ✅ ERPNext (version-15)
- ✅ CRM
- ✅ LMS
- ✅ Builder
- ✅ Print Designer
- ✅ Payments
- ✅ Wiki
- ✅ Twilio Integration
- ✅ ERPNext Shipping
### 🚀 Deployment
**Dokploy**:
```
Repository: https://github.com/${{ github.repository }}
Tag: v${{ github.event.inputs.version }}
Compose Path: dokploy/docker-compose.yml
```
**Docker Pull**:
```bash
docker pull ghcr.io/${{ github.repository }}/erpnext-complete:${{ github.event.inputs.version }}
```
### 📚 Documentation
- [Quick Start Guide](https://github.com/${{ github.repository }}/blob/v${{ github.event.inputs.version }}/dokploy/QUICKSTART.md)
- [Deployment Guide](https://github.com/${{ github.repository }}/blob/v${{ github.event.inputs.version }}/dokploy/DEPLOYMENT.md)
- [Environment Variables](https://github.com/${{ github.repository }}/blob/v${{ github.event.inputs.version }}/dokploy/ENV_VARIABLES.md)
### 🔗 Resources
- Docker Image: `ghcr.io/${{ github.repository }}/erpnext-complete:${{ github.event.inputs.version }}`
- Changelog: [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/v${{ github.event.inputs.version }}/dokploy/CHANGELOG.md)
draft: false
prerelease: ${{ github.event.inputs.prerelease }}
trigger-docker-build:
needs: create-tag
runs-on: ubuntu-latest
steps:
- name: Trigger Docker Build
run: |
echo "✅ Tag created. Docker build will be triggered automatically."
echo "Check: https://github.com/${{ github.repository }}/actions/workflows/build-dokploy.yml"

View file

@ -1,5 +1,8 @@
[![Build Stable](https://github.com/frappe/frappe_docker/actions/workflows/build_stable.yml/badge.svg)](https://github.com/frappe/frappe_docker/actions/workflows/build_stable.yml)
[![Build Develop](https://github.com/frappe/frappe_docker/actions/workflows/build_develop.yml/badge.svg)](https://github.com/frappe/frappe_docker/actions/workflows/build_develop.yml)
[![Build Dokploy](https://github.com/ubden/frappe_docker/actions/workflows/build-dokploy.yml/badge.svg)](https://github.com/ubden/frappe_docker/actions/workflows/build-dokploy.yml)
[![GitHub release](https://img.shields.io/github/v/release/ubden/frappe_docker?label=dokploy)](https://github.com/ubden/frappe_docker/releases)
[![Docker Image](https://img.shields.io/badge/docker-erpnext--complete-blue)](https://github.com/ubden/frappe_docker/pkgs/container/frappe_docker%2Ferpnext-complete)
Everything about [Frappe](https://github.com/frappe/frappe) and [ERPNext](https://github.com/frappe/erpnext) in containers.

View file

@ -117,7 +117,8 @@ RUN bench init \
WORKDIR /home/frappe/frappe-bench
# Tüm uygulamaları yükle
COPY apps.json /tmp/apps.json
# Build context root'tan kopyala (dokploy klasörü altından)
COPY dokploy/apps.json /tmp/apps.json
RUN cd /home/frappe/frappe-bench && \
# ERPNext

2
dokploy/VERSION Normal file
View file

@ -0,0 +1,2 @@
1.0.0