본문 바로가기
IT | AI | 모빌리티

GitHub Actions로 웹사이트 자동화하기|배포·예약 작업·백업·오류 점검

by dimecomm 2026. 9. 18.
반응형

웹사이트를 직접 운영하면 콘텐츠 작성 외에도 파일 배포, 링크 확인, 이미지 점검, 사이트맵 생성, 백업과 장애 확인 같은 반복 업무가 계속 생깁니다. 규모가 작은 사이트라도 이 과정을 매번 수동으로 처리하면 누락과 실수가 발생하기 쉽습니다.

GitHub Actions를 이용하면 저장소의 파일이 변경됐을 때 자동으로 사이트를 검사하고 배포하거나, 정해진 주기에 맞춰 링크와 접속 상태를 확인할 수 있습니다. 다만 GitHub Pages·정적 사이트·WordPress·티스토리처럼 플랫폼마다 자동화할 수 있는 범위가 다르므로 먼저 사이트 구조를 구분해야 합니다.

이 글은 GitHub Actions 문법 전체를 설명하는 개발 강좌가 아닙니다. 블로그와 웹사이트 운영자가 어떤 업무를 자동화할 수 있는지, 어디까지 맡겨도 되는지, 오류와 보안 위험을 어떻게 관리해야 하는지를 판단할 수 있도록 구성했습니다.

 

핵심 요약

  • GitHub Actions는 파일 변경·수동 실행·예약 시각 등을 조건으로 웹사이트 운영 작업을 자동 실행합니다.
  • 정적 사이트는 검사·빌드·배포까지 자동화하기 쉽고, 티스토리·Blogger는 외부 상태 검사 등 보조 작업이 중심입니다.
  • 처음에는 사이트를 변경하지 않는 접속·링크 검사부터 적용하는 것이 안전합니다.
  • 운영 배포는 테스트 통과, 중복 배포 방지, 최소권한, 복구 절차를 함께 설계해야 합니다.
  • 비밀번호·API 키·SSH 키는 코드에 넣지 않고 GitHub Secrets 또는 별도의 보안 저장소로 관리해야 합니다.

정보 기준일: 2026년 9월 18일. GitHub Actions의 러너 이미지, 지원 기능, 요금과 사용 한도는 변경될 수 있으므로 실제 적용 시 GitHub 공식 문서와 계정의 Billing 화면을 다시 확인하십시오.

GitHub Actions로 웹사이트 자동화하기|배포·예약 작업·백업·오류 점검

웹사이트 운영에 GitHub Actions가 필요한 이유

웹사이트 운영 자동화의 목적은 무조건 사람의 개입을 없애는 것이 아닙니다. 반복할 때마다 같은 절차를 거쳐야 하는 작업을 표준화하고, 문제가 생겼을 때 실행 기록을 남기는 것이 핵심입니다.

수동 운영 GitHub Actions 적용 후 기대 효과
파일을 직접 서버에 업로드 변경 반영 후 검사·배포 실행 누락과 버전 혼선 감소
생각날 때 링크 점검 매주 정해진 주기로 검사 깨진 링크 조기 발견
배포 후 화면에서 오류 발견 배포 전에 빌드·검사 수행 운영 장애 가능성 감소
작업 결과를 별도로 기록 실행 시간·로그·결과 자동 저장 오류 원인 추적 용이

다만 GitHub Actions가 사이트 품질을 스스로 판단하거나 모든 문제를 복구해 주는 것은 아닙니다. 자동 검사가 통과해도 실제 화면, 결제, 문의, 로그인 같은 기능은 별도로 확인해야 합니다.

자동화할 수 있는 운영 작업

