Azure DevOps
是由微軟開發(fā)的服務(wù)平臺,它提供了多種工具,可用于更好地進(jìn)行團(tuán)隊(duì)協(xié)作。它還具有用于自動構(gòu)建過程,測試,版本控制和程序包管理的工具
Azure DevOps
提供了5
個主要模塊
Azure Boards:敏捷工具
Azure Repos:無限的、云托管的私人和公共Git
庫
Azure Pipelines:構(gòu)建流水線
Azure Test Plans:測試工具
Azure Artifacts:制品包存檔
除此之外,在擴(kuò)展市場還有超過1,000
個應(yīng)用和工具可供選擇,這點(diǎn)和自家產(chǎn)品VS Code
一樣,有著非常強(qiáng)大的插件生態(tài)
主要步驟如下
訪問dev.azure.com
點(diǎn)擊“免費(fèi)開始使用”
使用Microsoft
帳戶或Github
帳戶登錄(從2018
年的某一天起,Github
也是微軟自家的了)
創(chuàng)建一個organization
(組織)
創(chuàng)建一個project
(項(xiàng)目)
依次點(diǎn)擊User settings
—> Security
—> SSH Public Keys
—> New key
,輸入本地的git ssh
公鑰
提交測試代碼,從github
克隆并手動推送到到azure devops repo
上
當(dāng)然,也可以直接導(dǎo)入github
項(xiàng)目到azure devops
界面,這里記錄的是提交代碼過程
? git clone https://github.com/MicrosoftDocs/pipelines-java && cd pipelines-java
Cloning into 'pipelines-java'...
remote: Enumerating objects: 107, done.
remote: Total 107 (delta 0), reused 0 (delta 0), pack-reused 107
Receiving objects: 100% (107/107), 73.86 KiB | 134.00 KiB/s, done.
Resolving deltas: 100% (38/38), done.
? git:(master) git remote add azure git@ssh.dev.azure.com:v3/ssgeek/test-project/test-project
? git:(master) git push -u azure --all
創(chuàng)建第一個pipeline
管道
登錄到Azure DevOps
組織,并導(dǎo)航到項(xiàng)目
轉(zhuǎn)到pipeline
,然后選擇"新建Create Pipeline
選擇Azure Repos Git
作為源代碼位置,進(jìn)一步選擇剛才創(chuàng)建的test-project
這個倉庫
配置項(xiàng)目流水線類型Configure your pipeline
,這里識別出了是java
庫,可選擇的類型有四種
Maven 類型
Maven 類型并部署到 azure cloud 上
自定義最小化 pipeline
選擇現(xiàn)有的 Azure Pipelines YAML 文件
由于倉庫中沒有pipeline
文件,這里選擇自動生成一個pipeline
文件
自動生成的pipeline
文件內(nèi)容如下
# Maven
# Build your Java project and run tests with Apache Maven.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/java
trigger:
- master
pool:
vmImage: ubuntu-latest
steps:
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.8'
jdkArchitectureOption: 'x64'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
點(diǎn)擊Save and run
查看構(gòu)建日志
此時是構(gòu)建失敗的,也可以到控制臺中查看構(gòu)建錯誤提示
從提示可以看出構(gòu)建失敗,在于使用Azure Pipelines
生成代碼或部署,需要至少一個代理agent
,真正運(yùn)行構(gòu)建任務(wù)的是代理agent
,這里并沒有購買或授予任何托管用于運(yùn)行pipeline
任務(wù)的agent
,可以按照提示的鏈接申請免費(fèi)的 Agent[1]
此代理可以綁定微軟云代理,也可以綁定自托管的代理(Linux
、Windows
、macOS
)
申請后過幾個小時就可以了,再去修改代碼觸發(fā)運(yùn)行或者手動運(yùn)行pipeline
,成功運(yùn)行
構(gòu)建流程運(yùn)行完成后,就涉及到服務(wù)的部署了
在azure devops
中,服務(wù)部署支持部署到VM
和kubernetes
環(huán)境
配置目標(biāo)環(huán)境的方法,選擇Pipelines
—> Environments
—> Create environments
以k8s
資源為例,直接配置連接azure cloud
的k8s
,或者用service account
進(jìn)行配置通用的k8s
集群
具體的部署模式可以選擇yaml
部署、helm
部署、以及azure devops
支持的Canary
灰度部署等等
azure devops
的模式和gitlab ci
一樣,自身集成了代碼庫管理和devops
流水線功能,其運(yùn)行任務(wù)的節(jié)點(diǎn)類似gitlab runner
,是商業(yè)化devops
產(chǎn)品的一大選擇
最重要的是,azure devops Pipelines
一個月有1800
分鐘的免費(fèi)額度,這個免費(fèi)并不是付費(fèi)才能“解鎖更多姿勢”的那種,足夠良心
從個人使用來看,界面足夠簡約好用
所以綜上,如果是想白嫖使用商業(yè)的devops
產(chǎn)品,azure devops
可以首選
azure pipeline
的語法和gitlab ci
語法也非常類似,后面再提及了
See you ~
[1]
申請免費(fèi)的Agent: https://aka.ms/azpipelines-parallelism-request
[2]
https://docs.microsoft.com/zh-cn/azure/devops/?view=azure-devops