์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋์ ๊ณํ๋ฒ
- 0์ด๋์ด์๋๊ธธ
- concurrency
- SwiftUI ํํ ๋ฆฌ์ผ
- SQL
- ํ๋ก๊ทธ๋๋จธ์ค
- binarySearch
- algorithm
- Til
- IOS
- ์ด์งํ์
- duno
- SwiftUI
- discardableResult
- URLSession
- BFS
- dfs
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- Swift
- SOPT
- algoritm
- GCD
- APPJAM
- GroupBy
- DynamicProgramming
- SwiftUI Tutorials
- ๊ณ ๋์ kit
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๊ธฐ์ด๋ฌธ๋ฒ
- HAVIT
- Today
- Total
suvera-dev ๐ฅฆ
AWS ๋ฐฐํฌ์๋ํ ๊ตฌ์ถ _ 3. Github Actions์ผ๋ก docker image ์ ๋ก๋ ์๋ํ ๋ณธ๋ฌธ
AWS ๋ฐฐํฌ์๋ํ ๊ตฌ์ถ _ 3. Github Actions์ผ๋ก docker image ์ ๋ก๋ ์๋ํ
suvera 2023. 7. 13. 21:28
์์ ํฌ์คํ ์์ ์๋์ผ๋ก ํ๋ ์์ ( ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ECR์ ์ ๋ก๋ํ๋ ๊ณผ์ )์
Github Actions์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ๊นํ์ push๋ฅผ ํ์ ๋ ์๋์ผ๋ก ์ํ๋๋๋ก ํ๋ ๊ณผ์ ์ ๋ค๋ฃฐ ๊ฒ์ด๋ค !
์น ์๋ฒ : nginx
ํ๋ก์ธ์ค : ๊นํ main ๋ธ๋์น์ push ๋ช ๋ น์ด ์ผ์ด๋ ๊ฒฝ์ฐ, test, formatting & code analysis๋ฅผ ์งํ, ์์ฐจ์ ์ผ๋ก build, push ๋ช ๋ น์ ๋ฐ๋ผ ECR์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ํ๋ค.
1. Github ๋ ํฌ์งํ ๋ฆฌ ์์ฑ & docker file, gitub workflow ํ์ผ ๋ง๋ค๊ธฐ
๋ ํฌ์งํ ๋ฆฌ Clone ๋ฐ์์ ์๋์ ๊ฐ์ด ํด๋๋ฅผ ๊ตฌ์ฑํด์ค๋ค.
- .github/workflows ์์ deployment.yml ์์ฑ
- website ์์ index.html ์์ฑ
- Dockerfile ์์ฑ
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>๋ฐฐํฌ๊ฐ ์ ๋๋์ง ํ์ธํด๋ณด๋ ํ์ด์ง ์
๋๋ค.</p>
</body>
</html>
Dockerfile
FROM nginx:latest
LABEL name="demo"
COPY ./website/index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
deployment.yml
-> github actions์ workflow๋ฅผ ๋ด๋น
on:
push:
branches:
- main
pull_request:
branches:
- main
name: Demo CI on ECR
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build, tag, and push the image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ecr-test
IMAGE_TAG: ${{ github. sha }}
run: |
# Build a docker container and push it to ECR
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
echo "Pushing image to ECR..."
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
ํ๋์ฉ ์ด๋ค ๋ด์ฉ์ธ์ง ์ดํด๋ณด์ .
on:
push:
branches:
- main
pull_request:
branches:
- main
- main branch์์ push๋ Pull Request ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํํ ๊ฒ์ด๋ค. [] ๋ฐฐ์ด๋ก ๋ฃ๋๋ค๋ฉด ์ฌ๋ฌ๊ฐ ์์ฑํ ์ ์๋ฐ.
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
- ์ฌ๋ฌ๊ฐ์ step์ผ๋ก ๊ตฌ์ฑ๋ job๋ค์ ๊ฐ์ ์ธ์คํด์ค์์ ์คํ.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ๋ ฌ ์คํ, ๋ค๋ฅธ job์ ์์กด ๊ด๊ณ๋ ๊ฐ์ง ์ ์์.
- ubuntu-latest OS์์ ์คํ
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- uses๋ ์ด๋ฏธ ๋ง๋ค์ด์ ธ์ ์ ๊ณต๋๋ ์ก์ ์ฌ์ฉ์
- github์ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ aws ์๊ฒฉ์ฆ๋ช ์ ๊ฐ์ ธ์จ๋ค.
- AWS ์์ธ์ค ํค, ์ํฌ๋ฆฟํค, ๋ฆฌ์ !
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ecr-test
IMAGE_TAG: ${{ github. sha }}
- env: ๋ณ์์ง์
- ์์์ ๋ก๊ทธ์ธํ ECR์ ์ฃผ์๋ฅผ ๊ฐ์ ธ์์ ๋ณ์๋ก ๋ฃ๋๋ค.
- ์ด๋ฏธ์ง ํ๊ทธ๋ ์ํฌํ๋ก์ฐ๊ฐ ๋์ํ ๋ ํธ๋ฆฌ๊ฑฐ๋๋ ๋ฒ์ ์ ์๋ ์์ฑํ๋ค.
run: |
# Build a docker container and push it to ECR
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
echo "Pushing image to ECR..."
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
- ์์ env์์ ์ ์ํ ๊ฐ๋ค๋ก path๋ฅผ ๋ง๋ค์ด์ bulid, push
์ฐธ๊ณ ) ::set-output name=~~::path ๋ช ๋ น์ด๊ฐ deprecated ๋์ด์ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ์ฃผ์์ต๋๋ค.
2. Github์ AWS ์๊ฒฉ์ฆ๋ช ํ๊ฒฝ๋ณ์ ์ค์
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
์ฌ๊ธฐ์ AWS ์ ๊ทผ์ ์ํ ์์ธ์คํค, ์ํฌ๋ฆฟ ํค, ๋ฆฌ์ ์ ๋ํ ์ ๋ณด๋ฅผ secrets์์ ๊ฐ์ ธ์จ๋ค.
๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์๋๋ ๋ฐ์ดํฐ์ด๊ธฐ ๋๋ฌธ์ ์์ ํ๊ฒ ํ๊ฒฝ๋ณ์๋ก ์ฌ์ฉ.
Github - Setting - Security - Secrets and variables - New repository secrets
AWS_ACCESS_KEY_ID
AWS_REGION
AWS_SECRET_ACCESS_KEY
์ด๋ ๊ฒ 3๊ฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
3. ์ค์ ์ฝ๋ Push ํ ์คํธ / workflows ๋ชจ๋ํฐ๋ง
- ํ๋ก์ ํธ๋ก ๋์๊ฐ์ ์ง๊ธ๊น์ง ๋ง๋ ๊ฒ๋ค์ ์ปค๋ฐํ๊ณ ํธ์ ํ์ !
- ๊ทธ๋ฌ๋ฉด ๊นํ ์ก์ ํญ์ ์๋ก์ด workflows๊ฐ ์์ฑ๋๋ค.
์๋ก์ด ์ด๋ฏธ์ง๊ฐ ECR์ ์ ๋ก๋ ๋์๋์ง ํ์ธํ๊ธฐ !
์๋ก์ด ์ด๋ฏธ์ง ์์ฑ ํ์ธ ์๋ฃ ~!