개발 & 기술/DevOps·인프라

GitHub Actions 입문, 비개발자도 자동화 1개 만들기

Lumin 2026. 6. 11. 14:07
반응형

"개발자들이 푸시만 하면 알아서 배포된다던데, 그거 어떻게 하는 거지?" 저도 처음엔 그게 마법 같았습니다. 알고 보니 그 마법의 이름이 GitHub Actions였고, 생각보다 비개발자도 충분히 따라 만들 수 있는 도구더라구요.

이 글은 코드를 한 줄도 안 써본 분이 자동화 1개를 직접 굴려보는 것까지가 목표입니다. 매일 아침 9시에 GitHub 저장소에 "오늘 날짜.txt" 파일을 자동으로 만드는, 아주 작지만 실제로 동작하는 자동화입니다.

설치할 프로그램은 없습니다. 브라우저만 있으면 됩니다. 용어가 낯설어도 등장할 때마다 풀어드릴 테니 차근차근 따라오시면 됩니다.

GitHub Actions가 뭐길래

GitHub Actions는 GitHub 저장소 안에서 특정 사건이 일어났을 때, 미리 정해둔 작업을 GitHub의 컴퓨터가 대신 실행해주는 무료 자동화 서비스입니다.

여기서 GitHub는 전 세계 개발자들이 코드를 보관하고 공유하는 클라우드 창고라고 보시면 됩니다. 구글 드라이브의 코드 버전이라고 생각하셔도 비슷합니다.

"특정 사건"은 예를 들면 이런 것들입니다.

  • 누군가 코드를 새로 올렸을 때
  • 매일 아침 9시가 됐을 때
  • 특정 버튼이 눌렸을 때

그러면 미리 만들어둔 시나리오대로 GitHub의 서버(=남의 컴퓨터)가 작업을 실행합니다. 내 컴퓨터를 켜둘 필요도 없습니다.

비개발자가 GitHub Actions를 쓰는 시나리오

개발자만의 도구처럼 보이지만, 코드를 안 쓰는 분들도 충분히 활용처가 있습니다. 제가 주변에서 본 사례를 표로 정리해봤습니다.

사용자 자동화 예시 빈도
블로그 운영자 깃허브에 글을 올리면 자동으로 RSS 갱신 글 올릴 때마다
기획자 매일 아침 환율·주가 가져와 파일에 기록 매일
마케터 특정 웹페이지 변경 감지 → 알림 1시간마다
학습자 매일 학습 인증 파일 자동 생성 (잔디용) 매일

이번 글에서는 가장 마지막 예시, 매일 아침 자동으로 파일 1개를 만드는 자동화를 함께 만들어봅니다. 이걸 만들 줄 알면 나머지는 응용입니다.

시작 전에 준비할 것

준비물은 단출합니다.

  • GitHub 계정 (없으면 github.com에서 가입, 무료)
  • 웹 브라우저
  • 약 30분의 여유

설치할 프로그램은 없습니다. 터미널(검은 화면에 명령어를 입력하는 창)도 안 씁니다. 전부 GitHub 웹사이트 안에서 클릭과 타이핑만으로 끝납니다.

💡 GitHub Actions는 공개 저장소(Public Repository)에서 매월 무제한 무료, 비공개 저장소에서도 월 2,000분까지 무료입니다 (GitHub 공식 문서, 글 작성 시점 기준). 이번 예제는 무료 한도 안에서 충분히 돌아갑니다.

워크플로우의 기본 구조

GitHub Actions의 자동화 시나리오를 워크플로우(Workflow) 라고 부릅니다. 워크플로우는 YAML이라는 문서 형식으로 작성합니다.

YAML은 사람이 읽기 쉽도록 만든 설정 파일 형식입니다. 들여쓰기로 계층을 표현한다는 점만 기억하시면 됩니다 (메모장에서 Tab 대신 스페이스 2칸을 씁니다 — 이게 자주 막히는 포인트입니다).

워크플로우는 크게 세 부분으로 나뉩니다.

[언제 실행할지] → [어디서 실행할지] → [무엇을 실행할지]
   (on:)            (runs-on:)         (steps:)

각각을 풀어보면 이렇습니다.

항목 의미 예시
on 어떤 사건에 반응할지 매일 9시, 푸시할 때
runs-on 어떤 운영체제에서 돌릴지 Ubuntu, Windows, macOS
steps 무슨 작업을 순서대로 할지 파일 만들기, 커밋하기

이 세 가지를 채우면 워크플로우 1개가 완성됩니다.

매일 아침 파일 1개 만들기 — 실습

이제 진짜로 만들어봅니다. 단계는 4개입니다.

1단계: 빈 저장소 만들기

GitHub에 로그인한 뒤 우측 상단 + 버튼 → New repository를 누릅니다.

  • Repository name: daily-log (자유롭게)
  • Public 선택 (Private도 되지만, Public이 무료 한도가 더 큽니다)
  • Add a README file 체크 ✅ (이걸 체크해야 저장소가 비어있지 않게 시작됩니다)

Create repository 클릭. 끝입니다.

2단계: 워크플로우 파일 만들기

저장소 화면에서 상단 탭 중 Actions를 클릭합니다. 처음이라면 추천 템플릿이 뜨는데, 무시하고 위쪽의 "set up a workflow yourself" 링크를 누릅니다.

그러면 main.yml이라는 파일을 편집하는 화면이 나옵니다. 거기 있는 기본 내용을 전부 지우고 아래 내용을 그대로 붙여넣습니다.

name: 매일 로그 파일 만들기

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

