Lint และตรวจสอบรหัส Bicep ของคุณ

เสร็จสมบูรณ์เมื่อ

หลังจากที่คุณทราบว่าขั้นตอนไปป์ไลน์คืออะไร เรามาพิจารณาชุดแรกของขั้นตอนการตรวจสอบความถูกต้องที่คุณสามารถเพิ่มไปยังไปป์ไลน์การปรับใช้ Bicep ของคุณ ในหน่วยนี้ คุณจะได้เรียนรู้เกี่ยวกับการตรวจสอบเทมเพลต Bicep นอกจากนี้ คุณยังจะได้เรียนรู้เกี่ยวกับกิจกรรมสองอย่างที่โดยทั่วไปขั้นตอนการตรวจสอบความถูกต้องดําเนินการ: การตรวจสอบความถูกต้องของการซับและ preflight

ไฟล์ Bicep ที่ถูกต้องคืออะไร

ไฟล์ Bicep ที่ถูกต้องคือไฟล์ที่ไม่มีข้อผิดพลาดทางไวยากรณ์ นอกจากนี้ข้อกําหนดสําหรับทรัพยากร Azure ที่คุณวางแผนที่จะปรับใช้จะต้องถูกต้อง และเมื่อมีการปรับใช้ทรัพยากรที่กําหนดไว้ในไฟล์ พวกเขาจะต้องอยู่ภายในโควต้าและขีดจํากัดที่มีอยู่ในการสมัครใช้งาน Azure ของคุณ

จะมีการดําเนินการตรวจสอบบางอย่างบนไฟล์ Bicep ของคุณแยกจากกัน เช่น การตรวจสอบหาข้อผิดพลาดทางไวยากรณ์ สําหรับข้อกําหนดทรัพยากร Azure ที่ถูกต้อง และคุณภาพโค้ด ขั้นตอนเหล่านี้เป็นส่วนหนึ่งของกระบวนการที่เรียกว่า linting เพื่อตรวจสอบปัญหาอื่น ๆ คุณจําเป็นต้องขอให้บริการ Azure Resource Manager ตรวจสอบเทมเพลตของคุณและนําสภาพแวดล้อม Azure ของคุณเข้าสู่บัญชี

เทมเพลต Bicep ที่ถูกต้องมีโอกาสที่ดีขึ้นในการปรับใช้ที่ประสบความสําเร็จ คุณจะได้รับคําติชมโดยไม่ต้องปรับใช้เทมเพลต Bicep ของคุณ การตรวจสอบความถูกต้องเป็นแนวทางปฏิบัติที่ดีเนื่องจากถ้าคุณปรับใช้ไฟล์ Bicep ที่ไม่ถูกต้อง Azure อาจปรับใช้หรือเปลี่ยนแปลงเฉพาะชุดย่อยของทรัพยากรที่อธิบายไว้ในเทมเพลตของคุณ ผลลัพธ์อาจเป็นไปได้ว่าสถานะของสภาพแวดล้อมของคุณไม่สอดคล้องกันและอาจไม่ทํางานตามที่คุณคาดหวัง

สร้างและ lint Bicep code

เมื่อคุณปรับใช้ไฟล์ Bicep การใช้เครื่องมือ Bicep จะเรียกใช้ขั้นตอนการตรวจสอบพื้นฐานบางอย่างก่อน ขั้นตอนเหล่านี้เป็นขั้นตอนเดียวกับที่ทํางานเมื่อคุณปรับเปลี่ยนไฟล์ของคุณโดยใช้ Visual Studio Code ซึ่งจะตรวจสอบว่าคุณใช้คําหลักภาษา Bicep อย่างถูกต้องและคุณได้กําหนดทรัพยากร Azure ของคุณตามความต้องการสําหรับแต่ละชนิดทรัพยากร

นอกจากนี้ Bicep ยังเรียกใช้ linter ผ่านไฟล์ของคุณ Linting คือกระบวนการตรวจสอบโค้ดของคุณกับชุดคําแนะนํา Bicep linter ตรวจทานไฟล์ของคุณ และตรวจสอบว่าคุณได้ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดสําหรับการบํารุงรักษา ความถูกต้อง ความยืดหยุ่น และความสามารถในการขยายหรือไม่