작업 운영 사례 난이도 운영 위험
접속 상태 검사 대표 URL이 정상 응답하는지 확인 낮음 낮음
깨진 링크 검사 내부 링크·외부 링크 오류 보고서 생성 낮음~중간 낮음
HTML·코드 검사 배포 전 구문·빌드 오류 확인 중간 낮음
이미지 처리 용량 검사·압축·WebP 변환 중간 중간
정적 사이트 배포 GitHub Pages·정적 호스팅 반영 중간 중간
서버 자동 배포 VPS·클라우드 서버 업데이트 높음 높음
데이터·파일 백업 정기 내보내기 파일을 별도 저장소에 보관 중간~높음 높음

운영 중인 사이트를 직접 변경하는 작업일수록 승인·권한·복구 설계가 중요합니다. 처음에는 접속 상태나 링크를 검사하고 보고서를 만드는 읽기 중심 작업부터 시작하는 편이 안전합니다.

 

플랫폼별 적용 범위

사이트 운영자가 먼저 확인할 것은 “GitHub Actions를 쓸 수 있는가”보다 “어떤 파일과 작업을 GitHub가 관리할 수 있는가”입니다.

플랫폼 적합도 추천 작업 주의사항
GitHub Pages 매우 높음 빌드·검사·배포 Pages 배포 권한 설정 필요
Jekyll·Hugo·Astro 등 매우 높음 콘텐츠 빌드·링크 검사·배포 런타임과 패키지 버전 고정
Vercel·Netlify 높음 배포 전 테스트·별도 점검 플랫폼 자체 배포와 중복 방지
WordPress 조건부 테마·플러그인 검사와 배포 DB·업로드 파일·개인정보 별도 관리
티스토리·Blogger 제한적 접속·링크·외부 리소스 점검 플랫폼 API와 자동 게시 정책 확인
VPS·클라우드 서버 높음 테스트·배포·서비스 재시작 SSH 키·방화벽·롤백 설계 필요

자동 포스팅 주의: GitHub Actions는 예약 명령을 실행할 수 있지만, 모든 블로그 플랫폼에 글을 안전하게 발행해 주는 도구는 아닙니다. API 지원 여부, 인증 조건, 서비스 약관과 검색 품질을 확인하지 않은 대량 자동 게시는 권장하지 않습니다.

GitHub Actions 작동 구조

이벤트 발생러너 준비파일 가져오기검사·빌드배포·보고서 저장

용어 역할 운영자 관점
Workflow 전체 자동화 정의 사이트 운영 작업표
Event 실행 조건 파일 변경·예약·수동 실행
Job 독립적인 작업 묶음 검사·빌드·배포 작업
Step 순서대로 실행되는 단계 파일 가져오기·명령 실행
Runner 명령 실행환경 GitHub가 준비하는 임시 컴퓨터
Artifact 작업 결과 파일 검사 보고서·빌드 결과물

 

사이트 접속 상태 자동 점검

첫 번째 자동화는 운영 사이트를 변경하지 않는 접속 상태 검사로 시작할 수 있습니다. 다음 워크플로는 수동 실행 또는 매주 월요일에 지정한 URL의 HTTP 응답을 확인합니다.

저장소에 .github/workflows/website-check.yml 파일을 만들고 아래 내용을 입력합니다.

name: Website availability check

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

permissions:
  contents: read

jobs:
  check:
    runs-on: ubuntu-latest
    timeout-minutes: 10

    steps:
      - name: Check website response
        shell: bash
        run: |
          set -euo pipefail
          curl \
            --fail \
            --location \
            --silent \
            --show-error \
            --retry 2 \
            --max-time 30 \
            "https://example.com/"

사용할 때는 https://example.com/을 실제 대표 URL로 바꿉니다. curl --fail은 서버가 오류 상태 코드를 반환하면 작업을 실패로 처리합니다.

이 검사는 서버의 HTTP 응답을 확인하는 기본 점검입니다. 페이지가 정상적으로 렌더링되는지, 버튼·로그인·결제·문의 기능이 실제로 작동하는지까지 보장하지는 않습니다.

여러 페이지 함께 확인하기

