-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdeploy.yml
More file actions
108 lines (94 loc) · 2.83 KB
/
deploy.yml
File metadata and controls
108 lines (94 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
---
- name: Java Spring 애플리케이션 배포 (Gradle 사용)
hosts: app_servers
become: yes
vars:
app_name: my-spring-app
app_version: "{{ lookup('env', 'BUILD_NUMBER') }}"
app_jar: "{{ app_name }}-{{ app_version }}.jar"
deploy_dir: /opt/{{ app_name }}
repo_url: 'https://github.com/9oormthon-univ/2024_DANPOON_TEAM_22_BE.git'
gradle_version: 7.5
tasks:
- name: 필요한 패키지 설치
apt:
name:
- openjdk-17-jdk
- wget
state: present
become: yes
- name: Gradle 설치 여부 확인
stat:
path: /opt/gradle
register: gradle_install
- name: Gradle 다운로드 및 설치
unarchive:
src: "https://services.gradle.org/distributions/gradle-{{ gradle_version }}-bin.zip"
dest: /opt/
remote_src: yes
creates: "/opt/gradle-{{ gradle_version }}"
when: not gradle_install.stat.exists
- name: Gradle 심볼릭 링크 생성
file:
src: "/opt/gradle-{{ gradle_version }}"
dest: /opt/gradle
state: link
when: not gradle_install.stat.exists
- name: 환경 변수 설정 (Gradle)
lineinfile:
path: /etc/profile.d/gradle.sh
create: yes
line: |
export GRADLE_HOME=/opt/gradle
export PATH=${GRADLE_HOME}/bin:${PATH}
state: present
notify: Reload environment
- name: 환경 변수 로드
shell: source /etc/profile.d/gradle.sh
args:
executable: /bin/bash
when: ansible_os_family == "Debian"
- name: 애플리케이션 디렉토리 생성
file:
path: "{{ deploy_dir }}"
state: directory
owner: useongee
- name: 최신 코드 가져오기
git:
repo: "{{ repo_url }}"
dest: "{{ deploy_dir }}"
version: main
- name: Gradle 빌드
command: gradle build
args:
chdir: "{{ deploy_dir }}"
environment:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
GRADLE_HOME: /opt/gradle
- name: JAR 파일 복사
copy:
src: "{{ deploy_dir }}/build/libs/{{ app_name }}-*.jar"
dest: "{{ deploy_dir }}/{{ app_jar }}"
remote_src: yes
- name: 기존 애플리케이션 중지
systemd:
name: "{{ app_name }}"
state: stopped
enabled: no
- name: 새 애플리케이션 시작
systemd:
name: "{{ app_name }}"
state: started
enabled: yes
daemon_reload: yes
exec_start: /usr/bin/java -jar {{ deploy_dir }}/{{ app_jar }}
exec_stop: /bin/kill -15 $MAINPID
- name: 애플리케이션 상태 확인
systemd:
name: "{{ app_name }}"
state: started
handlers:
- name: Reload environment
shell: source /etc/profile.d/gradle.sh
args:
executable: /bin/bash