본문 바로가기
개발 지식/CI, CD

04. [실습] GitHub Actions 기본 문법 정리

by gamdong2 2024. 12. 17.

📖 학습 목표

  • GitHub Actions 기본 문법 정리

* GitHub Actions 공식 문서: https://docs.github.com/ko/actions


1. GitHub Actions 기본 문법 정리

1) YAML 파일 생성 및 실행

① main 브랜치로 이동 
② VS Code 에서 기존 GitHub 프로젝트 루트 디렉토리 열기
③  .github/workflows 폴더 안에 YAML 파일 작성

# deploy.yml
name: Github Actions 실행시켜보기

on:
  push:
    branches:
      - main

jobs:
  My-Deploy-Job:
    runs-on: ubuntu-latest

    steps:
      - name: Hello World 찍기
        run: echo "Hello World"

④ YAML 파일을 GitHub 레포지토리에 Push
⑤ GitHub Actions 실행 확인

  • GitHub 레포지토리 웹 페이지 → Actions 탭에서 설정한 워크플로우가 실행되는지 확인
  • GitHub Actions 에서 작성한 코드들이 실행된 흔적 확인
    • 즉, deploy.yml 파일이 GitHub에 Push됨 → 일종의 로직을 실행시키는 하나의 컴퓨터 GitHub Actions가 YAML 파일의 코드를 읽어서 실행시킴
  • 실행 상태(성공/실패)를 확인하고 로그를 통해 문제를 디버깅할 수 있음

 
2) YAML 파일's 문법 뜯어보기

# deploy.yml

# Workflow: 하나의 YAML 파일 (단위)
name: Github Actions 실행시켜보기  # name: 워크플로우의 이름

# Event: 실행되는 시점을 설정
on:  # 3. 이 GitHub Actions의 로직을 실행시키겠다
  push:  # 2. Push가 됐을 때
    branches:
      - main  # 1. main 브랜치에

# 하나의 Workflow는 1개 이상의 Job으로 구성
# 여러 Job은 병렬로 수행됨
jobs:
  My-Deploy-Job:  # Job을 식별하기 위한 id
    runs-on: ubuntu-latest  # ubuntu 운영체제 / 가장 최신 버전

    # Step: 특정 작업을 수행하는 가장 작은 단위
    # 하나의 Job은 여러 Step들로 구성되어 있음
    steps:
      - name: Hello World 찍기  # Step의 이름
        run: echo "Hello World"  # Step이 수행할 코드: 현재 리눅스 코드
   	  
      # Step 추가
      - name: 여러 명령어 문장 작성하기
        run: |  # run 코드 여러줄 작성법: 바(|) 놓고 아래줄부터 줄 바꿈하며 작성
          echo "Good"
          echo "Morning"
      
      # Step 추가2
      - name: GitHub Actions 자체에 저장되어 있는 변수 사용해보기
        run: | 
          echo $GITHUB_SHA  # $: 리눅스에서 변수를 나타내는 표현  # 변수를 할당한 적 없지만, GitHub Actions 자체에 저장된 값을 사용
          echo $GITHUB_REPOSITORY
          
      # Step 추가3
      - name: 아무한테 노출되면 안되는 값 사용해보기
        run: | 
          echo ${{ secrets.MY_NAME }}
          echo ${{ secrets.MY_HOBBY }}
  • Workflow: 하나의 YAML 파일 (단위)
    • name: Workflow의 이름
  • Event: 이 Workflow가 실행되는 시점을 설정
    • ex: main 브랜치에 Push가 됐을 때 이 GitHub Actions 로직을 실행시킴
  • Job: 하나의 Workflow는 1개 이상의 Job으로 구성
    • 여러 Job은 병렬로 수행됨
  • Step: 하나의 Job은 여러개의 Step으로 나눠짐
    • name: Step의 이름
    • run: Step이 수행할 작업 (코드)
[tip] Step 추가 → GitHub Push
- name: 여러 명령어 문장 작성하기
[tip] Step 추가2 → GitHub Push
- name: GitHub Actions 자체에 저장되어 있는 변수 사용해보기
  - GitHub Actions 자체 변수
    ▪ $GITHUB_SHA: 현재 커밋's id
    ▪ $GITHUB_REPOSITORY: 현재 레포지토리 
[tip] Step 추가3 → GitHub Push
- name: "아무한테 노출되면 안되는 값"
- GitHub Actions에 사용할 시크릿 값 저장하기
  (1) GitHub 웹페이지 → Settings → Secrets and variables → Actions → Secrets → New repository secret 
      ▪ Name: 시크릿 값 키 (ex: MY_NAME)
      ▪ Secret: 시크릿 값 (ex: gamdong)
  (2) Add secret 으로 시크릿 값 저장; 한 번 저장된 시크릿 값을 확인할 방법은 없음 
  (3) GitHub Push → Actions 확인해보면, 시크릿 값은 별표(***)로 출력

 
 

3) GitHub Actions 전체 구조

  • Event 발생
    • branch(main)에 이벤트(push)가 발생했을 때 워크플로우 실행시킴
  • Workflows ⊃ Job ⊃ Step

'개발 지식 > CI, CD' 카테고리의 다른 글

CI/CD와 무중단 배포  (1) 2024.12.19
03. GitHub Actions CI/CD 흐름  (0) 2024.12.17
02. GitHub Actions  (0) 2024.12.17
01. CI/CD를 왜 배우는 걸까?  (0) 2024.12.17