GitHub Actions 첫 워크플로 생성

GitBeginner
지금 연습하기

소개

GitHub Actions 는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합/지속적 제공 (CI/CD) 플랫폼입니다. 리포지토리에 대한 모든 풀 리퀘스트 (pull request) 를 빌드하고 테스트하거나, 병합된 풀 리퀘스트를 프로덕션 환경에 배포하는 워크플로를 생성할 수 있습니다.

본 랩에서는 첫 번째 간단한 워크플로를 생성합니다. GitHub Actions 에 필요한 표준 디렉터리 구조, 워크플로 이름을 정의하는 방법, 워크플로를 트리거하는 이벤트를 지정하는 방법, 그리고 명령을 실행할 작업을 정의하는 방법을 학습하게 됩니다.

이 랩은 이전 랩에서 생성한 리포지토리를 기반으로 합니다. github-actions-demo 리포지토리를 LabEx 환경으로 복제하고 첫 번째 워크플로 파일을 추가할 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 96%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

.github/workflows 디렉토리에 hello-world.yml 이라는 새 YAML 파일 생성

이 단계에서는 이전 실습에서 생성한 리포지토리를 클론하고 첫 번째 워크플로 파일을 생성합니다.

  1. github-actions-demo의 GitHub 리포지토리 페이지에서 녹색 Code 버튼을 클릭합니다.
  2. HTTPS 탭이 선택되었는지 확인하고 URL 을 복사합니다. URL 은 https://github.com/your-username/github-actions-demo.git과 유사해야 합니다.
  3. LabEx 환경에서 터미널을 엽니다. 기본 경로는 ~/project입니다.
  4. 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.
  1. 클론된 리포지토리로 이동합니다:
cd ~/project/github-actions-demo
  1. 이전 실습에서 .github/workflows 디렉토리가 이미 존재해야 합니다. 존재 여부를 확인합니다:
ls -R .github
  1. .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
Verify workflow name

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 에 푸시합니다. 이렇게 하면 방금 생성한 워크플로우가 트리거됩니다.

  1. 리포지토리 디렉토리에 있는지 확인합니다:
cd ~/project/github-actions-demo
  1. 리포지토리 상태를 확인하여 추적되지 않는 파일을 확인합니다:
git status
  1. 새 파일을 스테이징 영역에 추가합니다:
git add .github/workflows/hello-world.yml
  1. 설명적인 메시지로 변경 사항을 커밋합니다:
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
  1. 변경 사항을 GitHub 의 원격 리포지토리에 푸시합니다:
git push

인증 참고 사항:
git push를 실행하면 WebIDE 가 자동으로 인증을 요청하는 팝업을 표시합니다. 다음 세부 단계를 따르십시오:

  1. "The extension 'GitHub' wants to sign in using GitHub." 라는 메시지가 포함된 팝업이 나타납니다. Allow를 클릭합니다.
  2. 새 알림이 나타납니다. **"Copy&Continue to GitHub"**를 클릭한 다음 다음 프롬프트에서 **"Open"**을 클릭합니다.
  3. 열리는 브라우저 창에서 GitHub 계정에 로그인하고 복사된 인증 코드를 입력합니다. 인증을 확인하면 페이지가 자동으로 닫힙니다.
  4. 몇 초 기다리면 터미널에서 푸시 작업이 성공적으로 완료되는 것을 볼 수 있습니다.

개인 정보 보호 참고 사항: 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
  1. 웹 브라우저에서 GitHub 의 리포지토리를 방문하여 Actions 탭으로 이동합니다. "Hello World Workflow"가 실행 중이거나 완료된 것을 볼 수 있습니다.
Verify workflow run

참고: 코드를 푸시할 때 리포지토리에 여러 워크플로우 파일이 있는 경우 여러 Actions 가 트리거될 수 있습니다. 왼쪽 사이드바에서 워크플로우 이름을 확인하거나 오른쪽의 워크플로우 실행 목록을 사용하여 올바른 워크플로우 실행을 식별하십시오.

  1. 워크플로우 실행을 클릭하여 자세한 실행 로그를 확인합니다. 다음을 볼 수 있습니다:
    • 워크플로우 이름: 상단에 "Hello World Workflow"
    • 작업 이름: 왼쪽 사이드바에 "build"
    • 단계 실행: "build" 작업을 클릭하여 확장한 다음 "Say Hello" 단계를 클릭합니다.
    • 출력: 로그에 Hello, World! 출력이 표시되는 것을 볼 수 있습니다.
Verify workflow run logs

이를 통해 워크플로우가 어떻게 실행되었는지, 어떤 단계가 성공적으로 실행되었는지, 어떤 출력을 생성했는지에 대한 전체적인 보기를 얻을 수 있습니다. 이는 디버깅 및 워크플로우의 작동 방식을 이해하는 데 매우 유용합니다.

요약

이 실습 (lab) 에서 여러분은 첫 번째 GitHub Actions 워크플로를 성공적으로 생성했습니다. 다음 사항들을 배웠습니다:

  1. 필수적인 .github/workflows 디렉토리 구조를 생성하는 방법.
  2. YAML 구문을 사용하여 워크플로를 정의하는 방법.
  3. on을 사용하여 워크플로의 name과 트리거 이벤트를 설정하는 방법.
  4. 명령을 실행하기 위해 jobssteps를 정의하는 방법.
  5. 워크플로를 리포지토리에 커밋하고 푸시하는 방법.

이것들은 소프트웨어를 자동으로 빌드, 테스트 및 배포할 수 있는 복잡한 CI/CD 파이프라인을 구축하기 위한 기본적인 구성 요소들입니다.