Azure DevOps
是由微軟開(kāi)發(fā)的服務(wù)平臺(tái),它提供了多種工具,可用于更好地進(jìn)行團(tuán)隊(duì)協(xié)作。它還具有用于自動(dòng)構(gòu)建過(guò)程,測(cè)試,版本控制和程序包管理的工具
Azure DevOps
提供了5
個(gè)主要模塊
Azure Boards:敏捷工具
Azure Repos:無(wú)限的、云托管的私人和公共Git
庫(kù)
Azure Pipelines:構(gòu)建流水線(xiàn)
Azure Test Plans:測(cè)試工具
Azure Artifacts:制品包存檔
除此之外,在擴(kuò)展市場(chǎng)還有超過(guò)1,000
個(gè)應(yīng)用和工具可供選擇,這點(diǎn)和自家產(chǎn)品VS Code
一樣,有著非常強(qiáng)大的插件生態(tài)
主要步驟如下
訪(fǎng)問(wèn)dev.azure.com
點(diǎn)擊“免費(fèi)開(kāi)始使用”
使用Microsoft
帳戶(hù)或Github
帳戶(hù)登錄(從2018
年的某一天起,Github
也是微軟自家的了)
創(chuàng)建一個(gè)organization
(組織)
創(chuàng)建一個(gè)project
(項(xiàng)目)
依次點(diǎn)擊User settings
—> Security
—> SSH Public Keys
—> New key
,輸入本地的git ssh
公鑰
提交測(cè)試代碼,從github
克隆并手動(dòng)推送到到azure devops repo
上
當(dāng)然,也可以直接導(dǎo)入github
項(xiàng)目到azure devops
界面,這里記錄的是提交代碼過(guò)程
? 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)建第一個(gè)pipeline
管道
登錄到Azure DevOps
組織,并導(dǎo)航到項(xiàng)目
轉(zhuǎn)到pipeline
,然后選擇"新建Create Pipeline
選擇Azure Repos Git
作為源代碼位置,進(jìn)一步選擇剛才創(chuàng)建的test-project
這個(gè)倉(cāng)庫(kù)
配置項(xiàng)目流水線(xiàn)類(lèi)型Configure your pipeline
,這里識(shí)別出了是java
庫(kù),可選擇的類(lèi)型有四種
Maven 類(lèi)型
Maven 類(lèi)型并部署到 azure cloud 上
自定義最小化 pipeline
選擇現(xiàn)有的 Azure Pipelines YAML 文件
由于倉(cāng)庫(kù)中沒(méi)有pipeline
文件,這里選擇自動(dòng)生成一個(gè)pipeline
文件
自動(dòng)生成的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)建日志
此時(shí)是構(gòu)建失敗的,也可以到控制臺(tái)中查看構(gòu)建錯(cuò)誤提示
從提示可以看出構(gòu)建失敗,在于使用Azure Pipelines
生成代碼或部署,需要至少一個(gè)代理agent
,真正運(yùn)行構(gòu)建任務(wù)的是代理agent
,這里并沒(méi)有購(gòu)買(mǎi)或授予任何托管用于運(yùn)行pipeline
任務(wù)的agent
,可以按照提示的鏈接申請(qǐng)免費(fèi)的 Agent[1]
此代理可以綁定微軟云代理,也可以綁定自托管的代理(Linux
、Windows
、macOS
)
申請(qǐng)后過(guò)幾個(gè)小時(shí)就可以了,再去修改代碼觸發(fā)運(yùn)行或者手動(dòng)運(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
一樣,自身集成了代碼庫(kù)管理和devops
流水線(xiàn)功能,其運(yùn)行任務(wù)的節(jié)點(diǎn)類(lèi)似gitlab runner
,是商業(yè)化devops
產(chǎn)品的一大選擇
最重要的是,azure devops Pipelines
一個(gè)月有1800
分鐘的免費(fèi)額度,這個(gè)免費(fèi)并不是付費(fèi)才能“解鎖更多姿勢(shì)”的那種,足夠良心
從個(gè)人使用來(lái)看,界面足夠簡(jiǎn)約好用
所以綜上,如果是想白嫖使用商業(yè)的devops
產(chǎn)品,azure devops
可以首選
azure pipeline
的語(yǔ)法和gitlab ci
語(yǔ)法也非常類(lèi)似,后面再提及了
See you ~
[1]
申請(qǐng)免費(fèi)的Agent: https://aka.ms/azpipelines-parallelism-request
[2]
https://docs.microsoft.com/zh-cn/azure/devops/?view=azure-devops