-
Notifications
You must be signed in to change notification settings - Fork 1
97 lines (84 loc) · 3.47 KB
/
deploy-swagger-ui.yaml
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
name: Deploy Swagger UI
on:
push:
branches:
- main
env:
NCP_ACCESS_KEY: ${{ secrets.NCP_ACCESS_KEY }}
NCP_SECRET_KEY: ${{ secrets.NCP_SECRET_KEY }}
NCP_VPC_ID: ${{ secrets.NCP_VPC_ID }}
NCP_AGC_ID: ${{ secrets.NCP_AGC_ID }}
NCP_API_URL: https://ncloud.apigw.ntruss.com
API_DOC_SERVER_HOST: ${{ secrets.API_DOC_SERVER_HOST }}
API_DOC_SERVER_SSH_PORT: ${{ secrets.API_DOC_SERVER_SSH_PORT }}
API_DOC_SERVER_USERNAME: ${{ secrets.API_DOC_SERVER_USERNAME }}
API_DOC_SERVER_PASSWORD: ${{ secrets.API_DOC_SERVER_PASSWORD }}
SSH_PORT: 22
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get Github Actions IP
id: ip
run: |
PUBLIC_IP=$(curl -s https://ifconfig.me)
echo "::set-output name=public_ip::$PUBLIC_IP"
- name: Setup JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Create OpenAPI Documentation
run: ./gradlew clean :jaknaeso-server:openapi3
- name: Setting NCP CLI & Credentials
run: |
chmod +x ./scripts/workflows/setup-ncp-cli.sh
./scripts/workflows/setup-ncp-cli.sh ${{ env.NCP_ACCESS_KEY }} ${{ env.NCP_SECRET_KEY }} ${{ env.NCP_API_URL }}
- name: Add Github Action Ip to Security group
run: |
chmod -R 777 ~/cli_linux
cd ~/cli_linux
./ncloud vserver addAccessControlGroupInboundRule \
--regionCode KR --vpcNo ${{ env.NCP_VPC_ID }} \
--accessControlGroupNo ${{ secrets.NCP_AGC_ID }} \
--accessControlGroupRuleList "protocolTypeCode='TCP', ipBlock='${{ steps.ip.outputs.public_ip }}/32', portRange='22'" > /dev/null 2>&1
- name: Copy OAS to API-doc Server
uses: appleboy/scp-action@master
with:
host: ${{ env.API_DOC_SERVER_HOST }}
port: ${{ env.API_DOC_SERVER_SSH_PORT }}
username: ${{ env.API_DOC_SERVER_USERNAME }}
password: ${{ env.API_DOC_SERVER_PASSWORD }}
source: jaknaeso-server/build/api-spec/openapi3.yaml
target: ~/app/docs
strip_components: 3
overwrite: true
- name: Deploy Swagger UI
uses: appleboy/ssh-action@master
with:
host: ${{ env.API_DOC_SERVER_HOST }}
port: ${{ env.API_DOC_SERVER_SSH_PORT }}
username: ${{ env.API_DOC_SERVER_USERNAME }}
password: ${{ env.API_DOC_SERVER_PASSWORD }}
script: |
CONTAINER_NAME="api-doc"
CONTAINER_ID=$(sudo docker ps --filter name=$CONTAINER_NAME -q)
if [ -z "$CONTAINER_ID" ]; then
sudo docker run -d -p 80:8080 \
-v ~/app/docs:/usr/share/nginx/html/docs \
-e URL="/docs/openapi3.yaml" \
--name $CONTAINER_NAME swaggerapi/swagger-ui:latest
fi
- name: Remove Github Action Ip from Security group
if: always()
run: |
chmod -R 777 ~/cli_linux
cd ~/cli_linux
./ncloud vserver removeAccessControlGroupInboundRule \
--regionCode KR --vpcNo ${{ env.NCP_VPC_ID }} \
--accessControlGroupNo ${{ env.NCP_AGC_ID }} \
--accessControlGroupRuleList "protocolTypeCode='TCP', ipBlock='${{ steps.ip.outputs.public_ip }}/32', portRange='${{ env.SSH_PORT }}'" > /dev/null 2>&1