μ ν¨μ€ νλ‘μ νΈ λΉλ
μ ν¨μ€λ₯Ό μ¬μ©ν΄μ νλ‘μ νΈλ₯Ό λΉλνκΈ° μν΄μλ μμ΄ν μ λ§λ€μ΄μΌ νλ€. μμ΄ν μ μμ±ν λμλ νλ‘μ νΈ λΉλ μ νμ λ°λΌ μΉ UI λ°©μμ ν리μ€νμΌ λλ μ€ν¬λ¦½νΈλ‘ μμ±νλ νμ΄νλΌμΈ λ±μ μ νν μ μκ² μ§μνκ³ μλ€. μΈν°λ·μ 곡μ λ λ΄μ©μ λ°λΌμλ νμ΄νλΌμΈ μ€ν¬λ¦½νΈλ₯Ό μμ±νλ μμ κ° λ§μ΄ 보μ΄μ§λ§ λͺΈμ λ΄κ³ μλ μ‘°μ§μμλ ν리μ€νμΌ μ νμΌλ‘λ κ°λ¨νκ² μνλ λΉλ κ²°κ³Όλ₯Ό ꡬμ±νμ¬ μ¬μ©νκ³ μλ€.
λ³Έ κΈμμ μ¬μ©λ νλ‘μ νΈ : kdevkr/beanstalk-deploy-sample
μ 리νμ§ν 리λ μμ μ AWS Beanstalk Java SE Platform μΌλ‘ λ°°ν¬νκΈ° μν μμ λ₯Ό μμ±ν κ°λ¨ν μ€νλ§ λΆνΈ νλ‘μ νΈμ΄λ€. λ³λ€λ₯Έ κΈ°λ₯μ ν¬ν¨νκ³ μμ§ μμΌλ©° build.gradleμ λͺκ°μ§ νλ‘μ νΈ λΉλλ₯Ό μν μ€μ μ ν΄λ μνμ΄λ€. μλ₯Ό λ€μ΄, -Pversion λΌλ νλ‘μ νΈ μμ±μ ν΅ν΄μ λΉλ λ²μ μ μ μ©ν μ μμμ μ μ μλ€.
./gradlew zipBeanstalk -Pversion='1.0.1'
# build/distributions/beanstalk-1.0.1.zip
- build/libs: .war νμΌ λ° Procfileμ΄ μμ±λλ ν΄λ
- build/distributions: Beanstalk λ²λ€ νμΌμ΄ μμ±λλ ν΄λ
λΉλ μ 맀κ°λ³μλ‘ κΉ νκ·Έ μ ννκΈ°
Parameterized Build μ Git Parameter νλ¬κ·ΈμΈμ μ¬μ©ν΄μ κΉ μ»€λ°μ 릴리μ¦λ₯Ό μν λ²μ μ νκ·Έλ‘ λ¬μλκ³ μ ν¨μ€μμ κΉ νκ·Έλ₯Ό νν°νμ¬ μ νν¨μΌλ‘μ¨ μνλ κΈ°μ€μ μμ€ μ½λλ₯Ό κ°μ§λ μ ν리μΌμ΄μ μ λΉλν μ μλ€. μλμ κ°μ΄ μ€μ νλ©΄ νλ‘μ νΈ λΉλ μ κΉ νκ·Έλ₯Ό μ°Ύμμ μ νν μ μκ³ ν΄λΉ νκ·Έκ° μλ 컀λ°μ μμ€λ₯Ό κΈ°μ€μΌλ‘ νλ€.
νλ‘μ νΈ λΉλ λ²μ μ μ©νκΈ°
μμμ v1.0.0 νκ·Έλ₯Ό λ²μ μΌλ‘ μ νν μ μμΌλ©° μ΄ λ²μ μ λΉλλλ μ ν리μΌμ΄μ λ²μ μλ μ μ©νκΈ° μν΄μλ κ·Έλλ€ νλ‘μ νΈ λΉλ μ νλ‘μ νΈ μμ±μΌλ‘μ¨ μ§μ λλλ‘ ν΄μΌνλ€. λΉλ λ¨κ³μμ Invoke Gradle scriptμ κ³ κΈ μ΅μ μ μ΄μ΄λ³΄λ©΄ λͺ¨λ μ‘ νλΌλ―Έν°λ₯Ό νλ‘μ νΈ μμ±μΌλ‘ μ λ¬νλ νλͺ©μ μ νν μ μλ€.
# λ§μ½, κ·Έλλ€ μ€ν¬λ¦½νΈκ° μλ μ§μ μμμ λΉλ λͺ
λ Ήμ΄λ₯Ό μννκ³ μΆλ€λ©΄ μλμ κ°μ΄ μ νν νκ·Έ νλΌλ―Έν°λ₯Ό μ μ©μν¬ μ μλ€.
./gradlew -Pversion=$version zipBeanstalk
νλ‘μ νΈ λΉλ κ²°κ³Όλ₯Ό μ¬λμΌλ‘ 보λ΄κΈ°
νλ‘μ νΈ κ·λͺ¨μ λ°λΌ λΉλ μν μκ°μ΄ μλΉν μμλ μ μμΌλ―λ‘ νλ‘μ νΈ λ¦΄λ¦¬μ¦λ₯Ό λ΄λΉνλ μΈμλ€μ΄ λ¦΄λ¦¬μ¦ λ²μ λΉλμ μ±κ³΅ λλ μ€ν¨ μ 무λ₯Ό νμΈν μ μλλ‘ μ¬λ λ©μ μ (κ΅¬κΈ μ±μ΄λ μ΄λ©μΌλ κ°λ₯)λ‘ λ©μμ§λ₯Ό 보λ΄λλ‘ μλ¦Ό μ€μ μ νλ κ²μ΄ μ’λ€. Jenkins CI μ¬λ μ± κ·Έλ¦¬κ³ Slack Notification νλ¬κ·ΈμΈκ³Ό ν¨κ» 컀μ€ν λ©μμ§λ₯Ό νμ©νλ€λ©΄ SFTP μλ²λ₯Ό μ¬μ©ν΄μ λ³λλ‘ λΉλλ μ ν리μΌμ΄μ μ μ λ¬νκ³ μλ λ°°ν¬λ₯Ό ν΄μΌνλ€λ©΄ μ λ‘λλ SFTP κ²½λ‘λ₯Ό λ©μμ§λ‘ μ λ¬νλ€κ±°λ μ ν리μΌμ΄μ λ°°ν¬λ₯Ό μν΄μ μ€νν΄μΌν λͺ λ Ήμ΄λ₯Ό μλ΄νλλ‘ κ΅¬μ±ν μλ μλ€.
λΉλ νμΌμ μ격 νΈμ€νΈλ‘ μ λ¬νκΈ°
AWS Beanstalk νκ²½μ λ°°ν¬νκΈ° μν΄μλ AWS Elastic Beanstalk Publisher νλ¬κ·ΈμΈμ μ¬μ©νκ² μ§λ§ 보μ μμ λ¬Έμ λ‘ μ ν리μΌμ΄μ λΉλ νμΌμ SFTP μλ²λ‘ μ λ‘λν΄μΌν νκ²½μ΄λΌλ©΄ Publish Over SSH νλ¬κ·ΈμΈμ μ¬μ©ν΄μ PEM μΈμ¦μλ₯Ό ν΅ν΄ λΉλ νμΌμ μ격 νΈμ€νΈλ‘ μ λ¬νλλ‘ κ΅¬μ±ν μ μλ€.
- AWS Elastic Beanstalk Publisher
- S3 publisher
- Publish Over SSH
μ΄μ λν λ€μν μμ λ kdevkr/mambo-box/jenkinsμ κΈ°λ‘ν΄λκ³ μ νλ€.