InfoGrab Docs

튜토리얼 - 소스 컨트롤로 환경 만들기

요약

이 튜토리얼은 환경을 처음부터 끝까지 설정하는 과정을 안내합니다. n8n은 버전 관리 소프트웨어인 Git 위에 환경 기능을 구축했습니다. 소스 컨트롤과 환경을 설정하기 전에 환경을 계획하고 Git 브랜치와 어떻게 연결될지 계획해야 합니다.

기능 제공 범위
  • Business 및 Enterprise 플랜에서 사용 가능합니다.
  • 소스 제어를 활성화하고 구성하려면 n8n 인스턴스 소유자 또는 인스턴스 관리자여야 합니다.
  • 인스턴스 소유자와 인스턴스 관리자는 연결된 저장소에 변경 사항을 푸시하거나 저장소에서 변경 사항을 풀할 수 있습니다.
  • 프로젝트 관리자는 연결된 저장소에 변경 사항을 푸시할 수 있습니다. 저장소에서 변경 사항을 풀할 수는 없습니다.

이 튜토리얼은 환경을 처음부터 끝까지 설정하는 과정을 안내합니다. 개발 환경과 프로덕션 환경 두 가지를 만들게 됩니다. Git 제공업체로 GitHub를 사용합니다. 다른 제공업체에서도 비슷한 과정을 따릅니다.

n8n은 버전 관리 소프트웨어인 Git 위에 환경 기능을 구축했습니다. n8n 인스턴스를 Git 브랜치에 연결하고, 환경 간에 작업을 이동하는 Push-Pull 패턴을 사용합니다. 환경과 Git에 대한 이해가 어느 정도 필요합니다. 이러한 주제에 대한 자세한 내용은 다음을 참조하세요:

  • n8n의 환경: 환경의 목적과 n8n에서 작동하는 방식.
  • Git과 n8n: Git 개념 및 n8n의 소스 컨트롤.

소스 컨트롤 패턴 선택#

소스 컨트롤과 환경을 설정하기 전에 환경을 계획하고 Git 브랜치와 어떻게 연결될지 계획해야 합니다. n8n은 다양한 브랜치 패턴을 지원합니다. 환경의 경우 다중 인스턴스/다중 브랜치 또는 다중 인스턴스/단일 브랜치 중 하나를 선택해야 합니다. 이 튜토리얼은 두 패턴 모두를 다룹니다.

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

인스턴스에서 브랜치로 작업을 푸시하고, 같은 인스턴스로 풀하는 것이 가능하지만 n8n은 이를 권장하지 않습니다. 머지 충돌과 작업 덮어쓰기 위험을 줄이기 위해, 작업이 한 방향으로만 흐르는 프로세스를 만드세요: Git으로 가거나, Git에서 오거나, 둘 다는 아닙니다.

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

Diagram

이 패턴의 장점은 다음과 같습니다:

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

단점은 환경 간에 작업을 복사할 때 수동 단계가 더 많다는 점입니다.

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

Diagram

이 패턴의 장점은 한 인스턴스에서 푸시하면 작업이 다른 환경에 즉시 제공된다는 점입니다.

단점은 다음과 같습니다:

  • 실수로 푸시하면 프로덕션 인스턴스에 작업이 반영될 위험이 있습니다. GitHub Action을 사용하여 풀을 자동화하도록 설정한 경우, 멀티 인스턴스 멀티 브랜치 패턴을 사용하거나, 프로덕션에 반영하고 싶지 않은 작업은 절대 푸시하지 않도록 주의해야 합니다.
  • 동일한 인스턴스에 푸시와 풀을 동시에 사용하면 이러한 작업 수행 시 변경 사항이 덮어씌워져 데이터 손실이 발생할 수 있습니다. 콘텐츠가 한 방향으로만 흐르도록 프로세스를 설정해야 합니다.

리포지터리 설정#

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

  1. 새 리포지터리를 만듭니다.
    • 워크플로, 태그, 변수 및 자격 증명 스텁이 인터넷에 노출되는 것을 원하지 않는다면 리포지터리를 비공개로 만드세요.
    • README로 새 리포지터리를 만들어 즉시 브랜치를 만들 수 있도록 합니다.
  2. production이라는 브랜치와 development라는 브랜치를 하나씩 만듭니다. 안내는 리포지터리 내에서 브랜치 만들기 및 삭제를 참조하세요.

새 리포지터리를 만듭니다.

  • 워크플로, 태그, 변수 및 자격 증명 스텁이 인터넷에 노출되는 것을 원하지 않는다면 리포지터리를 비공개로 만드세요.
  • README로 새 리포지터리를 만듭니다. 이렇게 하면 연결할 main 브랜치가 만들어집니다.
