1
- name : deploy-main # 파이프라인 이름은 자유롭게 지어주세요
1
+ name : deploy-main
2
2
3
3
on :
4
4
push :
5
5
branches :
6
- - main # main 브랜치에 새로운 커밋이 올라왔을 떄 실행되도록 합니다
7
- workflow_dispatch : # 필요한 경우 수동으로 실행할 수도 있도록 합니다
6
+ - main
7
+ workflow_dispatch :
8
8
9
9
jobs :
10
10
deploy :
11
- runs-on : ubuntu-latest # CI/CD 파이프라인이 실행될 운영체제 환경을 지정합니다
11
+ runs-on : ubuntu-latest
12
12
steps :
13
- - TODO
13
+ - name : Checkout
14
+ uses : actions/checkout@v4
15
+
16
+ - name : Configure SSH
17
+ run : |
18
+ mkdir -p ~/.ssh
19
+ echo "$EC2_SSH_KEY" > ~/.ssh/id_rsa
20
+ chmod 600 ~/.ssh/id_rsa
21
+
22
+ cat >>~/.ssh/config <<END
23
+ Host playground-umc-7th
24
+ HostName $EC2_HOST
25
+ User $EC2_USER
26
+ IdentityFile ~/.ssh/id_rsa
27
+ StrictHostKeyChecking no
28
+ END
29
+ env :
30
+ EC2_USER : ubuntu
31
+ EC2_HOST : ${{ secrets.EC2_HOST }}
32
+ EC2_SSH_KEY : ${{ secrets.EC2_SSH_KEY }}
33
+
34
+ - name : Copy Workspace
35
+ run : |
36
+ ssh playground-umc-7th 'sudo mkdir -p /opt/app'
37
+ ssh playground-umc-7th 'sudo chown ubuntu:ubuntu /opt/app'
38
+ scp -r ./[!.]* playground-umc-7th:/opt/app
39
+
40
+ - name : Install dependencies
41
+ run : |
42
+ ssh playground-umc-7th 'npm install --prefix /opt/app/'
43
+
44
+ - name : Copy systemd service file
45
+ run : |
46
+ ssh playground-umc-7th '
47
+ echo "[Unit]
48
+ Description=UMC 7th Project
49
+ After=network.target
50
+
51
+ [Service]
52
+ User=${USER}
53
+ ExecStart=/usr/bin/npm run dev --prefix /opt/app/
54
+ Restart=always
55
+
56
+ [Install]
57
+ WantedBy=multi-user.target" | sudo tee /etc/systemd/system/app.service
58
+ '
59
+
60
+ - name : Enable systemd service
61
+ run : |
62
+ ssh playground-umc-7th 'sudo systemctl daemon-reload'
63
+ ssh playground-umc-7th 'sudo systemctl enable app'
64
+
65
+ - name : Restart systemd service
66
+ run : |
67
+ ssh playground-umc-7th 'sudo systemctl restart app'
0 commit comments