Azure Microsoft Cloud Account: ใช้การจำลองการทำงานของ Azure DevOps GitHub อัตโนมัติเพื่อสร้าง CI/CD ที่นุ่มนวล
ในการพัฒนาประจำวันของทีม R & D จำนวนมากคุณมักจะเห็นฉาก "เย็บแปลกๆ" ที่ไร้สาระ:
การจัดการโครงการใช้ Jira ราคาแพงรหัสโฮสต์อยู่ใน GitLab ที่สร้างขึ้นในเครื่องระบบอัตโนมัติ (CI) ใช้แพตช์ซ้อนกันและ Jenkins ซึ่งมักจะวางสายเนื่องจากหน่วยความจำล้นและการตรวจสอบโครงการและเอกสารขั้นสุดท้ายจะถูกยัดลงใน Microsoft Teams หรือ SharePoint ทันทีที่มีการเปิดตัวเวอร์ชันใหม่ผู้จัดการผลิตภัณฑ์ก็กระตุ้น Jira อย่างเมามันและผู้พัฒนาก็พูดถึง Merge Request ใน GitLab อย่างสั่นๆการดำเนินการและการบำรุงรักษาก็ไปที่ Jenkins ด้วยตนเองเพื่อ "สร้าง" ในขณะที่บูชาพระเจ้าและในที่สุดก็มีข้อผิดพลาดทุกคนอยู่บนแพลตฟอร์มที่แตกต่างกันโยนหม้ออย่างบ้าคลั่งและหมดแรง
ห่วงโซ่เครื่องมือ "Wanguo Brand" แบบนี้ไม่เพียงแต่มีค่าใช้จ่ายในการบำรุงรักษาที่สูงอย่างน่ากลัวแต่ "เกาะข้อมูล" ที่แยกออกจากระบบต่างๆยังเป็นตัวการสำคัญอันดับหนึ่งที่ขัดขวางความคล่องตัวของทีม
ในความเป็นจริงหลังจากได้รับ GitHub และสร้าง Azure ขึ้นมาใหม่อย่างมาก Microsoft ได้ทำการเชื่อม DevOps สมัยใหม่แบบวงปิดในระดับโลกแล้วในสถาปัตยกรรมชั้นยอดของโรงงานขนาดใหญ่มี "Microsoft Family Bucket Combination Boxing" ที่ถือได้ว่าเป็นเพดานประสิทธิภาพ:
ใช้ Azure Boards เพื่อรับบอร์ดโครงการที่คล่องตัวล็อกรหัสในคลังสินค้า GitHub ใช้พลังการประมวลผลแบบดั้งเดิมบนคลาวด์ของ GitHub Actions เพื่อระเบิด CI (การผสานรวมอย่างต่อเนื่อง) และในที่สุดก็ถ่ายภาพผลิตภัณฑ์ที่คอมไพล์ลงใน Azure App Service (การปรับใช้อย่างต่อเนื่อง, ซีดี).
สายการประกอบทั้งหมดราบรื่นราวกับผ้าไหมและทั้งสายใช้เครือข่ายกระดูกสันหลังป้องกันสูงที่สร้างขึ้นเองของ Microsoft เพื่อยุติการดึงข้ามแพลตฟอร์มโดยสิ้นเชิงวันนี้เราปฏิเสธการเทศนาอย่างเป็นทางการใดๆโดยไม่ต้องพูดถึงแนวคิดที่น่าเบื่อเริ่มต้นโดยตรงจากศูนย์และพาคุณไปใช้สถาปัตยกรรมแบบไม่ใช้เซิร์ฟเวอร์เพื่อสร้างอาคารสูงบนพื้นดินใน10นาทีเพื่อสร้างสายการประกอบอัตโนมัติ CI/CD ระดับโรงงานขนาดใหญ่
ขั้นตอนแรก: การรื้อลึก "แบบจำลองการเชื่อมโยงเวลาอวกาศสี่มิติ" ของถังครอบครัว
ก่อนที่จะคลิกที่คอนโซลคุณต้องสร้างแบบจำลองการทำงานของโลกทางกายภาพที่ด้านล่างของถังครอบครัวในใจของคุณหลายคนคิดว่ามันจะยุ่งเหยิงถ้ามีเครื่องมือมากเกินไปอันที่จริงเกมหมากรุกของ Microsoft นั้นละเอียดอ่อนมากและแต่ละคนก็ทำหน้าที่ของตัวเอง:
ศูนย์บัญชาการ: Azure Boards (ความต้องการและความคืบหน้าถูกล็อค): นี่คือ "สมอง" ของโครงการผู้จัดการผลิตภัณฑ์เขียน User Story ที่นี่และสถาปนิกก็ถอด Task ออกสิ่งที่น่าทึ่งที่สุดคือรายการงานทุกรายการที่นี่มี ID เฉพาะ (เช่น #45)
ไลบรารีสินทรัพย์รหัส: GitHub Enterprise: หลังจากนักพัฒนาได้รับงาน #45แล้วให้เขียนโค้ดในเครื่องเมื่อพวกเขาใส่รหัส git ลงใน GitHub เพียงเขียน Fixes AzureBoards ในข้อความคอม it
#45,GitHub และ Azure Boards จะเปิดอุโมงค์อวกาศทันทีการ์ดบนป้ายโฆษณาจะกะพริบจาก "กำลังพัฒนา" เป็น "เสร็จสมบูรณ์" โดยอัตโนมัติและประวัติการเปลี่ยนแปลงโค้ดจะถูกติดตั้งโดยอัตโนมัติภายใต้รายการข้อกำหนดเพื่อให้ได้ระดับพิกเซลการติดตามการตรวจสอบ
เครื่องบินทิ้งระเบิดหนัก: GitHub Actions (การรวมอย่างต่อเนื่อง CI): ตราบใดที่รหัสรวมอยู่ในสาขาหลักเครื่องเสมือน (Runner) ที่โฮสต์อย่างสมบูรณ์ในพื้นหลัง GitHub จะถูกปลุกขึ้นทันทีคุณไม่จำเป็นต้องกำหนดค่าเซิร์ฟเวอร์ด้วยตัวเองมันจะดึงสภาพแวดล้อมขึ้นโดยอัตโนมัติเรียกใช้การทดสอบหน่วยและบรรจุลงในแพ็คเกจบีบอัดไบนารี
จุดจบ: Azure App Service (การปรับใช้อย่างต่อเนื่องซีดี): แพ็กเกจที่คอมไพล์จะถูกฉีดเข้าไปในเว็บคอนเทนเนอร์ที่ Azure โฮสต์โดยตรงผ่านช่องทางที่ไม่มีการเข้ารหัสของ Microsoft intranet ที่ปลอดภัยและผู้ใช้ทั่วโลกจะเห็นว่าฟีเจอร์ใหม่ออนไลน์ในไม่กี่วินาที.
ขั้นตอนที่สอง: การฝึกการต่อสู้จริงหนึ่ง-การเชื่อมต่อสองอาณาจักรเปิดอุโมงค์อวกาศระหว่าง Boards และ GitHub
ตรวจสอบให้แน่ใจว่าคุณมีบัญชี GitHub และบัญชี Azure อยู่แล้ว
1.สร้างคำสั่งความคล่องตัวของคุณ
ลงชื่อเข้าใช้พอร์ทัล Azure DevOps สร้างองค์กรใหม่และสร้างโครงการใหม่ที่เรียกว่า project-omega เลือก Scrum หรือ Agile สำหรับกระบวนการ
เมื่อเข้าสู่โครงการแล้วให้คลิก "การตั้งค่าโครงการ" ที่มุมล่างซ้าย
ค้นหา "GitHub connections" ในเมนูด้านซ้ายแล้วคลิก "Connect your GitHub account"
หลังจากเสร็จสิ้นการอนุญาตให้ตรวจสอบคลังสินค้าส่วนตัวของ GitHub (เช่นโอเมก้า-เว็บ-แอป) ที่คุณเตรียมไว้สำหรับการทดลองนี้แล้วคลิกบันทึก
2.เขียนรหัสด้วย "รหัสลับ"
ตอนนี้ไปที่ Azure Boards
Boards (Kanban)
สร้างงานใหม่ในสมมติว่า ID ที่ระบบกำหนดโดยอัตโนมัติคือ
ห้า
。
ใช้ในพื้นที่ NET 8หรือ Java เขียนโค้ดหน้าเว็บง่ายๆไม่กี่บรรทัดเมื่อส่งโค้ดในบรรทัดคำสั่งให้จงใจพิมพ์รหัสลับของข้อกำหนดผู้ผลิตรายใหญ่ต่อไปนี้:
แบช
Git add.
คำสั่ง git-m "feat: การพัฒนาอินเทอร์เฟซการเข้าสู่ระบบหลักเสร็จสมบูรณ์เชื่อมโยง Boards AB #5"
Git push origin main
ปาฏิหาริย์เกิดขึ้น:
ณจุดนี้คุณกลับไปที่หน้า Azure Boards รีเฟรชคุณจะพบว่า ID คือ
ห้า
พื้นที่พัฒนาภายในของการ์ดได้ดึงการส่ง GitHub โดยอัตโนมัติและแม้แต่บรรทัดที่มีการเปลี่ยนแปลงรหัสทั้งสองโลกเปิดอย่างสมบูรณ์!
ขั้นตอนที่สาม: การฝึกซ้อมการต่อสู้จริง2
-เขียนสายการประกอบฮาร์ดคอร์ของ GitHub Actions โดยตรงไปยังระบบคลาวด์
รหัสอยู่ใน GitHub แล้วและตอนนี้เราต้องดึงกิจกรรม GitHub ขึ้นมาเพื่อให้สามารถถ่ายภาพผลิตภัณฑ์สำเร็จรูปบน Azure App Service โดยอัตโนมัติในขณะที่รหัสถูกรวมเข้าด้วยกัน
ขั้นตอนที่1: ไปที่ปลาย Azure เพื่อสมัคร "Publish Profile"
สถาปัตยกรรม Dachang ห้ามเขียนรหัสผ่านบัญชีผู้ดูแลระบบคลาวด์ในรหัสโดยเด็ดขาดเราต้องใช้ข้อมูลประจำตัวที่ปลอดภัยที่สุด
เข้าสู่คอนโซล Azure และเข้าสู่หน้ารายละเอียดของ Azure App Service (บริการแอพ) ที่คุณสร้างไว้ล่วงหน้า
ในแถบเมนูด้านบนให้คลิก "รับโปรไฟล์สิ่งพิมพ์" (รับโปรไฟล์การเผยแพร่)
ในขณะนี้คอมพิวเตอร์ของคุณจะดาวน์โหลดคีย์การเข้ารหัสที่ซับซ้อนโดยอัตโนมัติไฟล์ข้อความ PublishSettings 。เปิดและเลือกทั้งหมดเพื่อคัดลอก
กลับไปที่หน้าคลังสินค้า GitHub ของคุณและคลิกที่ "Settings"-> "Secrets and variables"-> "Actions"
คลิก "การเก็บรักษาใหม่" ชื่อนี้เรียกว่า AZURE_WEBAPP_PUBLISH_PROFILE โพสต์เนื้อหาที่คุณเพิ่งคัดลอกแล้วคลิกบันทึกประตูนิรภัยถูกล็อค!
ขั้นตอนที่2: YAML, จัดสายการประกอบอัตโนมัติ
สร้างไดเร็กทอรีที่ซ่อนอยู่ใหม่ในไดเร็กทอรีรากของโปรเจ็กต์ภายใน
.Github/workflows/
, สร้างไฟล์
Deploy.yml
ไฟล์
เอกสารนี้เป็น "พิมพ์เขียวตราเหล็ก" ของเราเราต้องใช้ไวยากรณ์ที่เปิดเผยอย่างแท้จริงเพื่อให้กิจกรรม GitHub ทำงานโดยอัตโนมัติ:
ชื่อ: Omega สาย CI-CD อัตโนมัติที่ทันสมัย
# เงื่อนไขทริกเกอร์: ตราบใดที่สาขาหลักมีรหัสดันขึ้นปืนทั้งหมดจะดังขึ้นทันที
On:
Push:
Branches: ["main"]
Jobs:
Build-and-deploy:
Runs-on: Ubuntu-latest # เครื่องบินทิ้งระเบิด Linux ล่าสุดที่โฮสต์ฟรีอย่างเป็นทางการโดยใช้ GitHub
Steps:
#1.ดึงรหัสไปยังสภาพแวดล้อมการสร้างเครื่องเสมือน
-Name: ขั้นตอนที่1: ดึงซอร์สโค้ดล่าสุด
Uses: ac
Tions/checkout @ v4
#2.ฉีด. NET สภาพแวดล้อมการทำงาน (ถ้าเป็น Java ให้เปลี่ยนเป็น actions/setup-java)
-Name: ขั้นตอนที่สอง: เริ่มต้นแกนไมโครซอฟท์. NET สิ่งแวดล้อม
Uses: actions/setup-dotnet @ v4
With:
Dotnet-version: '8.0.x'
#3.ขึ้นอยู่กับการกู้คืนและการรวบรวมหลัก
-Name: ขั้นตอนที่สาม: ขึ้นอยู่กับการกู้คืนและการรวบรวมระดับอุตสาหกรรม
วิ่ง: |
Dotnet restore
Dotnet publish -c Release-o. /Publish-folder
#4.การจัดส่งข้ามพรมแดนไปยัง Azure
-Name: ขั้นตอนที่4: การจัดส่งข้ามพรมแดนไปยัง Azure App Service
Uses: azure/webapps-deloy @ v3
With:
App-name: 'your-azure-webapp-name' # แทนที่ด้วยชื่อเว็บแอพจริงบน Azure ของคุณ
Publish-profile: $ {secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # ดึงข้อมูลรับรองความปลอดภัยของเราที่ถูกล็อคใน GitHub
Package:. /Publish-folder
บันทึกไฟล์นี้โดยตรง
Git push
ระเบิดเข้าไปใน GitHub
ขั้นตอนที่สี่: ช่วงเวลาแห่งการเป็นพยานถึงปาฏิหาริย์-ทิ้งแป้นพิมพ์ด้วยมือทั้งสองข้างและชื่นชมพายุเฮอริเคนอัตโนมัติอย่างเงียบๆ
ในขณะที่รหัสถูกผลักขึ้นให้เปิดคลังสินค้า GitHub ของคุณทันทีและคลิกที่ด้านบน
"การกระทำ"
หน้าแท็บ
คุณจะเห็นวงกลมความคืบหน้าสีทองกำลังหมุนอย่างบ้าคลั่งคลิกเพื่อเข้าไปคุณจะเห็นว่าสี่ขั้นตอนที่เขียนใน YAML ตอนนี้กำลังเพิ่มความสว่างให้กับตะขอสีเขียวเหมือนขบวนพาเหรด (
✓
)。
ส่วนการสร้าง: เครื่องเสมือน Ubuntu ที่โฮสต์โดย GitHub เสร็จสิ้นการดึงและคอมไพล์โค้ดภายในเวลาไม่ถึง15วินาที
ส่วนการปรับใช้: แพ็กเกจไบนารีที่คอมไพล์ผ่านช่องคีย์ PUBLISH_PROFILE ที่เพิ่งฝังข้ามการป้องกันเครือข่ายสาธารณะและฉีดเข้าไปในคอนเทนเนอร์คลาวด์ของ Microsoft โดยตรง
โดยปกติแล้วกระบวนการทั้งหมดต้องการเพียง
45วินาทีถึง1นาที
。เมื่อรายการสุดท้ายสว่างขึ้นคุณเปิดเบราว์เซอร์และป้อนชื่อโดเมนไซต์ Azure ของคุณฟังก์ชันทางธุรกิจใหม่ได้รับการนำเสนออย่างสมบูรณ์แบบทั่วโลก
เมื่อมองย้อนกลับไปที่ป้าย Azure Boards เนื่องจากคุณได้ฝังรหัสลับไว้ใน Commit ID นั้นคือ
ห้า
งานนี้ได้รับการจัดเก็บอย่างหรูหราและอัตโนมัติในคอลัมน์ "ออนไลน์" ทีมงานกระบวนการทั้งหมดไม่ได้จัดการประชุมการจัดตำแหน่งไม่ได้ไปที่คอนโซลและคลิกเมาส์การเรียกรหัสบริสุทธิ์นั้นเนียนและสะดวกสบายมาก
ขั้นตอนที่ห้า: ประวัติความเป็นมาของการหลีกเลี่ยงเลือดและน้ำตาภายใต้โครงสร้างถังครอบครัวระดับองค์กร
โซลูชัน Microsoft Family Barrel นี้ใช้งานได้ง่ายมากและเกิดมาพร้อมกับสายเลือดของผู้ผลิตรายใหญ่แต่เพื่อให้อยู่รอดในสนามรบเชิงพาณิชย์ของการทำงานร่วมกันหลายคนและการส่งข้อมูลความถี่สูงในฐานะหัวหน้าสถาปนิกคุณต้องเชื่อมข้อกำหนดด้านล่างสองข้อต่อไปนี้ให้กับทีมทันที:
1.ตัดรูปแบบเดิมของ "สาขาหลัก" (การป้องกันสาขา)
ทีมมือใหม่หลายทีมพบว่ามันสะดวกเกินไปเมื่อพวกเขาใช้สายการประกอบนี้เป็นครั้งแรกดังนั้นไม่ว่าจะเป็นนักพัฒนาอาวุโสหรือนักศึกษาฝึกงานที่เพิ่งเข้ามาใหม่ในทีมพวกเขาจะไปที่นั่นโดยตรงทุกวัน
Main
สาขาบน
Push
รหัส
ภัยพิบัติ: หากวันหนึ่งนักศึกษาฝึกงานเขียนการวนซ้ำโดยไม่ได้ตั้งใจหรือบังคับให้มีการใช้รหัสที่ไม่สามารถใช้งานได้ GitHub Actions จะรวบรวมและเผยแพร่รหัสขยะนี้โดยอัตโนมัติภายใน1นาทีสภาพแวดล้อมการผลิตนำไปสู่อัมพาตขนาดใหญ่ของระบบออนไลน์โดยตรง
การดำเนินการหลีกเลี่ยงหลุมมาตรฐานของโรงงานขนาดใหญ่: ต้องเปิด "การดำเนินการป้องกันสาขา" เข้าสู่การตั้งค่าคลังสินค้า GitHub และบังคับล็อคสาขาหลักคำสั่งทางปกครอง: ห้ามมิให้ผู้ใดผลักดันสาขาหลักโดยตรงโดยเด็ดขาด! ก่อนอื่นคุณต้องสร้างสาขาการทำงานในเครื่องและส่ง Pull Request (PR) หลังจากเขียนเสร็จและกำหนดค่าใน GitHub: เฉพาะเมื่อผลการรวมอย่างต่อเนื่องของ GitHub Actions (การทดสอบหน่วยเสร็จสิ้น) เป็นสีเขียวและสถาปนิกอาวุโสอย่างน้อยหนึ่งคนลงนามในการตรวจสอบด้วยตาเปล่ารหัสจะรวมเข้ากับสาขาหลักได้หรือไม่ใช้กระบวนการเพื่อติดขัดข้อผิดพลาดระดับต่ำ
2.ระวังพลังการประมวลผลที่มากเกินไปที่เกิดจาก "การก่อสร้างเมทริกซ์"
GitHub Actions แข็งแกร่งมาก
ใหญ่รองรับไฟล์
Strategy: matrix
เทคโนโลยีสีดำช่วยให้คุณสามารถเขียนโค้ดได้สองสามบรรทัดซึ่งสามารถใช้กับ Windows, Linux และ macOS ได้ในเวลาเดียวกัน NET 6, 7, 8เวอร์ชันต่างๆ
การทดสอบการคอมไพล์9ชุดพร้อมกัน
。
การเปิดเผยข้อมูลภายใน: พลังการประมวลผลของ GitHub ที่ Microsoft ให้ไว้สำหรับบัญชีฟรีแต่ละบัญชีมีจำกัด (โดยปกติ2,000นาทีต่อเดือน) หากคุณเปิดใช้งานการสร้างเมทริกซ์แบบสุ่มสี่สุ่มห้าในโครงการขนาดใหญ่ระดับองค์กรทุกครั้งที่มีคนพูดถึง PR คุณจะใช้เวลาเครื่องเสมือน9เท่าอย่างบ้าคลั่งและภายในไม่กี่วันพลังการประมวลผลฟรีของเดือนจะถูกเผาจนหมดส่งผลให้ CI ทั้งหมด/สายการประกอบซีดีจะหยุดงานโดยตรง
ข้อกำหนดการเสริมแรงแบบฮาร์ดคอร์: ในสาขาการพัฒนารายวัน (Feature Branch) การทดสอบพื้นฐานจะดำเนินการอย่างเคร่งครัดในสภาพแวดล้อมที่ถูกที่สุดและเร็วที่สุดของ Ubuntu-latest เท่านั้นเฉพาะเมื่อรหัสต้องพิมพ์แท็กจริงๆหรือรวมเข้ากับสาขารีลีสเมื่อพร้อมสำหรับการผลิตจากนั้นทริกเกอร์การรวบรวมการตรวจสอบมาตรฐานสูงของเมทริกซ์เต็ม
สรุป
การใช้ Microsoft Family Bucket เพื่อสร้างสายการประกอบอัตโนมัติ CI/CD สาระสำคัญระดับอุตสาหกรรมหลักถูกทำให้ง่ายขึ้นเป็น16คำ:
Kanban แนะนำเส้นทางรหัสลับเชื่อมต่อรวบรวมบนคลาวด์และคุ้มกันหลักฐาน
คุณได้อำลาสถานะการทำงานและการบำรุงรักษาเดิมโดยสิ้นเชิงซึ่งเครื่องมือของบุคคลที่สามถูกเย็บทุกที่ในอดีตผมร่วงทุกวันสำหรับความขัดแย้งของปลั๊กอิน Jenkins และข้อกำหนดและรหัสไม่ตรงกันโดยสิ้นเชิงโฮสต์โครงสร้างพื้นฐานและการหมุนเวียนที่ซับซ้อนทั้งหมดให้กับสมองที่ไร้รอยต่อซึ่งเชื่อมต่อกันอย่างสมบูรณ์ในระดับโรงงานขนาดใหญ่นั่งอยู่หน้าคอมพิวเตอร์ให้ความสำคัญกับการขัดรหัสธุรกิจ100% และเขียนให้เสร็จ
Git push
ส่วนที่เหลือจะถูกส่งมอบให้กับสายการประกอบดั้งเดิมของระบบคลาวด์ที่มีความเร็วแสงกะพริบ