linter ประกอบด้วยชุดกฎที่กําหนดไว้ล่วงหน้าสําหรับแต่ละหมวดหมู่เหล่านี้ กฎ linter ตัวอย่างประกอบด้วย:

  • พารามิเตอร์ที่ไม่ได้ใช้ linter จะสแกนหาพารามิเตอร์ที่ไม่ได้ใช้ที่ใดก็ได้ในไฟล์ Bicep ด้วยการกําจัดพารามิเตอร์ที่ไม่ได้ใช้งานคุณทําให้สามารถปรับใช้เทมเพลตของคุณได้ง่ายขึ้นเนื่องจากคุณไม่จําเป็นต้องให้ค่าที่ไม่จําเป็น นอกจากนี้คุณยังลดความสับสนเมื่อมีคนพยายามที่จะทํางานกับไฟล์ Bicep ของคุณ
  • การใช้สตริง linter จะตรวจสอบว่าไฟล์ของคุณใช้ฟังก์ชัน concat() แทนการใช้สตริง Bicep เพิ่มเติมหรือไม่ การประมาณค่าระหว่างสตริงทําให้ไฟล์ Bicep ของคุณอ่านง่ายขึ้น
  • ค่าเริ่มต้นสําหรับพารามิเตอร์ความปลอดภัย linter จะเตือนคุณถ้าคุณตั้งค่าเริ่มต้นสําหรับพารามิเตอร์ที่ถูกทําเครื่องหมายด้วยของ @secure() ตกแต่ง ค่าเริ่มต้นสําหรับพารามิเตอร์ความปลอดภัยเป็นแนวทางปฏิบัติที่ไม่ดีเนื่องจากให้พารามิเตอร์ความปลอดภัยที่มนุษย์สามารถอ่านได้และผู้คนอาจไม่เปลี่ยนแปลงก่อนการปรับใช้

Bicep linter จะทํางานโดยอัตโนมัติเมื่อคุณใช้เครื่องมือ Bicep ทุกครั้งที่คุณสร้างไฟล์ Bicep linter จะตรวจสอบกับแนวทางปฏิบัติที่ดีที่สุด Linting เกิดขึ้นโดยอัตโนมัติเมื่อคุณปรับใช้ไฟล์ Bicep กับ Azure แต่ในไปป์ไลน์ โดยทั่วไปแล้วคุณจะต้องเรียกใช้ขั้นตอนการตรวจสอบความถูกต้องและการสร้างภาพข้อมูลก่อนที่คุณจะปรับใช้ไฟล์ คุณสามารถกําหนดค่า Bicep เพื่อตรวจสอบไฟล์ของคุณโดยการสร้างไฟล์ Bicep ด้วยตนเองผ่าน Bicep CLI:

az bicep build --file main.bicep
bicep build main.bicep

โน้ต

เมื่อคุณเรียกใช้คําสั่ง build Bicep จะตัดรหัส Bicep ของคุณไปยังเทมเพลต JSON ARM ด้วย โดยทั่วไปแล้วคุณไม่จําเป็นต้องใช้ไฟล์ที่มีการแสดงผล ดังนั้นคุณสามารถเพิกเฉยได้

เนื่องจากคุณต้องการให้ linter ตรวจสอบเทมเพลต Bicep ของคุณแต่ละครั้งที่ทุกคนตรวจสอบโค้ดลงในที่เก็บของคุณ คุณสามารถเพิ่มลําดับขั้นและงานที่ไม่เป็นขุยในไปป์ไลน์ของคุณได้:

แผนภาพที่แสดงไปป์ไลน์ที่มีลําดับขั้นขลาดที่ประกอบด้วยงานเดี่ยวที่เรียกใช้ linter บนไฟล์

คุณสามารถแสดงส่วนเพิ่มเติมนี้ในไฟล์ YAML ไปป์ไลน์ของคุณดังนี้:

stages:

- stage: Lint
  jobs: 
  - job: Lint
    steps:
      - script: |
          az bicep build --file deploy/main.bicep

คําเตือนและข้อผิดพลาดของ Linter

ตามค่าเริ่มต้น linter จะปล่อยคําเตือนเมื่อพบว่าไฟล์ Bicep ได้ละเมิดกฎ คําเตือนว่า Bicep linter emits ไม่ถือว่าเป็นข้อผิดพลาด ดังนั้นพวกเขาจะไม่หยุดการทํางานของไปป์ไลน์หรือหยุดขั้นตอนต่อ ๆ ไปป์ไลน์จากการเรียกใช้

คุณสามารถเปลี่ยนลักษณะการทํางานนี้ ได้โดยการกําหนดค่า Bicep เพื่อจัดการการละเมิดกฎ linter เป็นข้อผิดพลาดแทนที่จะเป็นคําเตือน คุณทําการกําหนดค่าโดยการเพิ่มไฟล์ bicepconfig.json ไปยังโฟลเดอร์ที่มีไฟล์ Bicep ของคุณ คุณสามารถตัดสินใจได้ว่าปัญหาของ Linter ควรได้รับการปฏิบัติเป็นข้อผิดพลาดและปัญหาใดควรยังคงเป็นคําเตือน คุณจะเห็นวิธีอัปเดตกฎ linter ในภายหลังในมอดูลนี้

ปลาย

ไฟล์ bicepconfig.json ยังควบคุมวิธีที่ Visual Studio Code แสดงข้อผิดพลาดและคําเตือนในตัวแก้ไข ซึ่งแสดงเส้นหยักสีแดงและสีเหลืองภายใต้ส่วนที่กําหนดไว้ผิดในเทมเพลต Bicep ของคุณ ตัวบ่งชี้เหล่านี้จะให้คําติชมที่รวดเร็วยิ่งขึ้นเมื่อคุณกําลังเขียนรหัส Bicep ของคุณ ซึ่งจะช่วยลดโอกาสของข้อผิดพลาดได้มากยิ่งขึ้น