## n8n 인스턴스를 리포지터리에 연결

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

n8n에서 Git 설정#

  1. 설정 > 환경으로 이동합니다.
  2. 연결 방법을 선택합니다:
    • SSH: Git 저장소 URL에 저장소의 SSH URL을 입력합니다 (예: git@github.com:username/repo.git).
    • HTTPS: Git 저장소 URL에 저장소의 HTTPS URL을 입력합니다 (예: https://github.com/username/repo.git).
  3. 연결 방법에 따라 인증을 구성합니다:
    • SSH의 경우: n8n은 ED25519 및 RSA 공개 키 알고리즘을 지원합니다. ED25519가 기본값입니다. Git 호스트에서 RSA가 필요한 경우 SSH 키 아래에서 RSA를 선택합니다. SSH 키를 복사합니다.
    • HTTPS의 경우: 자격 증명을 입력합니다:
      • 사용자 이름: Git 제공업체의 사용자 이름.
      • 토큰: Git 제공업체의 개인 액세스 토큰(PAT).

배포 키 설정#

n8n의 SSH 키를 사용하여 리포지터리의 배포 키를 만들어 SSH 접근을 설정합니다. 키에는 쓰기 접근 권한이 있어야 합니다. 안내는 GitHub | 배포 키 관리를 참조하세요.

n8n 연결 및 인스턴스 설정#

  1. n8n의 Settings > Environments에서 Connect를 선택합니다. n8n이 Git 리포지터리에 연결됩니다.
  2. Instance settings 아래에서 현재 n8n 인스턴스에 사용할 브랜치를 선택합니다. 프로덕션 브랜치는 프로덕션 인스턴스에, 개발 브랜치는 개발 인스턴스에 연결합니다.
  3. 프로덕션 인스턴스에만 해당: Protected instance를 선택하여 사용자가 이 인스턴스에서 워크플로를 편집하지 못하도록 합니다.
  4. Save settings를 선택합니다.
  1. n8n의 Settings > Environments에서 Connect를 선택합니다.
  2. Instance settings 아래에서 main 브랜치를 선택합니다.
  3. 프로덕션 인스턴스에만 해당: Protected instance를 선택하여 사용자가 이 인스턴스에서 워크플로를 편집하지 못하도록 합니다.
  4. Save settings를 선택합니다.
## 개발에서 작업 Push

개발 인스턴스에서 몇 가지 워크플로, 태그, 변수 및 자격 증명을 만드세요.

Git에 작업을 푸시하려면:

  1. 메인 메뉴에서 푸시 Push icon를 선택합니다.

    --8<-- "_snippets/source-control-environments/push-pull-menu-state.md"

  2. 변경 사항 커밋 및 푸시 모달에서 푸시할 워크플로우와 데이터 테이블을 선택합니다. 상태(신규, 수정됨, 삭제됨)로 필터링하거나 항목을 검색할 수 있습니다. n8n은 태그, 변수 및 자격 증명 스텁을 자동으로 푸시합니다.

    n8n은 워크플로우의 게시된 버전이 아닌 현재 저장된 버전을 푸시합니다. 이후 원격 서버에서 별도로 버전을 게시해야 합니다.

  3. 커밋 메시지를 입력합니다. 변경 사항을 한 문장으로 간략히 설명해야 합니다.

  4. 커밋 및 푸시를 선택합니다. n8n이 작업을 Git으로 전송하고 완료 시 성공 메시지를 표시합니다.

프로덕션에 작업 Pull#

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

  1. GitHub에서 개발을 프로덕션으로 병합하는 pull request를 만듭니다.
  2. Pull request를 병합합니다.
  3. 프로덕션 인스턴스의 메인 메뉴에서 Pull Pull icon을 선택합니다.

프로덕션 인스턴스의 메인 메뉴에서 Pull Pull icon을 선택합니다.

??? Details "스크린샷 보기"
![메뉴가 닫혀 있을 때 풀 및 푸시 버튼](/_images/source-control-environments/pull-push-menu-closed.png)
메뉴가 닫혀 있을 때 풀 및 푸시 버튼
<figure markdown>
	![메뉴가 열려 있을 때 풀 및 푸시 버튼](/_images/source-control-environments/pull-push-menu-open.png)
	<figcaption>메뉴가 열려 있을 때 풀 및 푸시 버튼</figcaption>
</figure>

선택 사항: GitHub Action을 사용하여 Pull 자동화#

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

GitHub Action 예시:

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 }}'

다음 단계#

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

