GitHub Actions 에서 간단한 명령어 실행하기

GitBeginner
지금 연습하기

소개

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

워크플로는 하나 이상의 작업을 실행하는 구성 가능한 자동화된 프로세스입니다. 워크플로는 리포지토리에 체크인된 YAML 파일로 정의되며, 리포지토리 내의 이벤트에 의해 트리거될 때 실행되거나, 수동으로 또는 정의된 스케줄에 따라 트리거될 수 있습니다.

본 랩에서는 GitHub Actions 워크플로의 기본 구성 요소를 학습합니다.

  1. 작업 (job) 정의하기.
  2. 러너 환경 (예: Ubuntu) 지정하기.
  3. 명령을 실행하기 위한 단계 (step) 추가하기.

콘솔에 "Hello, World!"를 출력하는 간단한 워크플로를 생성할 것입니다. 이 랩은 이전 랩에서 생성한 리포지토리를 기반으로 합니다. github-actions-demo 리포지토리를 클론하고 기존 워크플로 파일을 업데이트할 것입니다.

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

build 작업에 ubuntu-latest 를 사용하여 runs-on 키 추가하기

이 단계에서는 리포지토리를 복제하고 기존 워크플로 파일을 업데이트하여 작업을 정의하고 해당 작업이 실행될 운영 체제를 지정합니다.

  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
  1. 복제된 리포지토리로 이동합니다.
cd ~/project/github-actions-demo
  1. .github/workflows 디렉터리에 simple-commands.yml이라는 새 워크플로 파일을 생성합니다.
touch .github/workflows/simple-commands.yml
  1. WebIDE 에서 파일 .github/workflows/simple-commands.yml을 엽니다. 왼쪽 파일 탐색기에서 찾을 수 있습니다.

  2. 파일에 다음 내용을 추가하여 워크플로 이름, 트리거, 작업 및 러너를 정의합니다.

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

runs-on 키워드를 사용하면 작업을 실행할 머신 유형을 지정할 수 있습니다. GitHub 는 Linux, Windows 및 macOS 용 호스팅 러너를 제공합니다. ubuntu-latest는 표준 Ubuntu 환경을 제공하는 일반적으로 사용되는 러너입니다.

build 작업 아래에 steps 섹션 추가하기

이제 작업 환경 (job environment) 을 정의했으므로, 해당 작업이 실제로 무엇을 수행할지 정의해야 합니다. 이는 steps 키워드를 사용하여 수행됩니다.

작업 (job) 은 steps라고 불리는 일련의 태스크 (task) 들을 포함합니다. 단계 (steps) 는 명령어를 실행하거나, 설정 태스크를 실행하거나, 리포지토리 내의 액션 (action) 을 실행할 수 있습니다.

지침

  1. WebIDE 에서 .github/workflows/simple-commands.yml 파일을 엽니다.
  2. build 작업 아래에 steps 키워드를 추가합니다.

파일을 다음과 같이 업데이트합니다:

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

steps:runs-on:과 동일한 들여쓰기 수준에 있는지 확인하십시오.

'Echo Hello' 이름과 'echo "Hello, World!"' 실행 명령을 가진 단계 추가하기

이 단계에서는 다양한 셸 명령을 실행하기 위해 steps 섹션에 여러 작업을 추가합니다. 이를 통해 러너 (runner) 에서 표준 Linux 명령을 실행할 수 있음을 보여줍니다.

지침

  1. WebIDE 에서 .github/workflows/simple-commands.yml 파일을 엽니다.
  2. steps: 키 아래에 다음 단계를 추가합니다:
steps:
  - name: Echo Hello
    run: echo "Hello, World!"

  - name: Show Date
    run: date

  - name: List Files
    run: ls -la

완성된 파일은 다음과 같아야 합니다:

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Echo Hello
        run: echo "Hello, World!"

      - name: Show Date
        run: date

      - name: List Files
        run: ls -la

설명

  • echo "Hello, World!": 콘솔에 텍스트를 출력합니다.
  • date: 러너의 현재 날짜와 시간을 표시합니다.
  • ls -la: 현재 디렉터리의 파일을 나열합니다. 아직 코드를 체크아웃하지 않았기 때문에 디렉터리가 대부분 비어 있는 것을 알 수 있습니다 (다음 실습에서 수행할 예정입니다).

업데이트된 워크플로우 파일 커밋 및 푸시

GitHub Actions 워크플로우는 리포지토리 코드의 일부입니다. 워크플로우를 활성화하려면 변경 사항을 커밋하고 GitHub 에 푸시해야 합니다.

  1. 리포지토리 디렉토리에 있는지 확인합니다:
cd ~/project/github-actions-demo
  1. 새 워크플로우 파일을 스테이징합니다:
git add .github/workflows/simple-commands.yml
  1. 설명적인 메시지와 함께 변경 사항을 커밋합니다:
git commit -m "Add simple commands workflow"

예시 출력:

[main ... ] Add simple commands workflow
 1 file changed, 14 insertions(+)
 create mode 100644 .github/workflows/simple-commands.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: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 447 bytes | 447.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
   abcdef1..1234567  main -> main

GitHub Actions 탭에서 워크플로우 실행 로그 보기

코드를 푸시하면 GitHub 에서 워크플로우가 자동으로 트리거됩니다. 워크플로우 실행 로그를 확인하여 어떤 일이 발생했는지 볼 수 있습니다.

  1. 웹 브라우저에서 GitHub 의 저장소로 이동합니다: https://github.com/your-username/github-actions-demo
  2. 저장소 페이지 상단의 Actions 탭을 클릭합니다.
  3. "Simple Commands" 또는 "Add simple commands workflow"로 이름 붙여진 워크플로우 실행 목록이 표시되어야 합니다.

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

  1. 워크플로우 실행 제목을 클릭한 다음 build 작업을 클릭합니다.
  2. Echo Hello, Show Date, List Files 단계를 확장하여 해당 출력을 확인합니다.

List Files 단계에서 숨겨진 파일 (...) 을 제외하고 빈 디렉토리가 표시되는 것을 확인할 수 있으며, 이는 러너 (runner) 가 깨끗한 상태에서 시작됨을 보여줍니다.

GitHub Actions logs
GitHub Actions tab

요약

본 랩 (lab) 에서는 여러 셸 명령어 (shell command) 를 실행하는 GitHub Actions 워크플로를 성공적으로 생성했습니다. 다음 사항들을 배웠습니다.

  1. Job 정의: build 작업을 생성했습니다.
  2. Runner 선택: runs-on: ubuntu-latest를 사용했습니다.
  3. 다중 명령어 실행: echo, date, ls를 실행하는 단계를 추가했습니다.
  4. Runner 환경 관찰: 러너가 빈 디렉터리에서 시작하는 것을 확인했습니다.

다음 랩에서는 Checkout Action 을 사용하여 러너 내에서 리포지토리 파일에 접근하는 방법을 배울 것입니다.