본문으로 바로가기

GitHub Actions 워크플로우 완벽 가이드: CI/CD 자동화와 Spacelift 연동

설탕사과
설탕사과
조회수 179
요약

오늘은 개발자라면 꼭 알아야 할 GitHub Actions 워크플로우에 대해 알아봅니다. 코드 빌드, 테스트, 배포를 자동화하는 핵심 CI/CD 도구로서, 깃허브 프로젝트 내에서 손쉽게 다양한 개발·운영 작업을 자동화할 수 있다는 장점이 있죠. 본문에서는 워크플로우의 구조와 설정 방법, 실전 예제, 그리고 Spacelift와 연계하여 인프라스트럭처를 배포하는 방법까지 한 번에 정리해 드릴게요.

GitHub Actions 워크플로우란 무엇인가요?

GitHub Actions 워크플로우는 저장소 내 이벤트—예를 들어 커밋, 풀 리퀘스트, 일정 실행 등—가 발생할 때 자동으로 동작하는 YAML 기반 파이프라인입니다. 여러 작업(Job)과 단계(Step)로 구성되어 있으며, 빌드 테스트부터 배포까지 모든 과정을 손쉽게 자동화할 수 있죠. 각각의 워크플로우는 독립적인 러너 환경에서 동작하며, 병렬·순차 실행, 환경 변수, 시크릿, 재사용 가능한 액션 등 원하는 대로 세밀한 구성과 관리가 가능합니다.

이렇게 유연하고 확장성이 뛰어난 구조 덕분에 기존 Jenkins, CircleCI와 같은 CI/CD 도구 대신 많은 개발팀에서 GitHub Actions를 빠르게 도입하고 있습니다.

워크플로우 만들기: 실전 예제로 쉽게 따라하기

직접 GitHub Actions 워크플로우를 만드는 과정은 생각보다 간단합니다. 먼저 저장소의 .github/workflows 폴더에 YAML 파일을 하나 새로 만듭니다(예: demo-workflow.yml). 두 가지 핵심 요소를 설정해야 하는데요:

  • on: 워크플로우가 언제 실행될지 정합니다(예: push, pull_request).

  • jobs: 실제로 어떤 작업들이 수행될지 단계별로 정의합니다.

예를 들면, main 브랜치에 커밋을 푸시할 때마다 자동으로 빌드와 검증을 수행하는 아래와 같은 설정을 할 수 있습니다.

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: "Check out repository"
        uses: actions/checkout@v3
      - name: "Build project"
        run: "echo 'Building code...'"
  verify:
    runs-on: ubuntu-latest
    steps:
      - run: "echo 'Verifying compliance…'"

이렇게 설정해서 저장소에 변화가 생기면 자동으로 buildverify 작업이 병렬로 실행됩니다. 결과와 로그는 GitHub의 Actions 탭에서 바로 확인할 수 있어 디버깅도 쉽습니다.

워크플로우 주요 기능과 핵심 개념

GitHub Actions 워크플로우는 심플한 사용법부터 고급 자동화까지 모두 지원하는 탄탄한 구조를 갖추고 있습니다. 꼭 알아두어야 할 주요 키워드와 옵션을 정리해 봤어요.

  • name: 워크플로우 이름을 설정해 UI에서 눈에 띄게 관리할 수 있습니다.

  • on: 다양한 이벤트(커밋, 태그, 일정 등)로 워크플로우를 트리거합니다.

  • jobs: 여러 작업을 병렬 또는 순차적으로 실행하며, 각각 독립 변수와 환경에서 동작합니다.

  • uses / with: Marketplace의 액션이나 자체 작성한 재사용 모듈을 활용해 코드를 더 효율적으로 구성할 수 있습니다.

  • env: 작업별, 단계별로 환경 변수를 지정해 보안과 설정을 관리합니다.

  • needs: 특정 작업이 다른 작업 실행을 기다릴 수 있도록 의존성을 설정합니다.

  • matrix: OS, 언어 버전 등 다양한 환경에서 자동 반복 실행이 가능합니다.

  • concurrency: 중복 실행을 관리해, 예를 들어 프로덕션 배포 작업은 항상 최신 코드만 배포되도록 제어할 수 있습니다.