튜토리얼 - 소스 컨트롤로 환경 만들기

원문 보기
요약

이 튜토리얼은 환경을 처음부터 끝까지 설정하는 과정을 안내합니다. n8n은 버전 관리 소프트웨어인 Git 위에 환경 기능을 구축했습니다. 소스 컨트롤과 환경을 설정하기 전에 환경을 계획하고 Git 브랜치와 어떻게 연결될지 계획해야 합니다.

기능 제공 범위
  • Business 및 Enterprise 플랜에서 사용 가능합니다.
  • 소스 제어를 활성화하고 구성하려면 n8n 인스턴스 소유자 또는 인스턴스 관리자여야 합니다.
  • 인스턴스 소유자와 인스턴스 관리자는 연결된 저장소에 변경 사항을 푸시하거나 저장소에서 변경 사항을 풀할 수 있습니다.
  • 프로젝트 관리자는 연결된 저장소에 변경 사항을 푸시할 수 있습니다. 저장소에서 변경 사항을 풀할 수는 없습니다.

이 튜토리얼은 환경을 처음부터 끝까지 설정하는 과정을 안내합니다. 개발 환경과 프로덕션 환경 두 가지를 만들게 됩니다. Git 제공업체로 GitHub를 사용합니다. 다른 제공업체에서도 비슷한 과정을 따릅니다.

n8n은 버전 관리 소프트웨어인 Git 위에 환경 기능을 구축했습니다. n8n 인스턴스를 Git 브랜치에 연결하고, 환경 간에 작업을 이동하는 Push-Pull 패턴을 사용합니다. 환경과 Git에 대한 이해가 어느 정도 필요합니다. 이러한 주제에 대한 자세한 내용은 다음을 참조하세요:

  • n8n의 환경: 환경의 목적과 n8n에서 작동하는 방식.
  • Git과 n8n: Git 개념 및 n8n의 소스 컨트롤.

소스 컨트롤 패턴 선택#

소스 컨트롤과 환경을 설정하기 전에 환경을 계획하고 Git 브랜치와 어떻게 연결될지 계획해야 합니다. n8n은 다양한 브랜치 패턴을 지원합니다. 환경의 경우 다중 인스턴스/다중 브랜치 또는 다중 인스턴스/단일 브랜치 중 하나를 선택해야 합니다. 이 튜토리얼은 두 패턴 모두를 다룹니다.

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

인스턴스에서 브랜치로 작업을 푸시하고, 같은 인스턴스로 풀하는 것이 가능하지만 n8n은 이를 권장하지 않습니다. 머지 충돌과 작업 덮어쓰기 위험을 줄이기 위해, 작업이 한 방향으로만 흐르는 프로세스를 만드세요: Git으로 가거나, Git에서 오거나, 둘 다는 아닙니다.

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

Diagram

이 패턴의 장점은 다음과 같습니다:

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

단점은 환경 간에 작업을 복사할 때 수동 단계가 더 많다는 점입니다.

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

Diagram

이 패턴의 장점은 한 인스턴스에서 푸시하면 작업이 다른 환경에 즉시 제공된다는 점입니다.

단점은 다음과 같습니다:

  • 실수로 푸시하면 프로덕션 인스턴스에 작업이 반영될 위험이 있습니다. GitHub Action을 사용하여 풀을 자동화하도록 설정한 경우, 멀티 인스턴스 멀티 브랜치 패턴을 사용하거나, 프로덕션에 반영하고 싶지 않은 작업은 절대 푸시하지 않도록 주의해야 합니다.
  • 동일한 인스턴스에 푸시와 풀을 동시에 사용하면 이러한 작업 수행 시 변경 사항이 덮어씌워져 데이터 손실이 발생할 수 있습니다. 콘텐츠가 한 방향으로만 흐르도록 프로세스를 설정해야 합니다.

리포지터리 설정#

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

  1. 새 리포지터리를 만듭니다.
    • 워크플로, 태그, 변수 및 자격 증명 스텁이 인터넷에 노출되는 것을 원하지 않는다면 리포지터리를 비공개로 만드세요.
    • README로 새 리포지터리를 만들어 즉시 브랜치를 만들 수 있도록 합니다.
  2. production이라는 브랜치와 development라는 브랜치를 하나씩 만듭니다. 안내는 리포지터리 내에서 브랜치 만들기 및 삭제를 참조하세요.

새 리포지터리를 만듭니다.

  • 워크플로, 태그, 변수 및 자격 증명 스텁이 인터넷에 노출되는 것을 원하지 않는다면 리포지터리를 비공개로 만드세요.
  • README로 새 리포지터리를 만듭니다. 이렇게 하면 연결할 main 브랜치가 만들어집니다.
