[AZ-400] Implement CI with Azure Pipelines and GitHub Actions (Part1)

[AZ-400] Implement CI with Azure Pipelines and GitHub Actions (Part1) #Azure #DevOps #GitHub

Explore Azure Pipelines

  • Pipelines in DevOps
    • พยายาม reset focus from silos to an end-to-end flow of value.
    • สร้าง Flow Pipelines โดยหาจุดที่ทำซ้ำ (repeatable), reliable incrementally-improving process และดัน Automation Build > Test > Deploy และ Deploy นอกจาก Script แล้วตัว platform provisioning (สร้าง Infra) และconfiguration management (จัดการการตั้งค่า)
    • ถ้า Jenkins จะเป็น JenkinsFile ใช้ Groovy และของ Azure ก็มี Azure Pipelines และ Azure Pipelines key terms

Manage Azure Pipeline agents and pools

  • Host Type - Microsoft-hosted agent ตอน Pipeline ทำงาน มันสร้าง Instance (VM) ขึ้นมา พอเสร็จปิด) / Self-hosted agent
  • Job Types
    • Agent pool jobs.
    • Container jobs - Run Container บน Agent Pool
    • Deployment group jobs.
    • Agentless jobs. (Server Jobs)
  • Introduction to agent pools (ใน Jenkins executer)
  • Predefined agent pool - VM ที่ MS เตรียมไว้ให้
  • Communicate with Azure Pipelines (Pull Model)
    • Agent register ลงใน Agent Pool (Each agent has a public-private key pair แลกกันตอนนี้) และได้ listener OAuth token เพื่อจะด Job Queue
    • ถ้ามีงาน Agent จะได้ job-specific OAuth token เพื่อมาเข้าถึง resource พิเศษ เช่น Code / upload test results
    • payload ใช้ asymmetric encryption
  • Communicate to deploy to target servers
    • เมื่อเราใช้ agent deploy artifacts ให้กับ Target Server ที่ต้องการเราต้องมี "line of sight" (Agent Connect กับ Server ปลายทางได้)
      • Microsoft-hosted agent - ต่อกับ Azure ได้อยู่แล้ว
      • แต่ถ้า Target Server อยุ่ On-premise ใช้ Self-hosted agent แทน
  • Examine other considerations
    • Authentication - Personal access token (PAT)
    • Interactive VS service - ใครรันจะเป็น Owner ของ Process ที่ Agent ทำงาน แต่แบบแรกแนะนำลองแบบ Interactive
      • แบบ Interactive - ปิด Screen Server +ทำ Auto Logon (เพิ่ม Security Risk)
      • แบบ Service - Background Process
    • Agent Version - format {major}.{minor}
  • Question and Answer
    • self-hosted agents performance ดีกว่า Microsoft-hosted agents
      • self-hosted agent, run incremental builds ต่างกับ Microsoft-hosted agent ที่งานจบ Agent ถูก Destroy
      • Microsoft-hosted agent Start ช้ากว่า เพราะเสียเวลา Allocate Resource และสร้างช่วงนึง
    • multiple self-hosted agents ลงเครื่องเดียวกัน ทำได้
  • Describe security of agent pools
    • Org Level - Administrator / Service Account (Create Project Agent Pool) / Reader
    • Project Level - Administrator / User (authoring build / release pipelines จาก Project Pool) / Reader
  • Lab4 : Configure agent pools and understanding pipeline styles

Describe pipelines and concurrency

  • Parallel jobs are purchased at the organization level (Shared ทุก Project ถึงแม้ว่าแต่ละ Project มี Config ไว้ แต่จะมี Capacity มาสุดตามที่ซื่อไว้ใน organization level
  • Estimate parallel jobs
    • Simple - ในทีมมี DEV 4-5 คนน่าจะมี 1 Parallel Job
    • Detailed - ใน ORG มีหลายทีมไหม อย่างน้อย 1 Parallel Job แล้วมีอาจจะดูตามจำนวน Active Branch / 1 ORG มีหลาย APP ต้องแยกตาม App เผื่อ
  • Public VS Private projects
  • Azure Pipeline
    • มี Visual Designer ด้วยนะ แต่ต้องเลือกจาก Classic Editor
    • YAML เป็น Code Config ข้อดีมี Keep Version เหมือน Code เลย Create your first pipeline - Azure Pipelines
  • Knowledge check: Describe pipelines and concurrency

Explore Continuous Integration

  • Introduction to continuous integration
    • process (repeatable + robust) of automating the build and testing of code every commit change (small task completion)
  • 4 pillars of continuous integration
    • Version control system - GIT / SVN เป็นต้น
    • Package management system - NuGet / Maven / NPM เป็นต้น
    • Continuous integration system - Jenkins / Azure DevOps เป็นต้น
    • Automated build process - ANT / Gradle เป็นต้น
  • Benefits of continuous integration
    • Key Benefit: Rapid Feedback for Code Quality
    • Reducing build times for quick feedback and early detection of problems (risk reduction)
    • Better managing technical debt and conducting code analysis
    • Reducing long, complex, and bug-inducing merges
    • Increasing confidence in codebase health long before production deployment
  • Describe build properties
    • Build number formatting
    • Build status
    • Authorization and timeouts - ไม่ใช้ Job มันกิน Resouce นานเกินไป ปกติบน Jenkins เราไม่เคยทำเลย 55
    • Badges - Status ของสิ่งที่สนใจ เช่น การ Build / Test
  • Lab5 : Enable Continuous Integration with Azure Pipelines

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.