jobs:
  create-log:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
      - name: 오늘 날짜 파일 생성
        run: |
          DATE=$(date +'%Y-%m-%d')
          echo "오늘은 $DATE 입니다." > "logs/$DATE.txt"
        shell: bash
      - name: 커밋 & 푸시
        run: |
          git config user.name "github-actions"
          git config user.email "actions@github.com"
          mkdir -p logs
          git add logs/
          git commit -m "로그 추가: $(date +'%Y-%m-%d')" || echo "변경 없음"
          git push

이 파일이 하는 일을 한 줄씩 풀어보면 이렇습니다.

  • on: schedule: cron: '0 0 *'매일 UTC 0시(한국 시간 오전 9시) 에 실행
  • workflow_dispatch → 수동으로도 실행 버튼을 만들어 둠 (테스트용으로 매우 중요)
  • runs-on: ubuntu-latest → GitHub가 빌려주는 우분투 리눅스 컴퓨터에서 실행
  • permissions: contents: write → 이 워크플로우가 저장소에 파일을 쓸 수 있도록 권한 부여
  • actions/checkout@v4 → 저장소 내용을 작업 컴퓨터에 복사해오는 공식 도구
  • run: 아래 부분 → 오늘 날짜로 텍스트 파일을 만들고, 그걸 저장소에 다시 올림
💡 cron 표현식 '0 0 *'은 "매일 0시 0분"을 뜻합니다. UTC 기준이라 한국 시간으로는 오전 9시입니다. 시간을 바꾸고 싶다면 crontab.guru 같은 사이트에서 표현식을 만들어볼 수 있습니다.

오른쪽 위 초록색 Commit changes... 버튼 → Commit changes 한 번 더. 이걸로 워크플로우 파일이 저장소에 등록됩니다.

3단계: 수동으로 한 번 실행해보기

스케줄이 매일 9시라 그냥 두면 내일까지 기다려야 합니다. 그래서 위에서 workflow_dispatch를 넣어둔 겁니다.

상단 Actions 탭으로 이동 → 왼쪽 목록에서 매일 로그 파일 만들기 클릭 → 오른쪽 Run workflow 버튼 → 다시 Run workflow 초록 버튼.

1~2분 기다리면 목록에 노란 점(실행 중) → 초록 체크(성공) 또는 빨간 X(실패)가 뜹니다.

4단계: 결과 확인

저장소 메인 화면으로 돌아가면 logs/ 폴더가 생겼고, 안에 2025-XX-XX.txt 같은 파일이 들어있을 겁니다. 자동으로 만들어진 거죠.

이게 끝입니다. 내일 아침 9시에도 다시 똑같은 일이 알아서 일어납니다.

자주 막히는 부분

처음 만들 때 거의 모든 사람이 한 번씩은 걸리는 지점들입니다. 저도 그랬습니다.

1. 빨간 X — Permission denied

권한 문제입니다. 저장소 → Settings → 왼쪽 ActionsGeneral → 맨 아래 Workflow permissions에서 Read and write permissions 를 선택하고 저장하세요. 위 YAML에 permissions: contents: write도 넣어두긴 했지만, 저장소 설정도 함께 맞춰야 안전합니다.

2. 들여쓰기 오류

YAML은 스페이스 2칸 들여쓰기가 절대적입니다. Tab을 쓰거나 칸이 어긋나면 무조건 실패합니다. 위 코드를 그대로 복사·붙여넣기 했다면 보통 문제없는데, 직접 손볼 땐 조심해야 합니다.

3. 스케줄이 정시에 안 돈다

GitHub 공식 문서에도 명시돼 있는데, schedule 트리거는 서버 부하 상황에 따라 최대 수십 분 지연될 수 있습니다. 정확히 9시 0분에 안 도는 게 정상입니다. 여유를 두고 설정하세요.

4. 저장소가 60일 동안 활동이 없으면 스케줄이 멈춘다

이것도 공식 정책입니다. 누구도 아무 변경을 안 하면 자동으로 비활성화됩니다. 매일 파일이 커밋되니 이 예제에선 문제없지만, 다른 자동화를 만들 땐 기억해두세요.

다음에 시도해볼 만한 자동화

이번 예제가 손에 익었다면 응용 폭이 꽤 넓습니다.

난이도 아이디어 핵심 추가 요소
쉬움 매주 월요일 주간 회고 템플릿 자동 생성 cron 표현식만 변경
중간 환율·주가를 가져와 파일에 기록 curl로 외부 API 호출
중간 특정 웹페이지 변경 시 이슈 등록 diff 비교 + GitHub API
어려움 새 글 푸시 → 자동으로 SNS 공유 외부 토큰을 Secrets에 저장

외부 서비스의 비밀번호나 토큰을 다룰 땐 반드시 저장소 SettingsSecrets and variables에 등록해서 쓰세요. YAML 파일에 그대로 적으면 전 세계에 공개됩니다 (저도 한 번 실수한 적 있습니다).

마무리

GitHub Actions는 처음 보면 개발자 전용처럼 보이지만, 워크플로우 1개의 구조만 잡고 나면 비개발자도 자기 일에 맞게 응용할 수 있는 도구입니다. 오늘 만든 "매일 파일 1개 생성"은 작아 보여도, 스케줄 트리거 + 권한 설정 + 커밋이라는 핵심 3종 세트를 다 거친 자동화입니다.

만든 워크플로우는 며칠 두고 정말로 매일 잘 도는지 지켜보세요. 노란 점이 초록 체크로 바뀌는 걸 매일 확인하다 보면, 그다음에 자동화하고 싶은 게 자연스럽게 떠오를 겁니다. 그때 위 응용 표를 다시 꺼내보시면 됩니다.

반응형