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/tomcat altı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ı scp ve systemctl gibi komutları çalıştırabilecek yetkiye sahip olmalı.

İsteğe Bağlı Geliştirmeler

  • Test Aşaması: mvn test ekleyerek CI sürecinizi genişletebilirsiniz.
  • Yedekleme: Deploy öncesi eski WAR dosyasını yedekleyebilirsiniz.
  • Sağlık Kontrolü: curl http://localhost:8080/health ile 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.

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *