Microsoft Azure DevOps針對Angular項目創建build版本的yaml

Azure DevOps針對Angular項目創建build版本的yaml,并通過變量控制相應job的執行與否。

注意事項:代碼前面的空格是通過Tab控制的而不是通過Space控制的。

?

yaml文件中包含一下內容:?

1. 自動觸發build

通過指定code branch使提交到此代碼庫的代碼自動build

trigger:- "main"- "rc/*"- "hf/*"

2. 指定build的code branch

如指定main、master,即只有main、master代碼庫才支持發布Artificats。

variables:ROOT_PATH: refs/headssystem.debug: 'true'COMPONENT_PROJ: 'corpro-ui'ShouldPublish: $[or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), contains(variables['Build.SourceBranch'], 'refs/heads/rc'), contains(variables['Build.SourceBranch'], 'refs/heads/hf'))]

3. 集成Veracode Scan

用于檢測包版本的缺陷。 可通過參數啟用或者禁止。

  - job: veracode_scandisplayName: Veracode Scan#dependsOn: format_linting_check#condition: and(not(failed()), ne(variables['skip.veracode.scan'], 'true'))condition: ne(variables['skip.veracode.scan'], 'true') # skip.veracode.scan參數用于控制收否執行ceracode_scan這個Job

Veracode Scan是收費的。

4. 編譯和發布到Artifacts

variables.ShouldPublish控制是否要發布到Artifacts

  #------------------------------#     Build & Publish#------------------------------- job: build_publishpool: AD.US.AgentPools.WNPdisplayName: Build & PublishdependsOn: veracode_scancondition: and(succeeded(), eq(variables.ShouldPublish, true))steps:- task: NodeTool@0inputs:versionSpec: '20.x'displayName: 'Install node.js'- task: Npm@1displayName: npm installinputs:command: customcustomCommand: 'install -force'- task: Npm@1displayName: npm run buildinputs:command: 'custom'customCommand: 'run build'- task: Npm@1displayName: 'Run Unit Test'inputs:command: customverbose: falsecustomCommand: 'run test-headless'continueOnError: true- task: PublishTestResults@2displayName: 'Publish Test Results'inputs:testResultsFormat: 'JUnit'testResultsFiles: '$(Build.SourcesDirectory)/TESTS-*.xml'

5. 完整yaml代碼

?完整yaml文件如下:

# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascripttrigger:- "main"- "rc/*"- "hf/*"#----- Pipeline run description
name: $(Build.SourceBranchName).UI.$(Date:yyyyMMdd)$(Rev:.r)variables:ROOT_PATH: refs/headssystem.debug: 'true'COMPONENT_PROJ: 'corpro-ui'ShouldPublish: $[or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), contains(variables['Build.SourceBranch'], 'refs/heads/rc'), contains(variables['Build.SourceBranch'], 'refs/heads/hf'))]
jobs:#-------------------------------------#     Code Format & Linting Check#-------------------------------------# - job: format_linting_check#   displayName: Code Format & Linting Check# #  condition: eq(variables['Build.Reason'], 'PullRequest')#   steps:#     - task: Npm@1#       displayName: npm install#       inputs:#         command: custom#         customCommand: 'install -force'#     - task: Npm@1#       displayName: 'Perform prettier format check'#       inputs:#         command: custom#         verbose: false#         customCommand: 'run prettier'#     - task: Npm@1#       displayName: 'Perform eslint linting check'#       inputs:#         command: custom#         verbose: false#         customCommand: 'run lint'#-----------------------#     Veracode Scan#------------------------ job: veracode_scandisplayName: Veracode Scan#dependsOn: format_linting_check#condition: and(not(failed()), ne(variables['skip.veracode.scan'], 'true'))condition: ne(variables['skip.veracode.scan'], 'true')#----- Job variablesvariables:scanFileName: $(COMPONENT_PROJ)_scanSandbox_Name: a360-corpro-uisteps:- task: CopyFiles@2displayName: Stage codeinputs:SourceFolder: '$(Build.SourcesDirectory)'Contents: |src/**TargetFolder: '$(Build.ArtifactStagingDirectory)'CleanTargetFolder: trueOverWrite: true- task: ArchiveFiles@2displayName: Compress code (zip)inputs:rootFolderOrFile: "$(Build.ArtifactStagingDirectory)"includeRootFolder: truearchiveType: "zip"archiveFile: "$(Build.ArtifactStagingDirectory)/$(scanFileName).zip"replaceExistingArchive: true- task: Bash@3displayName: List zip file and contentsinputs:targetType: "inline"script: |cd $(Build.ArtifactStagingDirectory)ls -altrR- task: PowerShell@2displayName: 'Veracode - check for sandbox'condition: ne(variables['skip.veracode.scan'], 'true')inputs:targetType: 'inline'script: |if ("${env:BUILD_SOURCEBRANCH}" -ne "$(ROOT_PATH)/main"){Write-Host "Set to sandbox Veracode scanning"Write-Host "##vso[task.setvariable variable=scanTosandbox;]true"Write-Host "##vso[task.setvariable variable=sboxName]"$(Build.DefinitionName)}else{Write-Host "Set to actual Veracode scanning"Write-Host "##vso[task.setvariable variable=scanTosandbox]false"Write-Host "##vso[task.setvariable variable=sboxName]"}- task: Veracode@3displayName: Request veracode scaninputs:ConnectionDetailsSelection: "Service Connection"AnalysisService: "Veracode-azdoagency"veracodeAppProfile: "$(system.teamProject)"version: "$(build.buildNumber)"filepath: "$(Build.ArtifactStagingDirectory)/$(scanFileName).zip"#sandboxName: '$(sboxName)'sandboxName: "a360-corpro-ui"createSandBox: $(scanTosandbox)maximumWaitTime: "60"#------------------------------#     Build & Publish#------------------------------- job: build_publishpool: Build.PooldisplayName: Build & PublishdependsOn: veracode_scancondition: and(succeeded(), eq(variables.ShouldPublish, true))steps:- task: NodeTool@0inputs:versionSpec: '20.x'displayName: 'Install node.js'- task: Npm@1displayName: npm installinputs:command: customcustomCommand: 'install -force'- task: Npm@1displayName: npm run buildinputs:command: 'custom'customCommand: 'run build'- task: Npm@1displayName: 'Run Unit Test'inputs:command: customverbose: falsecustomCommand: 'run test-headless'continueOnError: true- task: PublishTestResults@2displayName: 'Publish Test Results'inputs:testResultsFormat: 'JUnit'testResultsFiles: '$(Build.SourcesDirectory)/TESTS-*.xml'- task: PublishCodeCoverageResults@1displayName: 'Publish code coverage'inputs:codeCoverageTool: 'Cobertura'summaryFileLocation: '$(Build.SourcesDirectory)/coverage/**/*.xml'# Copy files from build agent to container- task: CopyFiles@2displayName: 'Copy Files'inputs:SourceFolder: '$(Build.SourcesDirectory)/dist'Contents: '**'TargetFolder: '$(Build.ArtifactStagingDirectory)'#Publish container in the pipeline- task: PublishPipelineArtifact@1displayName: 'Publish UI Artifacts'inputs:targetPath: '$(Build.ArtifactStagingDirectory)'artifactName: 'drop'publishLocation: pipeline

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79644.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79644.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79644.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python Day23 學習

繼續SHAP圖繪制的學習 1. SHAP特征重要性條形圖 特征重要性條形圖(Feature Importance Bar Plot)是 SHAP 提供的一種全局解釋工具,用于展示模型中各個特征對預測結果的重要性。以下是詳細解釋: 圖的含義 - 橫軸:表示…

.NET 8 + Angular WebSocket 高并發性能優化

.NET 8 Angular WebSocket 高并發性能優化。 .NET 8 WebSocket 高并發性能優化 WebSocket 是一種全雙工通信協議,允許客戶端和服務端之間保持持久連接。在高并發場景下,優化 WebSocket 的性能至關重要。以下是針對 .NET 8 中 WebSocket 高并發性能優化…

Ubuntu 22.04.5 LTS 基于 kubesphere 安裝 cube studio

Ubuntu 22.04.5 LTS 基于 kubesphere 安裝 cube studio 前置條件 已經成功安裝 kubesphere v4.3.1 參考教程: https://github.com/data-infra/cube-studio/wiki/%E5%9C%A8-kubesphere-%E4%B8%8A%E6%90%AD%E5%BB%BA-cube-studio 1. 安裝基礎依賴 # ubuntu安裝基礎依賴 apt insta…

centos 7 安裝 java 運行環境

centos 7 安裝 java 運行環境 java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)java -version java version "1.8.0_144" Java(TM) …

Linux系統管理與編程20:Apache

蘭生幽谷,不為莫服而不芳; 君子行義,不為莫知而止休。 做好網絡和yum配置,用前面dns規劃的www的IP進行。 #!/bin/bash #----------------------------------------------------------- # File Name: myWeb.sh # Version: 1.0 # …

.NET 在鴻蒙系統上的適配現狀

目錄 .NET 在鴻蒙系統上的適配現狀 鴻蒙系統對虛擬機的限制與.NET的適配挑戰 NativeAOT 在鴻蒙系統中的適配原理與實現方式 已知問題與解決方案:鴻蒙系統中的 syscall 限制 鴻蒙系統適配中的技術難點與解決方案 跨平臺編譯的挑戰與應對策略 依賴庫管理與兼容…

kotlin JvmName注解的作用和用途

1. JvmName 注解的作用 JvmName 是 Kotlin 提供的一個注解,用于在編譯為 Java 字節碼時自定義生成的類名或方法名。 作用對象: 文件級別(整個 .kt 文件)函數、屬性、類等成員 主要用途: 控制 Kotlin 編譯后生成的 JV…

樹莓派4 yolo 11l.pt性能優化后的版本

樹莓派4 使用 Picamera2 拍攝圖像,然后通過 YOLO11l.pt 進行目標檢測,并在實時視頻流中顯示結果。但當前的代碼在運行時可能會比較卡頓,主要原因包括: picam2.capture_array() 是一個較慢的操作;YOLO 推理可能耗時較長…

Docker私有倉庫實戰:官方registry鏡像實戰應用

抱歉抱歉,離職后反而更忙了,拖了好久,從4月拖到現在,在學習企業級方案Harbor之前,我們先學習下官方方案registry,話不多說,詳情見下文。 注意:下文省略了基本認證 TLS加密&#xff…

MySQL 安全架構:從滲透測試到合規審計

MySQL 安全架構:從滲透測試到合規審計 一、數據庫安全的時代挑戰與核心需求 在數據成為企業核心資產的今天,MySQL 面臨的安全威脅日益復雜。據統計,2024 年全球數據庫泄露事件中,關系型數據庫占比高達 68%,其中 MySQ…

【基礎復習筆記】計算機視覺

目錄 一、計算機視覺基礎 1. 卷積神經網絡原理 2. 目標檢測系列 二、算法與模型實現 1. 在PyTorch/TensorFlow中實現自定義損失函數或網絡層的步驟是什么? 2. 如何設計一個輕量級模型用于移動端的人臉識別? 3. 描述使用過的一種注意力機制&#…

Django 項目的 models 目錄中,__init__.py 文件的作用

在 Django 項目的models/init.py文件中,這些導入語句的主要作用是將各個模型類從不同的模塊中導入到models包的命名空間中。這樣做有以下幾個目的: 簡化導入路徑 當你需要在項目的其他地方使用這些模型時,可以直接從models包導入&#xff0c…

實現一個簡單的 TCP 客戶端/服務器

注意: TCP 三次握手建立連接建立連接后,TCP 提供全雙工的通信服務,也就是在同一個連接中,通信雙方 可以在同一時刻同時寫數據,相對的概念叫做半雙工,同一個連接的同一時刻,只能由一方來寫數據T…

專業課復習筆記 9

前言 學爽了。 為什么哈希函數的空間復雜度是 O(N) 我們實際使用的電話號碼的數目是 N &#xff0c;理論上至多有 R 個電話號碼&#xff0c;桶數組 bucket array 的容量是 M &#xff0c;滿足條件 N < M < < R N<M<<R N<M<<R&#xff0c;因為動…

【論文閱讀27】-TCN–BiLSTM -滑坡預測

《A Landslide Displacement Prediction Model Based on the ICEEMDAN Method and the TCN–BiLSTM Combined Neural Network》 發表于 Water 期刊&#xff0c;2023年。 &#x1f4cc; 主要內容概述 這篇論文提出了一種滑坡位移預測模型&#xff0c;結合了&#xff1a; ICEEM…

8b10b編解碼仿真

一、基本概念 8B/10B編碼&#xff08;8-bit to 10-bit encoding&#xff09;是一種將8位數據&#xff08;包括數據字符和控制字符&#xff09;轉換為10位符號&#xff08;Symbol&#xff09;的編碼技術&#xff0c;由IBM工程師Al Widmer和Peter Franaszek于1983年提出。其核心思…

23龍信服務器wp

中規中矩的一套服務器&#xff0c;比較簡單 1.服務器系統的版本號是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 2.網站數據庫的版本號是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 3.寶塔面板的“超時”時間是___分鐘。&#xff08;格式&#xff1a;…

Redis 存儲原理與數據模型(三)

目錄 存儲結構 存儲轉換 數據組織 hash 沖突 負載因子 擴容 縮容 漸進式rehash Redis 線程模型 單線程命令處理機制 為什么Redis 命令的單線程快 機制 優化 柔性數組 Redis reactor_io 多線程網絡模型 存儲結構 key-value鍵值對通過 hash 的方式存儲到數組中value 主要…

langchain4j中使用milvus向量數據庫做RAG增加索引

安裝milvus向量數據庫 官方網址 https://milvus.io/zh 使用docker安裝milvus mkdir -p /data/docker/milvus cd /data/docker/milvus wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh#在docker中啟動milvus sh standalone_emb…

UE5.3 C++ 房屋管理系統(一)

一.框架思路 1.如何加載。房屋管理&#xff0c;既然管理。就存在動態加載&#xff0c;和靜態加載的考慮。如果是靜態加載&#xff0c;就是在編輯器情況下放置&#xff0c;但這樣方便了擺放&#xff0c;但管理就需要在開始是將所有的房屋找到加到管理者里。你無法決定拖入場景的…