Spring Boot WAR'ı GitLab CI ile Tomcat’e Otomatik Deploy Etme
Spring Boot projelerinizin otomatik olarak Tomcat’e deploy edilmesini ister misiniz? GitLab CI/CD ile bu işlemi tamamen otomatize edebilir, hata payını azaltabilir ve dağıtım sürenizi hızlandırabilirsiniz. Bu yazıda WAR paketiyle GitLab pipeline oluşturmayı, Tomcat'e deploy işlemini ve güvenlik ipuçlarını adım adım ele alacağız.
Ön Koşullar
- Spring Boot projeniz
<packaging>war</packaging>olarak yapılandırılmış olmalı. - Tomcat kurulmuş ve çalışıyor olmalı (örneğin:
/opt/tomcataltında). - Tomcat sunucusuna SSH erişiminiz olmalı.
- WAR dosyası
webapps/klasörüne kopyalanmalı.
.gitlab-ci.yml Yapılandırması
stages:
- build
- deploy
variables:
SSH_USER: root
SSH_HOST: 46.101.94.18
DEPLOY_DIR: /opt/tomcat/webapps
WAR_NAME: backend.war
before_script:
- apt-get update && apt-get install -y openssh-client
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $SSH_HOST >> ~/.ssh/known_hosts
build:
image: maven:3.9-eclipse-temurin-17
stage: build
script:
- mvn clean package -DskipTests
artifacts:
paths:
- target/*.war
deploy:
stage: deploy
script:
- echo "Deploying to Tomcat at $SSH_HOST ..."
- scp target/*.war $SSH_USER@$SSH_HOST:$DEPLOY_DIR/$WAR_NAME
- ssh $SSH_USER@$SSH_HOST "systemctl restart tomcat || /opt/tomcat/bin/shutdown.sh && /opt/tomcat/bin/startup.sh"
Güvenlik Önerileri
- SSH_PRIVATE_KEY ortam değişkeni GitLab'da tanımlı olmalı.
- Kullanıcı
scpvesystemctlgibi komutları çalıştırabilecek yetkiye sahip olmalı.
İsteğe Bağlı Geliştirmeler
- Test Aşaması:
mvn testekleyerek CI sürecinizi genişletebilirsiniz. - Yedekleme: Deploy öncesi eski WAR dosyasını yedekleyebilirsiniz.
- Sağlık Kontrolü:
curl http://localhost:8080/healthile Tomcat’in çalışıp çalışmadığını kontrol edebilirsiniz.
Sonuç
GitLab CI ile Spring Boot WAR dosyasını Tomcat’e otomatik olarak deploy etmek, hem zaman kazandırır hem de manuel hataların önüne geçer. Basit yapılandırmalarla güçlü bir CI/CD süreci oluşturabilirsiniz. Gelişmiş güvenlik, test ve rollback özellikleri ile süreci daha da güvenli hale getirmek mümkündür.
Sık Sorulan Sorular (SSS)
S: Maven projem JAR paketli, WAR olarak değiştirmek için ne yapmalıyım?
C: <packaging>war</packaging> olarak güncelleyin ve SpringBootServletInitializer sınıfını ekleyin.
S: Deploy işlemini Tomcat yöneticisi ile yapabilir miyim?
C: Evet, curl ve Basic Auth ile deploy işlemi gerçekleştirebilirsiniz.