- name: Check important pages
  shell: bash
  run: |
    set -euo pipefail

    urls=(
      "https://example.com/"
      "https://example.com/contact/"
      "https://example.com/products/"
    )

    for url in "${urls[@]}"; do
      echo "Checking: $url"
      curl \
        --fail \
        --location \
        --silent \
        --show-error \
        --retry 2 \
        --max-time 30 \
        "$url"
    done

회원 전용 페이지나 검색결과 URL을 무리하게 검사하지 말고, 홈·문의·상품·예약처럼 사업에 중요한 공개 페이지부터 선택합니다. 너무 많은 URL을 짧은 간격으로 요청하면 사이트와 외부 서비스에 부담을 줄 수 있습니다.

예약 작업과 정기 점검

GitHub Actions의 schedule 이벤트는 cron 표현식으로 실행 주기를 지정합니다. GitHub 공식 문서에 따라 예약 워크플로는 UTC를 기준으로 설정하며, 시스템 상황에 따라 실행이 지연될 수 있습니다.

cron 예시 UTC 기준 한국시간 기준
0 0 * * 1 매주 월요일 00:00 매주 월요일 09:00
0 18 * * * 매일 18:00 매일 다음 날 03:00
30 23 1 * * 매월 1일 23:30 매월 2일 08:30
  • 예약 작업은 기본 브랜치에 존재하는 워크플로를 기준으로 실행됩니다.
  • workflow_dispatch를 함께 넣어 수동 테스트 기능을 유지합니다.
  • 정확한 시각이 중요한 예약 발행·고객 알림·결제에는 전용 서비스를 사용합니다.
  • 모든 점검을 같은 시각에 몰지 말고 필요한 주기에 맞춰 나눕니다.
  • 실패가 반복되는 작업을 방치하면 사용량과 로그가 불필요하게 증가합니다.

안전한 자동 배포 구조

운영 사이트 자동 배포는 파일을 바로 복사하는 구조보다 검사와 승인, 복구 단계를 포함해야 합니다.

  1. 별도 브랜치에서 파일을 수정합니다.
  2. Pull Request를 만들어 변경 내용을 확인합니다.
  3. GitHub Actions가 코드·링크·빌드 오류를 검사합니다.
  4. 검사를 통과한 변경만 기본 브랜치에 병합합니다.
  5. 배포 작업은 하나의 실행환경에서 한 번만 수행합니다.
  6. 배포가 끝나면 대표 페이지와 핵심 기능을 확인합니다.
  7. 문제가 발견되면 이전 정상 버전으로 되돌립니다.

중복 배포 방지

여러 변경이 짧은 시간에 연속으로 반영되면 이전 배포와 새 배포가 겹칠 수 있습니다. concurrency를 사용하면 같은 배포 그룹에서 중복 실행되는 작업을 정리할 수 있습니다.

concurrency:
  group: production-deployment
  cancel-in-progress: true

다만 진행 중인 배포를 중단해도 안전한지는 배포 방식에 따라 다릅니다. 파일 복사가 중간에 끊기면 사이트가 불완전한 상태가 될 수 있는 구조라면 무조건 취소하도록 설정하면 안 됩니다.

GitHub Pages 배포

GitHub Pages는 GitHub Actions 기반 사용자 지정 워크플로를 지원합니다. 직접 배포 YAML을 처음부터 만들기보다 저장소의 Settings → Pages에서 제공하는 공식 워크플로 템플릿을 확인하고 사이트 생성 도구에 맞는 구성을 선택하는 편이 안전합니다.

문서 작성·자료 분석처럼 사이트 밖의 반복 업무도 함께 줄이고 싶다면 다음 활용법을 참고할 수 있습니다.

자영업자 ChatGPT 업무 활용법 보기

백업과 결과 파일 보관

