소개
GitHub Actions 는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합/지속적 제공 (CI/CD) 플랫폼입니다. 리포지토리에 대한 모든 풀 리퀘스트 (pull request) 를 빌드하고 테스트하거나, 병합된 풀 리퀘스트를 프로덕션 환경에 배포하는 워크플로를 생성할 수 있습니다.
본 랩에서는 첫 번째 간단한 워크플로를 생성합니다. GitHub Actions 에 필요한 표준 디렉터리 구조, 워크플로 이름을 정의하는 방법, 워크플로를 트리거하는 이벤트를 지정하는 방법, 그리고 명령을 실행할 작업을 정의하는 방법을 학습하게 됩니다.
이 랩은 이전 랩에서 생성한 리포지토리를 기반으로 합니다. github-actions-demo 리포지토리를 LabEx 환경으로 복제하고 첫 번째 워크플로 파일을 추가할 것입니다.
.github/workflows 디렉토리에 hello-world.yml 이라는 새 YAML 파일 생성
이 단계에서는 이전 실습에서 생성한 리포지토리를 클론하고 첫 번째 워크플로 파일을 생성합니다.
github-actions-demo의 GitHub 리포지토리 페이지에서 녹색 Code 버튼을 클릭합니다.- HTTPS 탭이 선택되었는지 확인하고 URL 을 복사합니다. URL 은
https://github.com/your-username/github-actions-demo.git과 유사해야 합니다. - LabEx 환경에서 터미널을 엽니다. 기본 경로는
~/project입니다. git clone명령어를 사용하여 리포지토리를 다운로드합니다.your-username을 실제 GitHub 사용자 이름으로 바꾸십시오.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
예시 출력:
Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
- 클론된 리포지토리로 이동합니다:
cd ~/project/github-actions-demo
- 이전 실습에서
.github/workflows디렉토리가 이미 존재해야 합니다. 존재 여부를 확인합니다:
ls -R .github
.github/workflows디렉토리 안에hello-world.yml이라는 새 파일을 생성합니다. 이 파일에는 워크플로 구성이 포함됩니다:
touch .github/workflows/hello-world.yml
파일이 성공적으로 생성되었는지 확인할 수 있습니다:
ls -R .github
workflows 디렉토리에 이전 실습에서 생성된 main.yml과 새로 생성된 hello-world.yml이 모두 포함되어 있는 것을 볼 수 있어야 합니다.
YAML 파일에 'Hello World Workflow' 값을 가진 name 키 추가
이 단계에서는 워크플로우를 정의하기 위해 YAML 파일을 편집하기 시작합니다. 일반적으로 추가하는 첫 번째 요소는 워크플로우의 name입니다. 이 이름은 GitHub 리포지토리의 Actions 탭에 표시되어 쉽게 식별할 수 있습니다.
WebIDE 편집기를 사용하여 hello-world.yml 파일을 엽니다. 이 파일은 왼쪽 파일 탐색기에서 project/github-actions-demo/.github/workflows/ 아래에서 찾을 수 있습니다.
파일에 다음 내용을 추가합니다:
name: Hello World Workflow
이 키 - 값 쌍은 워크플로우에 사람이 읽을 수 있는 이름을 할당합니다.
내용을 추가한 후 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).
터미널에서 파일 내용을 확인할 수 있습니다:
cat .github/workflows/hello-world.yml

