콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

튜토리얼: 소스 제어로 환경 만들기#

기능 사용 가능 여부

  • Enterprise 플랜에서 사용 가능
  • 소스 컨트롤을 설정하고 Git과 데이터를 주고받으려면 n8n 인스턴스 소유자, 관리자, 또는 프로젝트 소유자여야 합니다.

이 튜토리얼은 환경을 처음부터 끝까지 설정하는 과정을 안내합니다. 두 개의 환경인 개발 및 프로덕션을 생성하게 됩니다. GitHub를 Git 제공자로 사용합니다. 다른 제공자에 대해서도 과정은 유사합니다.

n8n은 버전 관리 소프트웨어인 Git 위에 환경 기능을 구축했습니다. n8n 인스턴스를 Git 브랜치에 연결하고 푸시-풀 패턴을 사용하여 작업을 환경 간에 이동합니다. 환경 및 Git에 대한 기본적인 이해가 필요합니다. 이 주제에 대한 추가 정보가 필요하면 다음을 참조하세요:

소스 제어 패턴 선택#

소스 제어 및 환경을 설정하기 전에 환경을 계획하고 Git 브랜치와의 관계를 정해야 합니다. n8n은 다양한 브랜치 패턴을 지원합니다. 환경의 경우, 두 가지 패턴 중 하나를 선택해야 합니다: 다중 인스턴스, 다중 브랜치 또는 다중 인스턴스, 단일 브랜치. 이 튜토리얼은 두 패턴을 모두 다룹니다.

권장 사항: 동일한 n8n 인스턴스에서 푸시와 풀을 동시에 수행하지 마세요.

n8n 인스턴스에서 브랜치로 작업을 푸시하고, 같은 인스턴스로 다시 풀하는 것은 가능하지만, 권장되지 않습니다.
병합 충돌 및 작업 덮어쓰기를 방지하려면 한 방향으로만 작업을 진행하는 프로세스를 만들 것을 권장합니다. 즉, Git으로 푸시하거나 Git에서 가져오되, 두 작업을 동시에 수행하지 않는 것이 좋습니다.

다중 인스턴스, 다중 브랜치#

다이어그램

이 패턴의 장점:

  • 프로덕션 환경에 변경 사항이 실수로 반영되는 것을 방지하는 추가적인 안전 장치가 됩니다.
    환경 간 작업을 복사하려면 GitHub에서 풀 리퀘스트를 수행해야 합니다.
  • 두 개 이상의 인스턴스를 지원할 수 있습니다.

단점:

  • 환경 간 작업을 복사하는 과정에서 수동 작업이 더 많이 필요합니다.

다중 인스턴스, 단일 브랜치#

다이어그램

이 패턴의 장점은 한 인스턴스에서 푸시하면 다른 환경에서도 즉시 작업을 사용할 수 있다는 것입니다.

하지만 다음과 같은 단점이 있습니다:

  • 실수로 푸시하는 경우, 해당 작업이 프로덕션 인스턴스로 반영될 위험이 있습니다.
    GitHub Action을 사용하여 자동으로 풀하도록 설정한 경우, 다중 인스턴스 및 다중 브랜치 패턴을 사용하거나, 프로덕션에 반영하고 싶지 않은 작업을 실수로 푸시하지 않도록 주의해야 합니다.
  • 동일한 인스턴스에서 푸시와 풀을 수행하면, 변경 사항이 덮어씌워지면서 데이터 손실이 발생할 수 있습니다.
    작업 흐름이 한 방향으로만 진행되도록 프로세스를 설정하는 것이 좋습니다.

리포지토리 설정#

패턴을 선택한 후, GitHub 리포지토리를 설정해야 합니다.

  1. 새 리포지토리 만들기.
    • 리포지토리는 비공식으로 설정하세요. 인터넷에 작업 흐름, 태그, 변수 및 자격 증명 스텁이 노출되는 것을 원하지 않는 경우입니다.
    • 문서화가 가능한 새 리포지토리를 만들어 즉시 브랜치를 생성할 수 있습니다.
  2. production이라는 이름의 브랜치와 development라는 이름의 브랜치를 하나씩 생성하세요. 리포지토리 내에서 브랜치 생성 및 삭제를 참고하여 안내를 받으세요.

새 리포지토리 만들기.

  • 리포지토리는 비공식으로 설정하세요. 인터넷에 작업 흐름, 태그, 변수 및 자격 증명 스텁이 노출되는 것을 원하지 않는 경우입니다.
  • 문서화가 가능한 새 리포지토리를 만듭니다. 이로 인해 연결할 main 브랜치가 생성됩니다.

n8n 인스턴스를 리포지토리에 연결#

개발용과 프로덕션용으로 두 개의 n8n 인스턴스를 만드세요.

