192 lines
3.7 KiB
Markdown
192 lines
3.7 KiB
Markdown
# Erato Rate Limit Starter - Yayınlama Rehberi
|
||
|
||
## 🏠 Local Maven Repository
|
||
|
||
En basit yöntem - diğer projelerinizde hemen kullanabilirsiniz:
|
||
|
||
```bash
|
||
mvn clean install
|
||
```
|
||
|
||
## 🏢 Private Nexus/Artifactory
|
||
|
||
### 1. pom.xml'e distribution management ekleyin:
|
||
|
||
```xml
|
||
<distributionManagement>
|
||
<repository>
|
||
<id>erato-releases</id>
|
||
<url>https://nexus.erato.com.tr/repository/maven-releases/</url>
|
||
</repository>
|
||
<snapshotRepository>
|
||
<id>erato-snapshots</id>
|
||
<url>https://nexus.erato.com.tr/repository/maven-snapshots/</url>
|
||
</snapshotRepository>
|
||
</distributionManagement>
|
||
```
|
||
|
||
### 2. Deploy:
|
||
|
||
```bash
|
||
mvn clean deploy
|
||
```
|
||
|
||
## 🐙 GitHub Packages
|
||
|
||
### 1. pom.xml güncelleme:
|
||
|
||
```xml
|
||
<distributionManagement>
|
||
<repository>
|
||
<id>github</id>
|
||
<n>GitHub Packages</n>
|
||
<url>https://maven.pkg.github.com/erato/rate-limit-starter</url>
|
||
</repository>
|
||
</distributionManagement>
|
||
```
|
||
|
||
### 2. GitHub Actions workflow (.github/workflows/maven-publish.yml):
|
||
|
||
```yaml
|
||
name: Publish Package
|
||
|
||
on:
|
||
release:
|
||
types: [created]
|
||
|
||
jobs:
|
||
publish:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- uses: actions/checkout@v3
|
||
|
||
- name: Set up JDK 17
|
||
uses: actions/setup-java@v3
|
||
with:
|
||
java-version: '17'
|
||
distribution: 'temurin'
|
||
|
||
- name: Publish to GitHub Packages
|
||
run: mvn deploy
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
```
|
||
|
||
## 🗂️ Shared File System
|
||
|
||
Küçük takımlar için basit çözüm:
|
||
|
||
### 1. pom.xml:
|
||
|
||
```xml
|
||
<distributionManagement>
|
||
<repository>
|
||
<id>file-repo</id>
|
||
<url>file:///shared/maven-repo</url>
|
||
</repository>
|
||
</distributionManagement>
|
||
```
|
||
|
||
### 2. Deploy:
|
||
|
||
```bash
|
||
mvn clean deploy
|
||
```
|
||
|
||
### 3. Diğer projelerde kullanım:
|
||
|
||
```xml
|
||
<repositories>
|
||
<repository>
|
||
<id>shared-repo</id>
|
||
<url>file:///shared/maven-repo</url>
|
||
</repository>
|
||
</repositories>
|
||
```
|
||
|
||
## 🐳 Docker Registry (JIB)
|
||
|
||
### 1. pom.xml'e JIB plugin ekleyin:
|
||
|
||
```xml
|
||
<plugin>
|
||
<groupId>com.google.cloud.tools</groupId>
|
||
<artifactId>jib-maven-plugin</artifactId>
|
||
<version>3.3.2</version>
|
||
<configuration>
|
||
<to>
|
||
<image>registry.erato.com.tr/rate-limit-starter:${project.version}</image>
|
||
</to>
|
||
</configuration>
|
||
</plugin>
|
||
```
|
||
|
||
### 2. Build & Push:
|
||
|
||
```bash
|
||
mvn compile jib:build
|
||
```
|
||
|
||
## 📦 Manual JAR Distribution
|
||
|
||
### 1. JAR oluştur:
|
||
|
||
```bash
|
||
mvn clean package
|
||
```
|
||
|
||
### 2. Diğer projelerde kullanım:
|
||
|
||
```bash
|
||
# JAR'ı lib klasörüne kopyala
|
||
mkdir -p lib
|
||
cp erato-rate-limit-spring-boot-starter-1.0.0.jar lib/
|
||
|
||
# pom.xml'e system dependency ekle
|
||
<dependency>
|
||
<groupId>tr.com.erato</groupId>
|
||
<artifactId>erato-rate-limit-spring-boot-starter</artifactId>
|
||
<version>1.0.0</version>
|
||
<scope>system</scope>
|
||
<systemPath>${project.basedir}/lib/erato-rate-limit-spring-boot-starter-1.0.0.jar</systemPath>
|
||
</dependency>
|
||
```
|
||
|
||
## 🔑 Güvenlik
|
||
|
||
Repository credentials için environment variables kullanın:
|
||
|
||
```bash
|
||
export NEXUS_USERNAME=your-username
|
||
export NEXUS_PASSWORD=your-password
|
||
mvn deploy
|
||
```
|
||
|
||
Veya `~/.m2/settings.xml` dosyasında saklayın.
|
||
|
||
## 🏷️ Versioning
|
||
|
||
Semantic versioning kullanın:
|
||
|
||
- **1.0.0** - İlk stable release
|
||
- **1.0.1** - Bug fixes
|
||
- **1.1.0** - Yeni özellikler (backward compatible)
|
||
- **2.0.0** - Breaking changes
|
||
|
||
Version güncelleme:
|
||
|
||
```bash
|
||
mvn versions:set -DnewVersion=1.0.1
|
||
mvn versions:commit
|
||
```
|
||
|
||
## 📋 Release Checklist
|
||
|
||
- [ ] Testler geçiyor mu? `mvn test`
|
||
- [ ] Javadoc complete mi? `mvn javadoc:javadoc`
|
||
- [ ] README güncel mi?
|
||
- [ ] CHANGELOG eklendi mi?
|
||
- [ ] Version number doğru mu?
|
||
- [ ] Tag oluşturuldu mu? `git tag v1.0.0`
|
||
- [ ] Deploy edildi mi? `mvn deploy` |