GitHub Actions의 Artifact는 검사 보고서나 빌드 결과처럼 워크플로가 생성한 파일을 일정 기간 보관할 때 사용할 수 있습니다. 그러나 Artifact 하나만으로 웹사이트 전체 백업 체계가 완성되는 것은 아닙니다.

보관 대상 적합한 저장 위치 주의사항
링크 검사 보고서 Actions Artifact 보관 기간 확인
정적 사이트 빌드 파일 Artifact·배포 저장소 소스 파일과 결과물 구분
테마·설정 파일 비공개 Git 저장소 비밀정보 제거
WordPress 데이터베이스 암호화된 외부 백업 저장소 개인·주문정보 보호
고객 업로드 파일 접근 통제된 백업 서비스 공개 저장소 업로드 금지

백업은 생성됐다는 로그만 확인해서는 부족합니다. 정기적으로 실제 파일을 내려받고 복원할 수 있는지 시험해야 합니다. 복구 검증이 없는 백업은 장애가 발생했을 때 사용할 수 없을 가능성이 있습니다.

Secrets와 최소권한 설정

외부 호스팅이나 서버에 배포하려면 API 토큰·SSH 키·서비스 계정 정보가 필요할 수 있습니다. 이러한 값은 저장소 파일이나 YAML에 직접 입력하지 않습니다.

Repository Secret 등록

  1. 저장소의 Settings를 엽니다.
  2. Secrets and variables를 선택합니다.
  3. Actions로 이동합니다.
  4. New repository secret을 선택합니다.
  5. Secret 이름과 값을 입력해 저장합니다.
env:
  DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}

GitHub의 기본 토큰 권한도 필요한 범위만 명시하는 것이 좋습니다. 접속 상태만 검사하는 워크플로라면 저장소 파일을 수정할 권한이 필요하지 않습니다.

permissions:
  contents: read
  • Secret 값을 로그에 출력하지 않습니다.
  • 하나의 관리자 토큰을 여러 사이트에서 공동으로 사용하지 않습니다.
  • 배포 전용 계정과 최소권한 토큰을 사용합니다.
  • 사용하지 않는 토큰은 삭제하고 주기적으로 교체합니다.
  • 외부 Action을 사용할 때 제작자·저장소·권한·업데이트 이력을 확인합니다.
  • 외부에서 들어온 Pull Request에 중요한 Secret이 전달되지 않도록 실행 조건을 점검합니다.

AI와 외부 업무 서비스를 연결할 때도 관리자 허용·사용자 권한·제3자 서비스 권한을 분리해 확인해야 합니다.

Google Workspace Gemini MCP 권한 구조 보기

오류 로그와 복구 방법

워크플로가 실패하면 Actions 실행 화면에서 빨간색으로 표시된 Job과 Step을 먼저 엽니다. 마지막 오류만 보지 말고 처음 발생한 오류 메시지와 바로 앞 명령을 함께 확인해야 합니다.

증상 주요 원인 점검 순서
워크플로가 표시되지 않음 경로·확장자·YAML 문법 오류 .github/workflows 위치 확인
예약 작업이 실행되지 않음 기본 브랜치·cron·비활성 상태 수동 실행 후 설정 확인
권한 거부 토큰·Secret·permissions 부족 필요 작업과 권한 대조
빌드 명령 실패 런타임·패키지·설정 차이 버전 로그와 잠금 파일 확인
배포 후 화면 이상 잘못된 빌드 경로·캐시·환경변수 이전 정상 버전 복구 후 비교

운영 배포 전 준비할 복구 수단

  • 마지막으로 정상 작동한 커밋과 배포 버전을 기록합니다.
  • 배포 전 데이터베이스와 중요한 파일을 별도로 백업합니다.
  • 한 번의 명령이나 이전 커밋으로 복구할 수 있는지 시험합니다.
  • 도메인·DNS·호스팅 설정을 배포 코드와 구분합니다.
  • 배포 실패 시 자동 재시작을 무한 반복하지 않도록 제한합니다.

