Tutorial: Create environments with source control#
Feature availability
- Available on Enterprise.
- คุณต้องเป็น n8n instance owner, admin, หรือ project owner เพื่อตั้งค่า source control และเพื่อส่งงานไปและกลับจาก Git
tutorial นี้จะพาคุณตั้งค่า environments แบบ end-to-end คุณจะสร้าง environment สองอัน: development กับ production โดยใช้ GitHub เป็น Git provider (ถ้าใช้ provider อื่นก็คล้ายๆ กัน)
n8n สร้างฟีเจอร์ environments บน Git ซึ่งเป็นซอฟต์แวร์ version control คุณจะเชื่อม n8n instance กับ Git branch แล้วใช้ pattern push-pull เพื่อย้ายงานระหว่าง environments ควรเข้าใจ environments กับ Git มาก่อน ถ้าอยากอ่านเพิ่มดูที่:
- Environments in n8n: จุดประสงค์ของ environments และวิธีการทำงานใน n8n
- Git and n8n: concept ของ Git และ source control ใน n8n
Choose your source control pattern#
ก่อนจะ setup source control กับ environments คุณต้องวางแผน environments กับความสัมพันธ์กับ Git branch n8n รองรับ Branch patterns หลายแบบ สำหรับ environments ให้เลือกว่าจะใช้ multi-instance multi-branch หรือ multi-instance single-branch tutorial นี้จะสอนทั้งสองแบบ
คำแนะนำ: อย่า push และ pull ไปยัง n8n instance เดียวกัน
คุณสามารถ push งานจาก instance หนึ่งไปยัง branch และ pull มายัง instance เดียวกันได้ แต่ n8n ไม่แนะนำวิธีนี้ เพื่อลดความเสี่ยงของ merge conflicts และการเขียนทับงาน ควรพยายามสร้างกระบวนการที่งานไหลไปในทิศทางเดียว: ไม่ว่าจะไปยัง Git หรือจาก Git แต่ไม่ใช่ทั้งสองทาง
Multiple instances, multiple branches#
ข้อดีของรูปแบบนี้คือ:
- มีชั้นความปลอดภัยเพิ่มเติมเพื่อป้องกันการเปลี่ยนแปลงเข้าสู่ production environment ของคุณโดยไม่ได้ตั้งใจ คุณต้องทำ pull request ใน GitHub เพื่อคัดลอกงานระหว่าง environments
- รองรับมากกว่าสอง instances
ข้อเสียคือ มีขั้นตอนที่ต้องทำด้วยตนเองมากขึ้นในการคัดลอกงานระหว่าง environments
Multiple instances, one branch#
ข้อดีของรูปแบบนี้คือ งานจะพร้อมใช้งานสำหรับ environment อื่น ๆ ทันทีเมื่อคุณ push จาก instance หนึ่ง
ข้อเสียคือ:
- หากคุณ push โดยไม่ได้ตั้งใจ มีความเสี่ยงที่งานนั้นจะเข้าไปอยู่ใน production instance ของคุณ หากคุณ ใช้ GitHub Action เพื่อทำให้การ pull เป็นอัตโนมัติ ไปยัง production คุณต้องใช้รูปแบบ multi-instance, multi-branch หรือระมัดระวังไม่ push งานที่คุณไม่ต้องการให้เข้าสู่ production
- การ push และ pull ไปยัง instance เดียวกันอาจทำให้ข้อมูลสูญหายได้ เนื่องจากการเปลี่ยนแปลงจะถูกเขียนทับเมื่อดำเนินการเหล่านี้ คุณควรตั้งค่ากระบวนการเพื่อให้แน่ใจว่าเนื้อหาไหลไปในทิศทางเดียว
Set up your repository#
เลือก pattern เสร็จแล้ว ให้ setup GitHub repository
- Create a new repository
- ให้ repository เป็น private เว้นแต่คุณอยากให้ workflow, tag, variable, credential stub ของคุณเปิดเผยต่อสาธารณะ
- สร้าง repository พร้อม README เพื่อจะได้สร้าง branch ได้ทันที
- สร้าง branch ชื่อ
production
กับdevelopment
ดูวิธีที่ Creating and deleting branches within your repository
- ให้ repository เป็น private เว้นแต่คุณอยากให้ workflow, tag, variable, credential stub ของคุณเปิดเผยต่อสาธารณะ
- สร้าง repository พร้อม README จะได้ branch
main
ไว้เชื่อมต่อ
Connect your n8n instances to your repository#
สร้าง n8n instance สองอัน อันหนึ่งสำหรับ development อีกอันสำหรับ production
Configure Git in n8n#
- ไปที่ Settings > Environments
- ในช่อง Git repository URL ให้ป้อน SSH URL สำหรับ repository ของคุณ
- n8n รองรับอัลกอริทึม public key แบบ ED25519 และ RSA โดย ED25519 เป็นค่าเริ่มต้น เลือก RSA ภายใต้ SSH Key หาก git host ของคุณต้องการ RSA
- คัดลอก SSH key
Set up a deploy key#
ตั้งค่า SSH access โดยสร้าง deploy key ให้ repository โดยใช้ SSH key จาก n8n ต้องให้สิทธิ์ write ดูวิธีที่ GitHub | Managing deploy keys
Connect n8n and configure your instance#
- ที่ Settings > Environments ใน n8n ให้เลือก Connect เพื่อเชื่อมกับ Git repository
- ที่ Instance settings เลือก branch ที่จะใช้กับ n8n instance นี้ เชื่อม production branch กับ production instance, development branch กับ development instance
- production instance เท่านั้น: เลือก Protected instance เพื่อป้องกันไม่ให้ user แก้ workflow ใน instance นี้
- เลือก Save settings
- ที่ Settings > Environments ใน n8n ให้เลือก Connect
- ที่ Instance settings เลือก main branch
- production instance เท่านั้น: เลือก Protected instance เพื่อป้องกันไม่ให้ user แก้ workflow ใน instance นี้
- เลือก Save settings
Push work from development#
ใน development instance ให้สร้าง workflow, tag, variable, credential ขึ้นมาสักหน่อย
วิธีการ push งานไปยัง Git:
-
เลือก Push
ในเมนูหลัก
-
ใน modal Commit and push changes ให้เลือก workflows ที่คุณต้องการ push คุณสามารถกรองตามสถานะ (new, modified, deleted) และค้นหา workflows ได้ n8n จะ push tags, และ variable และ credential stubs โดยอัตโนมัติ
- ป้อน commit message ซึ่งควรเป็นคำอธิบายหนึ่งประโยคเกี่ยวกับการเปลี่ยนแปลงที่คุณทำ
- เลือก Commit and Push n8n จะส่งงานไปยัง Git และแสดงข้อความแจ้งความสำเร็จเมื่อเสร็จสิ้น
Pull work to production#
ตอนนี้งานของคุณอยู่ใน GitHub แล้ว ถ้าใช้ multi-branch จะอยู่ใน development branch ถ้าใช้ single-branch จะอยู่ใน main
- ใน GitHub ให้สร้าง pull request เพื่อ merge development เข้า production
- merge pull request
- ที่ production instance ให้เลือก Pull
ในเมนูหลัก
ที่ production instance ให้เลือก Pull ในเมนูหลัก
Optional: Use a GitHub Action to automate pulls#
ถ้าไม่อยาก login เข้า production instance เพื่อ pull งานเอง สามารถใช้ GitHub Action กับ n8n API เพื่อ pull อัตโนมัติทุกครั้งที่ push งานใหม่เข้า production หรือ main branch
ตัวอย่าง GitHub Action:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Next steps#
อ่านต่อเกี่ยวกับ:
- Environments in n8n และ Git and n8n
- Source control patterns
- Variables ที่นำกลับมาใช้ซ้ำได้ และ Managing variables using the API ตอนใช้ source control