This repository has been archived by the owner on Dec 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaction.yml
92 lines (83 loc) · 2.89 KB
/
action.yml
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
name: "Deploy to dev"
description: "Docker 이미지를 만들어 ECR에 Push 하고 dev용 EC2에 배포한다."
inputs:
repository:
description: "Name of ECR Repository"
required: true
docker-context:
description: "Docker context"
required: false
default: "./server"
docker-file:
description: "Docker file"
required: false
default: "./ci/Dockerfile"
docker-target:
description: "Docker target"
required: false
default: "dist"
access-key-id:
description: "Access Key Id of AWS"
required: true
secret-access-key:
description: "Secret Access Key of AWS"
required: true
host:
description: "Host of Dev EC2"
required: true
username:
description: "Username of Dev EC2"
required: true
key:
description: "SSH Private key of Dev EC2"
required: true
run-options:
description: "Options for Docker run"
required: false
default: ""
runs:
using: "composite"
steps:
- name: Set environment variables
run: |
echo repository = ${{ inputs.repository }}, github.ref = ${{ github.ref }}
echo "GITHUB_REF=${{ github.ref }}" >> $GITHUB_ENV
shell: bash
- name: Checkout
uses: actions/checkout@v3
- name: Set environment variables (with tag)
if: ${{ startsWith(env.GITHUB_REF, 'refs/tags/') }}
run: echo "RELEASE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
shell: bash
- name: Set environment variables (without tag)
if: ${{ !startsWith(env.GITHUB_REF, 'refs/tags/') }}
run: echo "RELEASE_TAG=dev" >> $GITHUB_ENV
shell: bash
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ inputs.access-key-id }}
aws-secret-access-key: ${{ inputs.secret-access-key }}
aws-region: ap-northeast-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build and push
uses: docker/build-push-action@v3
with:
context: ${{ inputs.docker-context }}
file: ${{ inputs.docker-file }}
target: ${{ inputs.docker-target }}
push: true
tags: ${{ steps.login-ecr.outputs.registry }}/${{ inputs.repository }}:${{ env.RELEASE_TAG }}
- name: Deploy to EC2
if: ${{ !startsWith(env.GITHUB_REF, 'refs/tags/') }}
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.host }}
username: ${{ inputs.username }}
key: ${{ inputs.key }}
script: |
sudo docker rm -f ${{ inputs.repository }}
sudo docker rmi -f ${{ steps.login-ecr.outputs.registry }}/${{ inputs.repository }}:${{ env.RELEASE_TAG }}
sudo docker run --name ${{ inputs.repository }} ${{ inputs.run-options }} --env-file ${{ inputs.repository }}.env --pull=always -d ${{ steps.login-ecr.outputs.registry }}/${{ inputs.repository }}:${{ env.RELEASE_TAG }}