0. 들어가며
[BASIC #1]에서는 CI/CD 개념과 GitHub Actions의 이론을 알아보았다. 이번 포스팅에서는 실제로 GitHub 저장소를 만들고, 첫 번째 워크플로우를 작성하여 실행해보겠다. 이론만 공부하면 지루하니까, 직접 손으로 작성해보면서 GitHub Actions의 기본 동작 방식을 체험해보자.
1. 실습 준비: GitHub Repository 생성
1.1. 새 저장소 만들기


- GitHub에 로그인한다.
- 우측 상단 + 버튼 → New repository 클릭
- 저장소 정보 입력:
- Repository name: github-actions-practice
- Description: (선택) "GitHub Actions 연습용 저장소"
- Public 또는 Private 선택 (Public 권장)
- "Add a README file" 체크
- Create repository 버튼 클릭
2. 워크플로우 파일 생성
2.1. .github/workflows 디렉토리 생성

GitHub Actions는 반드시 다음과 같은 경로에 YAML 파일을 위치시켜야 인식한다.
.github/workflows/*.yml
주의할 점:
- .github 디렉토리 이름 앞에 점(.) 이 있어야 한다.
- workflows 디렉토리 이름은 복수형이다.
- 오타가 나면 GitHub Actions가 인식하지 못한다.
2.2. 첫 번째 워크플로우 파일 작성


- 저장소의 Add file → Create new file 클릭
- 파일 이름 입력: .github/workflows/first-workflow.yml
- 다음 내용을 복사하여 붙여넣는다.
name: My First Workflow
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Print a message
run: echo "Hello, GitHub Actions!"
- name: List files
run: ls -la
- name: Print current date
run: |
echo "Current time: $(date)"
echo "Repository: ${{ github.repository }}"
- 페이지 하단 Commit new file 버튼 클릭
3. 워크플로우 파일 분석
3.1. name
name: My First Workflow
- 워크플로우의 식별 이름이다.
- GitHub Actions 탭에서 이 이름으로 표시된다.
- 필수는 아니지만, 여러 워크플로우가 있을 때 구분을 위해 작성하는 것이 좋다.
3.2. on
on:
push:
branches: [ main ]
workflow_dispatch:
- 워크플로우를 실행할 트리거(이벤트) 를 정의한다.
- push: main 브랜치에 코드가 push될 때 실행된다.
- workflow_dispatch: GitHub 웹 UI에서 수동으로 실행할 수 있게 한다.
3.3. jobs
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- ...
- 실행할 Job을 정의한다.
- say-hello: Job의 ID다. (식별자 역할)
- runs-on: 이 Job을 실행할 환경을 지정한다. (ubuntu-latest, windows-latest, macos-latest 등)
3.4. steps
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Print a message
run: echo "Hello, GitHub Actions!"
- Job 내에서 순차적으로 실행될 작업들이다.
- uses: 미리 만들어진 Action을 사용한다.
- actions/checkout@v4: 저장소 코드를 Runner로 가져오는 공식 Action
- run: 직접 쉘 명령어를 실행한다.
- name: 각 Step의 이름으로, 로그에서 표시된다.
4. 워크플로우 실행 확인
4.1. 자동 실행 확인 (push 트리거)


방금 first-workflow.yml 파일을 commit했으므로, 이 자체가 push 이벤트를 발생시킨다.
- 저장소 상단의 Actions 탭 클릭
- 왼쪽 사이드바에 "My First Workflow"가 보인다.
- 현재 실행 중인 워크플로우 목록에서 가장 최근 항목 클릭
4.2. 실행 로그 확인

- 실행 중인 워크플로우를 클릭하면 Job 목록이 보인다.
- say-hello Job 클릭
- 각 Step별 실행 로그를 확인할 수 있다.
로그에서 확인할 내용:
- Checkout code: 저장소 코드를 가져오는 과정
- Print a message: "Hello, GitHub Actions!" 출력
- List files: 저장소 파일 목록
- Print current date: 현재 시간과 저장소 이름 출력
4.3. 수동 실행 (workflow_dispatch)
- Actions 탭으로 이동
- 왼쪽 사이드바에서 "My First Workflow" 선택
- Run workflow 버튼 클릭
- 브랜치 선택 후 Run workflow 클릭
이렇게 하면 코드 변경 없이도 수동으로 워크플로우를 실행할 수 있다.
5. 실습: 다양한 트리거 실험
5.1. 다른 브랜치에 push하기
새 브랜치를 만들고 push해보자.
# 새 브랜치 생성
git checkout -b feature/test
# 파일 수정 (README.md 등)
echo "Test" >> README.md
# commit 및 push
git add .
git commit -m "Test commit on feature branch"
git push origin feature/test
결과: main 브랜치가 아니므로 워크플로우가 실행되지 않는다.
5.2. PR 생성하기
- GitHub 저장소에서 Pull requests 탭 → New pull request
- feature/test 브랜치를 main으로 병합하는 PR 생성
- 결과: pull_request 이벤트는 정의하지 않았으므로 실행되지 않는다.
5.3. 트리거 추가하기
파일을 수정하여 pull_request도 실행되도록 해보자.
name: My First Workflow
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "Triggered by ${{ github.event_name }}"
이제 PR을 생성하면 워크플로우가 실행되고, 이벤트 이름이 출력된다.
6. 워크플로우 상태와 아이콘 이해하기
GitHub Actions에서는 각 실행 상태를 아이콘으로 표시한다.
| 아이콘 | 상태 | 설명 |
| ✅ | 성공 | 모든 Step이 정상 완료 |
| ❌ | 실패 | 하나 이상의 Step에서 오류 발생 |
| ⏺️ | 대기 중 | 실행 대기 중 |
| 🔄 | 진행 중 | 현재 실행 중 |
| ⏸️ | 취소됨 | 사용자가 취소 |
7. 워크플로우 비활성화/삭제
7.1. 워크플로우 비활성화
- 저장소 Actions 탭
- 왼쪽 사이드바에서 해당 워크플로우 선택
- 우측 상단 ⋮ 메뉴 → Disable workflow
7.2. 워크플로우 파일 삭제
- 저장소에서 .github/workflows/first-workflow.yml 파일 삭제
- commit
- 더 이상 Actions 탭에 표시되지 않음
8. 정리
이번 포스팅에서는 실제로 GitHub Actions를 사용해보았다.
| 단계 | 내용 |
| 저장소 생성 | GitHub에 연습용 저장소 만들기 |
| 워크플로우 파일 생성 | .github/workflows/first-workflow.yml 작성 |
| 트리거 설정 | push, workflow_dispatch 이벤트 정의 |
| Job과 Step 정의 | checkout Action 사용, echo 명령어 실행 |
| 실행 확인 | Actions 탭에서 로그 확인 |
| 수동 실행 | workflow_dispatch로 직접 실행 |
'CI&CD > GitHub Actions' 카테고리의 다른 글
| [ADVANED #1] GitHub Actions에서 Docker 고급 빌드 전략 (Buildx, 캐싱, 보안) (0) | 2026.02.24 |
|---|---|
| [BASIC #5] 실전 프로젝트: Spring Boot 앱 CI/CD 파이프라인 구축하기 (0) | 2026.02.24 |
| [BASIC #4] GitHub Actions 변수와 컨텍스트 마스터하기 (0) | 2026.02.24 |
| [BASIC #3] GitHub Actions 핵심 문법 완벽 가이드 (0) | 2025.09.23 |
| [BASIC #1] CI/CD 개념부터 GitHub Actions 이해하기 - 이론편 (0) | 2025.06.17 |