n8n에서 Git 구성하기#

  1. 설정(Settings) > 환경(Environments) 으로 이동합니다.
  2. Git 저장소 URL(Git repository URL) 에 저장소의 SSH URL을 입력합니다.
  3. n8n은 ED25519RSA 공개 키 알고리즘을 지원합니다. 기본값은 ED25519 입니다. Git 호스트에서 RSA를 요구하는 경우 SSH 키(SSH Key) 아래에서 RSA 를 선택하세요.
  4. SSH 키를 복사합니다.

배포 키 설정하기#

n8n의 SSH 키를 사용하여 리포지토리에 대한 배포 키를 생성하여 SSH 액세스를 설정합니다. 이 키는 쓰기 접근 권한이 있어야 합니다. 자세한 내용은 GitHub | 배포 키 관리를 참조하세요.

n8n 연결 및 인스턴스 구성하기#

  1. n8n의 설정 > 환경에서 연결을 선택합니다. n8n이 Git 리포지토리에 연결됩니다.
  2. 인스턴스 설정에서 현재 n8n 인스턴스에 사용할 브랜치를 선택합니다. 프로덕션 브랜치는 프로덕션 인스턴스에, 개발 브랜치는 개발 인스턴스에 연결합니다.
  3. 프로덕션 인스턴스 전용: 보호된 인스턴스를 선택하여 사용자가 이 인스턴스에서 워크플로를 편집하는 것을 방지합니다.
  4. 설정 저장을 선택합니다.
  1. n8n의 설정 > 환경에서 연결을 선택합니다.
  2. 인스턴스 설정에서 기본 브랜치를 선택합니다.
  3. 프로덕션 인스턴스 전용: 보호된 인스턴스를 선택하여 사용자가 이 인스턴스에서 워크플로를 편집하는 것을 방지합니다.
  4. 설정 저장을 선택합니다.

개발에서 작업 푸시하기#

개발 인스턴스에서 몇 개의 워크플로, 태그, 변수 및 자격 증명을 생성합니다.

Git으로 작업을 푸시하려면:

  1. 메인 메뉴에서 푸시(Push) 푸시 아이콘 를 선택합니다.

    View screenshot

    Pull and push buttons when menu is closed
    Pull and push buttons when menu is closed

    Pull and push buttons when menu is open
    Pull and push buttons when menu is open

  2. 커밋 및 푸시 변경사항(Commit and push changes) 모달에서 푸시할 워크플로를 선택합니다.
    상태(새로운 항목, 수정된 항목, 삭제된 항목)별로 필터링하거나 검색하여 원하는 워크플로를 찾을 수 있습니다.
    n8n은 태그, 변수 및 자격 증명 스텁을 자동으로 푸시합니다.

  3. 커밋 메시지를 입력합니다. 변경 사항을 한 문장으로 간단히 설명하세요.
  4. 커밋 및 푸시(Commit and Push) 를 선택합니다.
    n8n이 작업을 Git으로 전송한 후, 완료 메시지를 표시합니다.

프로덕션으로 작업 당기기#

작업이 이제 GitHub에 있습니다. 다중 브랜치 구성을 사용하는 경우 개발 브랜치에 있습니다. 단일 브랜치 구성을 선택한 경우 기본 브랜치에 있습니다.

  1. GitHub에서 개발을 프로덕션으로 병합하는 풀 리퀘스트를 생성합니다.
  2. 풀 리퀘스트를 병합합니다.
  3. 프로덕션 인스턴스에서 당기기 Pull icon를 선택합니다.

프로덕션 인스턴스에서 당기기 Pull icon를 선택합니다.

View screenshot

Pull and push buttons when menu is closed
Pull and push buttons when menu is closed

Pull and push buttons when menu is open
Pull and push buttons when menu is open

선택 사항: 풀을 자동화하기 위해 GitHub Action 사용하기#

프로덕션 인스턴스에 로그인하여 당기는 것을 피하려면 GitHub Actionn8n API를 사용하여 프로덕션 또는 메인 브랜치에 새 작업을 푸시할 때마다 자동으로 당길 수 있습니다.

A GitHub Action example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
name: CI
on:
  # Trigger the workflow on push or pull request events for the "production" branch
  push:
    branches: [ "production" ]
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:
jobs:
  run-pull:
    runs-on: ubuntu-latest
    steps:
      - name: PULL
				# Use GitHub secrets to protect sensitive information
        run: >
          curl --location '${{ secrets.INSTANCE_URL }}/version-control/pull' --header
          'Content-Type: application/json' --header 'X-N8N-API-KEY: ${{ secrets.INSTANCE_API_KEY }}'

다음 단계#

다음에 대해 자세히 알아보세요:

인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!