DevOps编写一个CI的pipelines
选择trigger哪个git分支
trigger:
branches:
include:
- master
paths:
include:
- RemoteReporting.Web/*
exclude:
- README.md
- branch: 分支名
- include: 哪些文件改动会触发CI
- exclude: 哪些文件改动不会触发CI
初始化环境
stages:
- stage: 'Front'
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: Build
displayName: 'build Web Assets'
- stages: 环境的集合
- stage: 什么环境,前后端的stage可以写在一起
- pool: 镜像环境
- jobs: 当前stage执行哪些任务
- job: 具体的job,由steps组成
选择环境,执行命令
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
ls
cd RemoteReporting.Web
npm i
displayName: 'install node modules'
- script: |
ls
cd RemoteReporting.Web
cd scripts
node ./release.js --env=Test
displayName: 'prepare release ENV'
- script: |
ls
cd RemoteReporting.Web
node --max-old-space-size=4096 node_modules/@angular/cli/bin/ng build --prod --build-optimizer --base-href=/NGSS/
displayName: 'build community web Assets'
- steps由task和script组成
- script是执行的命令
归档build好的文件,并保存下来
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)/RemoteReporting.Web/dist/NGSS_Web/'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- rootFolderOrFile: build完文件的路径,$(System.DefaultWorkingDirectory)是DevOps根目录
- archiveFile: 将打包好的artifact存放的路径
发布artifact
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
ArtifactName: 'drop'
publishLocation: 'Container'
完整示例
trigger:
branches:
include:
- develop
paths:
include:
- RemoteReporting.Web/*
exclude:
- README.md
stages:
- stage: 'Front'
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: Build
displayName: 'build Web Assets'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
ls
cd RemoteReporting.Web
npm i
displayName: 'install node modules'
- script: |
ls
cd RemoteReporting.Web
cd scripts
node ./release.js --env=Test
displayName: 'prepare release ENV'
- script: |
ls
cd RemoteReporting.Web
node --max-old-space-size=4096 node_modules/@angular/cli/bin/ng build --prod --build-optimizer --base-href=/NGSS/
displayName: 'build community web Assets'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)/RemoteReporting.Web/dist/NGSS_Web/'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
ArtifactName: 'drop'
publishLocation: 'Container'