CICD 배포/CICD 배포
[ GitHub ] Action
김붕어87
2023. 10. 25. 10:43
반응형
GitHub Action으로 CI/CD를 구성할 수 있습니다.
GitHub-hosted-runner는 GitHub 자원을 사용하며, 한달에 스토리지 : 500MB, 시간 : 2000분을 무료 제공
Self-hosted-runner는 개인 노트북,서버 자원을 사용하여 CI/CD 진행
1. GitHub Action 사용방법
# 사용할 이름을 지정
name: test
# 해당 Action은 아래의 조건을 만족할 때 실행됨
on:
push:
branches: [ main ] # main 브랜치에 push가 발생할 때
pull_request:
branches: [ main ] # main 브랜치에 pull_request가 발생할 때
workflow_call # 워크플로우 호출
outputs:
IMAGE_TAG:
description: "IMAGE TAG"
value: ${{ jobs.application-ci.outputs.IMAGE_TAG }}
inputs:
IMAGE_TAG:
required: true
type: string
# 수동으로 해당 action을 실행하고 싶을때 필요한 옵션
# 분기 또는 태그에 대한 머지 & 커밋 발생할 때
workflow_dispatch:
jobs:
# test-nginx 라는 job 정의
test-nginx:
# ubuntu-latest github hosted runner를 사용
runs-on: ubuntu-latest
# setps에 오는 내용들은 순서대로 수행
steps:
# repository 접근을 위해 checkout 수행
- uses: actions/checkout@v2
# [Script 1] 실행
- name: "[Script 1]"
run: echo Hello!
- name: "[Script 2]"
run: |
echo Hi! Hi!
echo This is multi line script
반응형
2. docker buildx
- 도커 작동 과정
- 과정1) dockerfile을 OCI 이미지로 빌드
- 과정2) OCI 이미지를 Container 빌드
- docker buildx는 OCI 이미지를 만들어주는 역
... 중간 생략 ...
jobs:
build:
# ubuntu-latest github runner 사용
runs-on: ubuntu-latest
steps:
# repository checkout
- uses: actions/checkout@v2
# 태그명을 다른 setp에서 사용할 수 있도록 output에 저장
- name: Set output
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
# tonistiigi/binfmt 이미지를 이용해 qemu 설치
- name: Docker Setup QEMU
uses: docker/setup-qemu-action@v1.2.0
# docker buildx 설치
- name: Docker Setup Buildx
uses: docker/setup-buildx-action@v1.6.0
# secrets를 이용해 Docker Hub 로그인
- name: Docker Login
uses: docker/login-action@v1.10.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
# buildx 명령어로 amd64, arm64, arm/v6, arm/v7 아키텍처 이미지 빌드 및
- name: Build Image
working-directory: python
run: docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 -t inerplat/github-action-example:${{ steps.vars.outputs.tag }} --push .
steps:
- name: Checkout DDO
uses: actions/checkout@v3
# GitHub Repository를 git checkout으로 코드 다운로드 받기
- uses: actions/setup-java@v3
with:
distribution: "adopt"
java-version: "17"
# java 설치하기
- uses: actions/setup-node@v3
with:
node-version: "16.15.1"
# node js 설치하기
- name: Cache Build Artifacts
uses: ./.github/actions/cache-build-artifacts
with:
cache-python: "false"
# 반복되는 작업은 작업 시간을 줄이기 위해서 "Cache Action"이 가능합니다.
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
# Gradle를 사용해서 Java 빌드 및 테스트
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
id: login-aws
with:
role-to-assume: ${{ secrets.role_to_assume }}
role-session-name: rolesession
aws-region: ${{ inputs.aws-region }}
mask-aws-account-id: false
# AWS Role 권한 획득
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
# ECR 로그인
- name: Install yq
run: |
sudo add-apt-repository ppa:rmescandon/yq
sudo apt update
sudo apt install yq -y
# yaml를 수정할 수 있는 Tool
반응형