push 이벤트에 반응하도록 on 키 추가
이 단계에서는 워크플로가 언제 실행되어야 하는지를 정의합니다. 이는 on 키워드를 사용하여 수행됩니다. 우리는 코드가 리포지토리에 푸시될 때마다 이 워크플로가 실행되도록 할 것입니다.
다시 .github/workflows/hello-world.yml 파일을 열고 name 키 아래에 다음 줄을 추가하십시오:
on: [push]
이제 파일은 다음과 같이 보여야 합니다:
name: Hello World Workflow
on: [push]
on: [push] 설정은 리포지토리의 모든 브랜치에 git push가 발생할 때마다 GitHub Actions 에게 이 워크플로를 트리거하도록 지시합니다.
참고: GitHub Actions 는 다른 많은 트리거 이벤트를 지원합니다. 예를 들어:
pull_request: 풀 리퀘스트가 열리거나, 동기화되거나, 닫힐 때 트리거됩니다.workflow_dispatch: GitHub Actions 탭에서 수동 트리거를 허용합니다.schedule: cron 구문을 사용하여 스케줄에 따라 실행됩니다.release: 릴리스가 게시될 때 트리거됩니다.issues,pull_request_review등 더 많은 이벤트가 있습니다.
이 실습 (lab) 에서는 on: [push]를 사용합니다. 이는 가장 간단하고 일반적인 트리거이기 때문입니다. GitHub Actions 여정을 진행하면서 다른 트리거 유형을 탐색할 수 있습니다.
변경 사항을 저장하십시오.
'build'라는 이름의 작업 (job) 을 포함하는 jobs 섹션 추가
이 단계에서는 워크플로우가 수행할 실제 작업을 정의합니다. 워크플로우 실행 (workflow run) 은 하나 이상의 jobs로 구성됩니다. 기본적으로 작업은 병렬로 실행됩니다.
단일 작업인 build를 포함하는 jobs 섹션을 추가할 것입니다. 이 작업은 Ubuntu 환경에서 실행되며 간단한 명령을 실행합니다.
.github/workflows/hello-world.yml 파일에 다음 내용을 추가하십시오:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello, World!"
이것이 무엇을 하는지 분석해 보겠습니다:
jobs:: 작업 섹션을 시작합니다.build:: 작업의 ID 입니다.runs-on: ubuntu-latest: 작업을 실행할 머신 (러너, runner) 유형을 지정합니다.steps:: 작업에서 실행할 작업 목록입니다.run: echo "Hello, World!": 실행할 셸 (shell) 명령입니다.
이제 전체 파일은 다음과 같이 보여야 합니다:
name: Hello World Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello, World!"
파일을 저장하십시오.
git 명령어를 사용하여 워크플로우 파일 커밋 및 푸시
이 단계에서는 새로 만든 워크플로우 파일을 커밋하고 GitHub 에 푸시합니다. 이렇게 하면 방금 생성한 워크플로우가 트리거됩니다.
- 리포지토리 디렉토리에 있는지 확인합니다:
cd ~/project/github-actions-demo
- 리포지토리 상태를 확인하여 추적되지 않는 파일을 확인합니다:
git status
- 새 파일을 스테이징 영역에 추가합니다:
git add .github/workflows/hello-world.yml
- 설명적인 메시지로 변경 사항을 커밋합니다:
git commit -m "Add hello world workflow"
예시 출력:
[main ... ] Add hello world workflow
1 file changed, X insertions(+), X deletions(-)
create mode 100644 .github/workflows/hello-world.yml
- 변경 사항을 GitHub 의 원격 리포지토리에 푸시합니다:
git push
인증 참고 사항:
git push를 실행하면 WebIDE 가 자동으로 인증을 요청하는 팝업을 표시합니다. 다음 세부 단계를 따르십시오:
- "The extension 'GitHub' wants to sign in using GitHub." 라는 메시지가 포함된 팝업이 나타납니다. Allow를 클릭합니다.
- 새 알림이 나타납니다. **"Copy&Continue to GitHub"**를 클릭한 다음 다음 프롬프트에서 **"Open"**을 클릭합니다.
- 열리는 브라우저 창에서 GitHub 계정에 로그인하고 복사된 인증 코드를 입력합니다. 인증을 확인하면 페이지가 자동으로 닫힙니다.
- 몇 초 기다리면 터미널에서 푸시 작업이 성공적으로 완료되는 것을 볼 수 있습니다.
개인 정보 보호 참고 사항: WebIDE 는 인증 목적으로 GitHub 계정에 대한 전체 액세스를 요청합니다. 개인 정보 보호에 대해 걱정할 필요가 없습니다. 현재 랩을 완료하면 LabEx VM 은 즉시 파기되며 자격 증명 및 인증 정보는 유지되지 않습니다.
이 인증 프로세스는 사용자 이름이나 Personal Access Token(개인 액세스 토큰) 의 수동 구성을 요구하지 않습니다.
인증 단계를 따른 후 다음과 유사한 출력을 보게 됩니다:
예시 출력:
Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Delta compression using up to 4 threads
Compressing objects: 100% (X/X), done.
Writing objects: 100% (X/X), XXX bytes | XXX.00 KiB/s, done.
Total X (delta X), reused X (delta X), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
XXXXXXX..XXXXXXX main -> main
- 웹 브라우저에서 GitHub 의 리포지토리를 방문하여 Actions 탭으로 이동합니다. "Hello World Workflow"가 실행 중이거나 완료된 것을 볼 수 있습니다.

참고: 코드를 푸시할 때 리포지토리에 여러 워크플로우 파일이 있는 경우 여러 Actions 가 트리거될 수 있습니다. 왼쪽 사이드바에서 워크플로우 이름을 확인하거나 오른쪽의 워크플로우 실행 목록을 사용하여 올바른 워크플로우 실행을 식별하십시오.
- 워크플로우 실행을 클릭하여 자세한 실행 로그를 확인합니다. 다음을 볼 수 있습니다:
- 워크플로우 이름: 상단에 "Hello World Workflow"
- 작업 이름: 왼쪽 사이드바에 "build"
- 단계 실행: "build" 작업을 클릭하여 확장한 다음 "Say Hello" 단계를 클릭합니다.
- 출력: 로그에
Hello, World!출력이 표시되는 것을 볼 수 있습니다.

이를 통해 워크플로우가 어떻게 실행되었는지, 어떤 단계가 성공적으로 실행되었는지, 어떤 출력을 생성했는지에 대한 전체적인 보기를 얻을 수 있습니다. 이는 디버깅 및 워크플로우의 작동 방식을 이해하는 데 매우 유용합니다.
요약
이 실습 (lab) 에서 여러분은 첫 번째 GitHub Actions 워크플로를 성공적으로 생성했습니다. 다음 사항들을 배웠습니다:
- 필수적인
.github/workflows디렉토리 구조를 생성하는 방법. - YAML 구문을 사용하여 워크플로를 정의하는 방법.
on을 사용하여 워크플로의name과 트리거 이벤트를 설정하는 방법.- 명령을 실행하기 위해
jobs와steps를 정의하는 방법. - 워크플로를 리포지토리에 커밋하고 푸시하는 방법.
이것들은 소프트웨어를 자동으로 빌드, 테스트 및 배포할 수 있는 복잡한 CI/CD 파이프라인을 구축하기 위한 기본적인 구성 요소들입니다.