러너·런타임 버전 변경 대응

runs-on: ubuntu-latest는 특정 Ubuntu 버전을 영구적으로 의미하지 않습니다. GitHub가 기본 이미지의 연결 대상을 바꾸면 운영체제와 사전 설치 도구도 달라질 수 있습니다.

GitHub는 Ubuntu 26.04 러너의 정식 지원과 함께 ubuntu-latest를 2026년 10월 19일부터 11월 19일까지 Ubuntu 24.04에서 26.04로 순차 전환한다고 발표했습니다. 운영 사이트가 시스템 기본 Node.js·Python·Java 또는 사전 설치 패키지에 의존한다면 기존 빌드가 실패할 수 있습니다.

  • 운영 워크플로는 검증한 Ubuntu 버전을 명시합니다.
  • Node.js·Python·Java 버전도 setup 액션으로 별도 지정합니다.
  • 패키지 잠금 파일을 저장소에서 관리합니다.
  • 새 운영체제에서 테스트한 후 운영 배포를 전환합니다.
  • 전환 전 기존 러너로 되돌리는 롤백 방법을 준비합니다.

Ubuntu 26.04의 도구 차이, matrix 병렬 검사와 YAML 고정 방법은 별도의 ITNAI 전문 글로 분리하는 것이 적합합니다. 전문 글의 실제 발행 URL이 확정되기 전에는 예상 주소를 내부 링크로 사용하지 않습니다.

사용량과 비용 관리

GitHub Actions 비용은 공개·비공개 저장소, 계정 요금제, 러너 운영체제, 실행시간과 저장공간에 따라 달라집니다. 공개 저장소의 표준 GitHub 호스팅 러너와 비공개 저장소의 과금 조건도 동일하지 않습니다.

따라서 “Actions는 전부 무료”라고 단정하기보다 계정의 Billing 화면에서 포함 사용량, 실제 소비량과 지출 설정을 확인해야 합니다.

  • 필요 없는 브랜치에서 워크플로가 실행되지 않도록 제한합니다.
  • 예약 검사 주기를 실제 필요에 맞게 설정합니다.
  • timeout-minutes로 비정상적으로 긴 실행을 제한합니다.
  • Artifact 보관 기간과 파일 크기를 관리합니다.
  • 실패를 반복하는 작업은 원인을 해결할 때까지 중지합니다.
  • 같은 배포가 중복 실행되지 않도록 concurrency를 검토합니다.

운영자 도입 체크리스트

자동화 전

  • 자동화할 반복 작업을 한 가지로 좁혔는가?
  • GitHub가 관리할 파일과 외부 서비스의 역할을 구분했는가?
  • 사이트 플랫폼이 필요한 배포·API 방식을 지원하는가?
  • 실패했을 때 사이트와 고객에게 미치는 영향을 확인했는가?
  • 운영 사이트가 아닌 테스트 환경에서 먼저 실행했는가?

보안·권한

  • 비밀번호·API 키·SSH 키를 Secrets에 저장했는가?
  • 토큰에 필요한 최소 권한만 부여했는가?
  • 외부 Action의 제작자와 사용 권한을 확인했는가?
  • 고객정보와 주문정보가 로그·Artifact에 포함되지 않는가?

배포·복구

  • 검사 작업과 운영 배포 작업을 분리했는가?
  • 중복 배포 방지 설정을 검토했는가?
  • 이전 정상 버전으로 돌아가는 절차가 있는가?
  • 배포 후 확인할 대표 URL과 핵심 기능을 정했는가?
  • 실제 복구 테스트를 해봤는가?

코드·파일 작업을 장기 실행하는 AI 에이전트까지 운영하려면 세션과 실제 실행환경의 차이부터 확인해야 합니다.

Agents API 실행환경 구조 확인하기

 

자주 묻는 질문

GitHub Actions와 호스팅 서비스의 자동 배포는 무엇이 다른가요?

