8
n8n 한국어amn8n.com

n8n 작업 흐름을 Bitbucket에 백업

중급

이것은Other분야의자동화 워크플로우로, 9개의 노드를 포함합니다.주로 If, N8n, Set, Code, Wait 등의 노드를 사용하며. n8n 작업 흐름을 Bitbucket에 백업

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "23GPrqZjHnIVvTEa",
  "meta": {
    "instanceId": "[instance id auto generated]",
    "templateCredsSetupCompleted": true
  },
  "name": "Backup n8n Workflows to Bitbucket",
  "tags": [],
  "nodes": [
    {
      "id": "b3363b9d-ea6e-47b7-99f9-f48a21805886",
      "name": "대기 시간 계산",
      "type": "n8n-nodes-base.code",
      "position": [
        1400,
        -260
      ],
      "parameters": {
        "jsCode": "// Get all input items and ensure we have data\nif ($input.all().length === 0 || !$input.all()[0].headers) {\n  // If no headers available, return default wait time\n  return { waitTime: 1 };\n}\n\n// Check rate limit headers from previous request\nconst headers = $input.all()[0].headers;\nlet waitTime = 1; // Default 1 second\n\n// Check if we have rate limit information (safely)\nconst remaining = parseInt(headers['x-ratelimit-remaining']) || null;\nconst reset = parseInt(headers['x-ratelimit-reset']) || null;\n\n// Only adjust wait time if we have valid rate limit info\nif (remaining !== null && reset !== null) {\n  // If we're running low on requests, calculate a longer wait time\n  if (remaining < 100) {\n    // Calculate seconds until reset\n    const now = Math.floor(Date.now() / 1000);\n    const timeUntilReset = reset - now;\n    \n    // Spread remaining requests over time until reset\n    // Add 10% buffer to be safe\n    waitTime = Math.ceil((timeUntilReset / remaining) * 1.1);\n  } else if (remaining < 500) {\n    // Start slowing down earlier\n    waitTime = 2;\n  }\n}\n\n// Cap maximum wait time at 30 seconds\nwaitTime = Math.min(waitTime, 30);\n\nreturn { waitTime };"
      },
      "typeVersion": 2
    },
    {
      "id": "3cbc2287-b36f-4839-87b7-be4a7eadcf79",
      "name": "매일 오전 2시 실행",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -120,
        -20
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 2
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "09b396aa-61e8-4631-8aae-7126fbd609e6",
      "name": "모든 워크플로우 가져오기",
      "type": "n8n-nodes-base.n8n",
      "position": [
        320,
        -20
      ],
      "parameters": {
        "filters": {},
        "requestOptions": {}
      },
      "credentials": {
        "n8nApi": {
          "id": "[n8n-api-credential-id]",
          "name": "n8n Development Environment"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c46b50cd-432f-4714-ac68-b6f92663b592",
      "name": "워크플로우 루프",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        540,
        -20
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "2a27e85d-51c0-4f45-a7d6-6422fc8a439b",
      "name": "Bitbucket에서 기존 워크플로우 가져오기",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        780,
        -20
      ],
      "parameters": {
        "url": "=https://api.bitbucket.org/2.0/repositories/{{ $('Set Bitbucket Workspace & Repository').item.json.WorkspaceSlug }}/{{ $('Set Bitbucket Workspace & Repository').item.json.RepositorySlug }}/src/main/{{ $json.name.replace(/[^a-zA-Z0-9]/g, '-').toLowerCase() }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          },
          "allowUnauthorizedCerts": true
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "[bitbucket-credential-id]",
          "name": "Bitbucket"
        }
      },
      "retryOnFail": false,
      "typeVersion": 4.2,
      "alwaysOutputData": false
    },
    {
      "id": "eeb52f03-dd60-46ae-ad86-1cabf7f6c20f",
      "name": "신규 또는 변경됨?",
      "type": "n8n-nodes-base.if",
      "position": [
        980,
        -20
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "2d5da90e-0f1d-436b-84d4-d82deaaa4b58",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.error.status }}",
              "rightValue": 404
            },
            {
              "id": "b7b9a48d-8954-4cc4-bf7a-ab30439ad930",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $('Get Existing Worfklow from Bitbucket').item.json.data }}",
              "rightValue": "={{ JSON.stringify($('Loop Workflows').item.json, null, 2) }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "04400827-d331-4ee2-8a67-1238ea2dc969",
      "name": "워크플로우를 Bitbucket에 업로드",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1200,
        -260
      ],
      "parameters": {
        "url": "=https://api.bitbucket.org/2.0/repositories/{{ $('Set Bitbucket Workspace & Repository').item.json.WorkspaceSlug }}/{{ $('Set Bitbucket Workspace & Repository').item.json.RepositorySlug }}/src",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {
              "maxRedirects": 5
            }
          },
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "message",
              "value": "={{ $('Loop Workflows').item.json.name + ' [' + $now.format('yyyy-MM-dd HH:mm:ss') +']' }}"
            },
            {
              "name": "={{ $('Loop Workflows').item.json.name.replace(/[^a-zA-Z0-9]/g, '-').toLowerCase() }}",
              "value": "={{ JSON.stringify($('Loop Workflows').item.json, null, 2) }}"
            }
          ]
        },
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "[bitbucket-credential-id]",
          "name": "Bitbucket"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5f198366-3bcf-4a96-ae60-da7cc9403a6f",
      "name": "속도 제한 회피 대기",
      "type": "n8n-nodes-base.wait",
      "position": [
        1620,
        -20
      ],
      "webhookId": "793d7525-d166-4487-a71f-d48da7c66662",
      "parameters": {
        "amount": "={{ $json.waitTime || 1 }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "adc37b33-c5af-4a44-ba87-9806efe25603",
      "name": "Bitbucket 워크스페이스 및 저장소 설정",
      "type": "n8n-nodes-base.set",
      "position": [
        100,
        -20
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "37f2ddba-188d-4bc1-98b3-5c5fa31d2d62",
              "name": "WorkspaceSlug",
              "type": "string",
              "value": "[workspace-slug]"
            },
            {
              "id": "303f25f0-bba8-4977-8f4f-33961e2e7e8c",
              "name": "RepositorySlug",
              "type": "string",
              "value": "[repository-slug]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f21887f2-e885-42c6-a934-4f7617e267dd",
  "connections": {
    "c46b50cd-432f-4714-ac68-b6f92663b592": {
      "main": [
        [],
        [
          {
            "node": "2a27e85d-51c0-4f45-a7d6-6422fc8a439b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "eeb52f03-dd60-46ae-ad86-1cabf7f6c20f": {
      "main": [
        [
          {
            "node": "04400827-d331-4ee2-8a67-1238ea2dc969",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5f198366-3bcf-4a96-ae60-da7cc9403a6f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "09b396aa-61e8-4631-8aae-7126fbd609e6": {
      "main": [
        [
          {
            "node": "c46b50cd-432f-4714-ac68-b6f92663b592",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3cbc2287-b36f-4839-87b7-be4a7eadcf79": {
      "main": [
        [
          {
            "node": "adc37b33-c5af-4a44-ba87-9806efe25603",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b3363b9d-ea6e-47b7-99f9-f48a21805886": {
      "main": [
        [
          {
            "node": "5f198366-3bcf-4a96-ae60-da7cc9403a6f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5f198366-3bcf-4a96-ae60-da7cc9403a6f": {
      "main": [
        [
          {
            "node": "c46b50cd-432f-4714-ac68-b6f92663b592",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "04400827-d331-4ee2-8a67-1238ea2dc969": {
      "main": [
        [
          {
            "node": "b3363b9d-ea6e-47b7-99f9-f48a21805886",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2a27e85d-51c0-4f45-a7d6-6422fc8a439b": {
      "main": [
        [
          {
            "node": "eeb52f03-dd60-46ae-ad86-1cabf7f6c20f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "adc37b33-c5af-4a44-ba87-9806efe25603": {
      "main": [
        [
          {
            "node": "09b396aa-61e8-4631-8aae-7126fbd609e6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 기타

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수9
카테고리1
노드 유형8
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Gareth B. Davies

Gareth B. Davies

@garethbdavies

API/AI/Automation Coach with 30 years experience helping teams build sustainable, efficient processes and systems. Join my Automate 30 for 30 live cohort and course to reclaim your time.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34