หลังจากที่คุณกําหนดค่า linter ใหม่เพื่อปล่อยข้อผิดพลาด เมื่อใดก็ตามที่ linter ตรวจพบปัญหา ไปป์ไลน์ของคุณจะหยุดทํางานและขั้นตอนหรืองานที่ตามมาไม่ทํางาน การตั้งค่านี้ช่วยให้มั่นใจว่าไม่ได้ปรับใช้รหัส Bicep ที่มีปัญหา

การตรวจสอบ Preflight

นอกจากนี้คุณควรตรวจสอบว่าเทมเพลต Bicep ของคุณมีแนวโน้มที่จะปรับใช้กับสภาพแวดล้อม Azure ของคุณเรียบร้อยแล้วหรือไม่ การตรวจสอบนี้เรียกว่า การตรวจสอบ Preflight และจะเรียกใช้การตรวจสอบที่ต้องการข้อมูลจาก Azure การตรวจสอบชนิดเหล่านี้รวมถึง:

  • ชื่อที่คุณระบุสําหรับทรัพยากร Bicep ถูกต้องหรือไม่
  • ชื่อที่คุณระบุสําหรับทรัพยากร Bicep ของคุณถูกใช้แล้วใช่หรือไม่
  • ภูมิภาคที่คุณกําลังปรับใช้ทรัพยากรของคุณถูกต้องหรือไม่

การตรวจสอบก่อนใช้งานจําเป็นต้องมีการสื่อสารกับ Azure แต่ไม่ได้ปรับใช้ทรัพยากรใด ๆ

แผนภาพที่แสดงไปป์ไลน์ที่มีขุยและลําดับขั้นการตรวจสอบความถูกต้อง ซึ่งแต่ละขั้นประกอบด้วยงานเดียว ขั้นตอนการตรวจสอบจะสื่อสารกับ Azure

คุณสามารถใช้ AzureResourceManagerTemplateDeployment งานเพื่อส่งไฟล์ Bicep สําหรับการตรวจสอบ Preflight deploymentModeกําหนดค่า เป็นValidation

- stage: Validate
  jobs:
  - job: Validate
    steps:
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: 'MyServiceConnection'
          location: $(deploymentDefaultLocation)
          deploymentMode: Validation
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep

คําสั่งนี้คล้ายกับงานการปรับใช้ที่คุณใช้อยู่แล้ว แต่ไม่ได้ปรับใช้ทรัพยากรใด ๆ ซึ่งจะทําการตรวจสอบเพิ่มเติมกับทรัพยากรที่ใช้ในเทมเพลตของคุณ

ตัวอย่างเช่น สมมติว่าไฟล์ Bicep ของคุณประกอบด้วยบัญชีเก็บข้อมูล การตรวจสอบ Preflight จะตรวจสอบว่าบัญชีเก็บข้อมูลอื่นมีชื่อที่คุณเลือกแล้วหรือไม่ นอกจากนี้ยังตรวจสอบว่าชื่อที่คุณเลือกสําหรับบัญชีเก็บข้อมูลเป็นไปตามมาตรฐานการตั้งชื่อหรือไม่

คําสั่งการตรวจสอบความถูกต้องของ Preflight เรียกใช้ Bicep linter อย่างไรก็ตาม โดยปกติแล้วเป็นความคิดที่ดีที่จะเรียกใช้ linter แยกต่างหาก ด้วยวิธีนี้ถ้ามีข้อผิดพลาด linter ใด ๆ คุณตรวจพบได้อย่างรวดเร็วแทนที่จะรอให้กระบวนการตรวจสอบเสร็จสิ้น การตรวจสอบความถูกต้องใช้เวลานานขึ้น

สําคัญ

เมื่อคุณเรียกใช้การตรวจสอบ Preflight ผู้ให้บริการทรัพยากร Azure แต่ละคนจะดําเนินการตรวจสอบของตนเอง ผู้ให้บริการทรัพยากรบางรายไม่ได้เรียกใช้การตรวจสอบจํานวนมาก ในขณะที่ผู้ให้บริการรายอื่นทําเช่นนั้นคุณจึงไม่สามารถพึ่งพาการตรวจสอบความถูกต้อง Preflight ให้มั่นใจว่าไฟล์ของคุณถูกต้อง อย่างไรก็ตามเป็นเครื่องมือที่มีประโยชน์และคุ้มค่าที่จะรวมไว้ในไปป์ไลน์ของคุณ

การเพิ่มขั้นตอนการตรวจสอบความถูกต้องไปยังไปป์ไลน์ของคุณเพื่อเรียกใช้ linter และดําเนินการตรวจสอบ Preflight คุณจะมีความมั่นใจมากขึ้นก่อนที่คุณปรับใช้ไฟล์ Bicep ของคุณ