Vercel·Netlify 같은 서비스는 Git 저장소와 연결하면 자체 배포 기능을 제공할 수 있습니다. GitHub Actions는 배포 전 검사, 파일 생성, 외부 서비스 호출처럼 전체 과정을 더 세밀하게 구성할 때 유용합니다. 자체 배포만으로 충분하다면 같은 배포를 Actions에서 다시 실행할 필요는 없습니다.

티스토리나 Blogger 운영에도 사용할 수 있나요?

사이트 접속 상태, 공개 페이지 링크, 외부 리소스 등을 검사하는 용도로는 사용할 수 있습니다. 글 발행이나 테마 변경 자동화는 각 플랫폼의 API·인증·정책에 따라 지원 범위가 다르므로 별도 확인이 필요합니다.

GitHub Actions로 사이트 장애를 완전히 감지할 수 있나요?

단순 HTTP 검사는 서버 응답 여부만 확인합니다. 브라우저 렌더링, 로그인, 검색, 결제, 문의 전송 같은 기능까지 확인하려면 별도의 브라우저 테스트와 모니터링 도구가 필요합니다.

워크플로가 성공하면 배포도 정상이라고 볼 수 있나요?

아닙니다. 명령이 오류 없이 끝났다는 의미일 뿐 실제 사이트 화면과 기능까지 정상이라는 보장은 없습니다. 배포 후 대표 URL과 핵심 기능을 별도로 확인해야 합니다.

예약 작업은 정확한 시각에 실행되나요?

예약 워크플로는 시스템 부하 등에 따라 지연될 수 있습니다. 정확한 시각이 중요한 게시·결제·고객 알림은 해당 플랫폼의 전용 예약 기능을 사용하는 편이 안전합니다.

WordPress 전체를 GitHub에 백업해도 되나요?

테마나 직접 작성한 플러그인 소스는 Git으로 관리할 수 있지만 데이터베이스와 업로드 폴더에는 고객정보·주문정보·계정정보가 포함될 수 있습니다. 공개 저장소에 올리지 말고 암호화와 접근 통제가 가능한 별도 백업 방식을 사용해야 합니다.

외부 Marketplace Action은 모두 안전한가요?

그렇지 않습니다. 외부 Action도 워크플로 권한과 Secret에 접근할 수 있으므로 제작자, 저장소, 릴리스, 권한 요구사항을 확인해야 합니다. 중요한 워크플로에서는 검증된 제작자의 Action을 선택하고 버전을 명시하는 편이 좋습니다.

가장 먼저 자동화할 작업은 무엇인가요?

운영 사이트를 변경하지 않는 대표 URL 접속 검사나 깨진 링크 검사부터 시작하는 것이 좋습니다. 로그 확인과 실패 대응에 익숙해진 후 테스트 사이트 배포, 운영 배포 순서로 확대하십시오.

정리

GitHub Actions는 블로그와 웹사이트의 검사·빌드·배포·예약 작업을 일정한 절차로 반복할 수 있게 해줍니다. 특히 GitHub Pages와 정적 사이트는 적용 범위가 넓고, WordPress·티스토리·Blogger는 플랫폼 구조에 따라 검사와 보조 작업 중심으로 활용해야 합니다.

운영자가 가장 먼저 해야 할 일은 복잡한 배포 YAML을 작성하는 것이 아닙니다. 현재 반복하는 업무 중 하나를 선택하고, 사이트를 변경하지 않는 검사 작업으로 실행 조건과 로그 확인 방법을 익히는 것입니다.

그다음 최소권한과 Secrets, 테스트 환경, 중복 실행 방지, 백업과 롤백을 갖춘 뒤 운영 배포로 확대해야 합니다. 자동화가 늘어날수록 사람이 확인해야 할 지점도 함께 정의해야 안정적인 웹사이트 운영이 가능합니다.

공식 출처

 

반응형