이러한 기능 조합 덕분에 복잡한 DevOps 시나리오도 차분히 자동화할 수 있습니다.

Spacelift와 GitHub Actions: IaC 자동화의 새로운 조합

소프트웨어 빌드와 테스트에서는 GitHub Actions만으로 충분하지만, 인프라 자동화(IaC)까지 원한다면 Spacelift 같은 전문 플랫폼이 훨씬 효율적이에요. Spacelift는 IaC 배포, 상태 관리, 거버넌스까지 완전히 자동화할 수 있으며, GitOps 방식으로 저장소를 연동해 변경 사항을 실시간 반영합니다.

GitHub Actions에서 Spacelift와 연계 배포를 하고 싶다면, Marketplace에서 setup-spacectl 액션을 사용하면 됩니다. 아래는 예시입니다:

on:
  push:
    branches: [ "main" ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: "Setup Spacectl"
        uses: spacelift-io/setup-spacectl@v1
      - name: "Deploy Spacelift stack"
        env:
          SPACELIFT_API_KEY_ENDPOINT: https://${{ vars.SPACELIFT_ACCOUNT_NAME }}.app.spacelift.io
          SPACELIFT_API_KEY_ID: ${{ secrets.SPACELIFT_API_KEY_ID }}
          SPACELIFT_API_KEY_SECRET: ${{ secrets.SPACELIFT_API_KEY_SECRET }}
        run: spacectl stack deploy --id ${{ vars.SPACELIFT_STACK_ID }}

Spacelift의 시크릿과 변수를 미리 저장소 액션 설정에 등록하면, 원클릭 IaC 배포가 가능합니다.

또한, spacelift-stack-deploy(Cloud Posse 제공)라는 더욱 편리한 액션도 있습니다. 단일 단계로 Spacelift 스택 배포가 가능해 훨씬 간단하게 운영할 수 있습니다.

워크플로우 설계 팁과 최신 DevOps 트렌드

  • GitHub Actions는 빌드/테스트/배포를 하나의 파이프라인으로 설계해 반복 작업 스트레스를 확 줄여줍니다.

  • Spacelift와 연동하면 IaC 배포 및 인프라 관리까지 끊김 없는 자동화를 경험할 수 있습니다.

  • 기본 액션 외에도 Marketplace의 수많은 액션(Jenkins 비교, Kubernetes 연동, Ansible 자동화 등)을 적극 활용하면 DevOps 경험이 확장됩니다.

GitHub Actions의 강력한 확장성과 Spacelift의 전문성을 결합하면, 복잡한 인프라 자동화를 누구나 현대적 방식으로 쉽게 구축할 수 있습니다.

마무리: GitHub Actions로 DevOps 라이프사이클 혁신 시작하기

오늘은 GitHub Actions 워크플로우 기초부터 Spacelift와의 연동까지, DevOps 자동화의 핵심 노하우를 모두 정리해봤어요. 작은 빌드 자동화부터 대규모 인프라 배포까지, 올인원으로 경험할 수 있는 GitHub Actions의 매력! 여기에 Spacelift의 IaC 기능을 더한다면 진짜 ‘클라우드 네이티브’ 업무 환경도 손쉽게 완성됩니다.

시작은 작은 자동화지만, 한 번 익숙해지면 반복 작업의 시간은 줄고 품질은 극대화됩니다. 여러분의 프로젝트, 이제 GitHub Actions 워크플로우로 똑똑하게 관리해보세요. 🚀

혹시 더 구체적인 설정이나 연동 팁이 필요하면 댓글로 남겨 주세요! 여러분의 DevOps 자동화를 응원합니다.


참고:

https://medium.com/spacelift/how-to-create-and-manage-github-actions-workflows-9420687e49c3