## n8n 인스턴스를 리포지터리에 연결

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

n8n에서 Git 설정#

  1. 설정 > 환경으로 이동합니다.
  2. 연결 방법을 선택합니다:
    • SSH: Git 저장소 URL에 저장소의 SSH URL을 입력합니다 (예: git@github.com:username/repo.git).
    • HTTPS: Git 저장소 URL에 저장소의 HTTPS URL을 입력합니다 (예: https://github.com/username/repo.git).
  3. 연결 방법에 따라 인증을 구성합니다:
    • SSH의 경우: n8n은 ED25519 및 RSA 공개 키 알고리즘을 지원합니다. ED25519가 기본값입니다. Git 호스트에서 RSA가 필요한 경우 SSH 키 아래에서 RSA를 선택합니다. SSH 키를 복사합니다.
    • HTTPS의 경우: 자격 증명을 입력합니다:
      • 사용자 이름: Git 제공업체의 사용자 이름.
      • 토큰: Git 제공업체의 개인 액세스 토큰(PAT).

배포 키 설정#

n8n의 SSH 키를 사용하여 리포지터리의 배포 키를 만들어 SSH 접근을 설정합니다. 키에는 쓰기 접근 권한이 있어야 합니다. 안내는 GitHub | 배포 키 관리를 참조하세요.

n8n 연결 및 인스턴스 설정#

  1. n8n의 Settings > Environments에서 Connect를 선택합니다. n8n이 Git 리포지터리에 연결됩니다.
  2. Instance settings 아래에서 현재 n8n 인스턴스에 사용할 브랜치를 선택합니다. 프로덕션 브랜치는 프로덕션 인스턴스에, 개발 브랜치는 개발 인스턴스에 연결합니다.
  3. 프로덕션 인스턴스에만 해당: Protected instance를 선택하여 사용자가 이 인스턴스에서 워크플로를 편집하지 못하도록 합니다.
  4. Save settings를 선택합니다.
  1. n8n의 Settings > Environments에서 Connect를 선택합니다.
  2. Instance settings 아래에서 main 브랜치를 선택합니다.
  3. 프로덕션 인스턴스에만 해당: Protected instance를 선택하여 사용자가 이 인스턴스에서 워크플로를 편집하지 못하도록 합니다.
  4. Save settings를 선택합니다.
## 개발에서 작업 Push

개발 인스턴스에서 몇 가지 워크플로, 태그, 변수 및 자격 증명을 만드세요.

Git에 작업을 푸시하려면:

  1. 메인 메뉴에서 푸시 Push icon를 선택합니다.

    --8<-- "_snippets/source-control-environments/push-pull-menu-state.md"

  2. 변경 사항 커밋 및 푸시 모달에서 푸시할 워크플로우와 데이터 테이블을 선택합니다. 상태(신규, 수정됨, 삭제됨)로 필터링하거나 항목을 검색할 수 있습니다. n8n은 태그, 변수 및 자격 증명 스텁을 자동으로 푸시합니다.

    n8n은 워크플로우의 게시된 버전이 아닌 현재 저장된 버전을 푸시합니다. 이후 원격 서버에서 별도로 버전을 게시해야 합니다.

  3. 커밋 메시지를 입력합니다. 변경 사항을 한 문장으로 간략히 설명해야 합니다.

  4. 커밋 및 푸시를 선택합니다. n8n이 작업을 Git으로 전송하고 완료 시 성공 메시지를 표시합니다.

프로덕션에 작업 Pull#

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

  1. GitHub에서 개발을 프로덕션으로 병합하는 pull request를 만듭니다.
  2. Pull request를 병합합니다.
  3. 프로덕션 인스턴스의 메인 메뉴에서 Pull Pull icon을 선택합니다.

프로덕션 인스턴스의 메인 메뉴에서 Pull Pull icon을 선택합니다.

??? Details "스크린샷 보기"
![메뉴가 닫혀 있을 때 풀 및 푸시 버튼](/_images/source-control-environments/pull-push-menu-closed.png)
메뉴가 닫혀 있을 때 풀 및 푸시 버튼
<figure markdown>
	![메뉴가 열려 있을 때 풀 및 푸시 버튼](/_images/source-control-environments/pull-push-menu-open.png)
	<figcaption>메뉴가 열려 있을 때 풀 및 푸시 버튼</figcaption>
</figure>

선택 사항: GitHub Action을 사용하여 Pull 자동화#

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

GitHub Action 예시:

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 }}'

다음 단계#

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