Skip to content

Commit ebdc9b5

Browse files
author
Christopher-Marcel Böddecker
committed
feat(templates): add CI and CD templates for Azure Pipelines
0 parents  commit ebdc9b5

File tree

8 files changed

+215
-0
lines changed

8 files changed

+215
-0
lines changed

.devops/azure-pipelines.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
variables:
2+
- group: Build
3+
- group: Publish
4+
- group: Bot as git and GitHub user
5+
6+
jobs:
7+
- job: Job
8+
displayName: CD
9+
pool:
10+
vmImage: vs2017-win2016
11+
steps:
12+
- template: ../templates/steps/cd.yml

.devops/semantic-release.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"branches": [
3+
"+([1-9])?(.{+([1-9]),x}).x",
4+
"latest",
5+
{"name": "prerelease", "prerelease": "prerelease"}
6+
],
7+
"plugins": [
8+
[
9+
"@semantic-release/commit-analyzer", {
10+
"parserOpts": {
11+
"revertPattern": "/^(?:Revert|revert:)\\s\"?([\\s\\S]+?)\"?\\s*This reverts commit (\\w*)\\./"
12+
},
13+
"releaseRules": [
14+
{"breaking": true, "release": "major"},
15+
{"type": "feat", "release": "minor"},
16+
{"revert": true, "release": "patch"},
17+
{"type": "fix", "release": "patch"},
18+
{"type": "refactor", "release": "patch"},
19+
{"type": "docs", "release": "patch"}
20+
]
21+
}
22+
],
23+
[
24+
"@semantic-release/release-notes-generator", {
25+
"parserOpts": {
26+
"revertPattern": "/^(?:Revert|revert:)\\s\"?([\\s\\S]+?)\"?\\s*This reverts commit (\\w*)\\./"
27+
}
28+
}
29+
],
30+
[
31+
"@semantic-release/changelog", {
32+
"changelogTitle": "# Changelog"
33+
}
34+
],
35+
[
36+
"@semantic-release/npm", {
37+
"npmPublish": false,
38+
"tarballDir": "package"
39+
}
40+
],
41+
[
42+
"@semantic-release/git", {
43+
"message": "chore(release): set version to ${nextRelease.version}\n\n${nextRelease.notes}\n\nThis commit is a result of automation, thus CI shouldn't run (***NO_CI***).",
44+
"assets": [
45+
"CHANGELOG.md",
46+
"package.json"
47+
]
48+
}
49+
],
50+
[
51+
"@semantic-release/github", {
52+
"assets": [
53+
{"path": "package/*.tgz"}
54+
]
55+
}
56+
]
57+
]
58+
}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules/
2+
/package/

README.md

Whitespace-only changes.

package.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "io.extendreality.devops",
3+
"displayName": "DevOps",
4+
"description": "A collection of tools to simplify writing public API components in Unity.",
5+
"version": "0.0.0-development",
6+
"homepage": "https://github.com/ExtendRealityLtd/DevOps/",
7+
"bugs": {
8+
"url": "https://github.com/ExtendRealityLtd/DevOps/issues"
9+
},
10+
"repository": "github:ExtendRealityLtd/DevOps",
11+
"license": "MIT",
12+
"author": {
13+
"name": "Extend Reality Ltd",
14+
"email": "[email protected]",
15+
"url": "https://github.com/ExtendRealityLtd"
16+
},
17+
"files": [
18+
"*.md",
19+
"templates"
20+
]
21+
}

templates/jobs/ci+cd.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
parameters:
2+
solution: '**/*.sln'
3+
msBuildPlatform: Any CPU
4+
msBuildConfiguration: Release
5+
unityVersion: ''
6+
7+
jobs:
8+
- job: Job
9+
displayName: CI + CD
10+
pool:
11+
vmImage: vs2017-win2016
12+
steps:
13+
- template: ../steps/ci.yml
14+
parameters:
15+
solution: ${{ parameters.solution }}
16+
msBuildPlatform: ${{ parameters.msBuildPlatform }}
17+
msBuildConfiguration: ${{ parameters.msBuildConfiguration }}
18+
unityVersion: ${{ parameters.unityVersion }}
19+
- template: ../steps/cd.yml

templates/steps/cd.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
steps:
2+
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
3+
- bash: |
4+
mv -f package.json package.json.original
5+
cat > package.json <<- "EOF"
6+
{
7+
"name": "io.extendreality.devops-dependencies",
8+
"displayName": "DevOps-Dependencies",
9+
"description": "A temporary package to install needed dev-dependencies.",
10+
"version": "0.0.0-development",
11+
"homepage": "https://github.com/ExtendRealityLtd/DevOps/",
12+
"bugs": {
13+
"url": "https://github.com/ExtendRealityLtd/DevOps/issues"
14+
},
15+
"repository": "github:ExtendRealityLtd/DevOps",
16+
"license": "MIT",
17+
"author": {
18+
"name": "Extend Reality Ltd",
19+
"email": "[email protected]",
20+
"url": "https://github.com/ExtendRealityLtd"
21+
},
22+
"devDependencies": {
23+
"semantic-release": "^16.0.0-beta.8",
24+
"@semantic-release/commit-analyzer": "^7.0.0-beta.1",
25+
"@semantic-release/release-notes-generator": "^7.1.4",
26+
"@semantic-release/changelog": "^3.0.1",
27+
"@semantic-release/npm": "^5.2.0-beta.3",
28+
"@semantic-release/git": "^7.1.0-beta.1",
29+
"@semantic-release/github": "^5.3.0-beta.3"
30+
}
31+
}
32+
EOF
33+
displayName: Replace package.json temporarily for npm dev-dependencies
34+
- task: Npm@1
35+
displayName: Install npm package dev dependencies
36+
inputs:
37+
command: custom
38+
verbose: false
39+
customCommand: install --only=dev
40+
customRegistry: useFeed
41+
customFeed: $(Azure.FeedId)
42+
- bash: mv -f package.json.original package.json
43+
displayName: Bring back original package.json
44+
- powershell: npx semantic-release --extends "./.devops/semantic-release.json" --debug
45+
displayName: Run semantic-release
46+
env:
47+
GITHUB_TOKEN: $(GITHUB_TOKEN)

templates/steps/ci.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
parameters:
2+
solution: '**/*.sln'
3+
msBuildPlatform: Any CPU
4+
msBuildConfiguration: Release
5+
unityVersion: ''
6+
7+
steps:
8+
- powershell: |
9+
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
10+
Install-Module UnitySetup -Scope CurrentUser -Force
11+
displayName: Install Unity Setup Powershell Module
12+
failOnStderr: true
13+
- powershell: |
14+
$version = "${{ parameters.unityVersion }}"
15+
$setupInstance = Get-UnitySetupInstance | Select-UnitySetupInstance -Latest
16+
17+
If ($version -eq "")
18+
{
19+
If (!$setupInstance)
20+
{
21+
Write-Error "No Unity version specified and no Unity installation found."
22+
Exit 1
23+
}
24+
25+
Write-Host "Using already installed Unity version '$($setupInstance.Version)'."
26+
}
27+
ElseIf ($setupInstance.Version.ToString() -ne $version)
28+
{
29+
Write-Host "Installing Unity version '$(Unity.Version)'."
30+
Install-UnitySetupInstance -Installers (Find-UnitySetupInstaller -Version $version -Components "Windows")
31+
$setupInstance = Get-UnitySetupInstance | Select-UnitySetupInstance -Version $version
32+
}
33+
34+
$path = $setupInstance.Path
35+
Write-Host "##vso[task.setvariable variable=Unity.Path]$path"
36+
Write-Host "Using Unity at path '$path'."
37+
displayName: Install/find Unity
38+
failOnStderr: true
39+
- task: NuGetToolInstaller@0
40+
displayName: Use NuGet 4.x
41+
inputs:
42+
versionSpec: '>=4.x'
43+
- task: NuGetCommand@2
44+
displayName: NuGet restore
45+
inputs:
46+
restoreSolution: ${{ parameters.solution }}
47+
vstsFeed: $(Azure.FeedId)
48+
- task: VSBuild@1
49+
displayName: Build solution
50+
inputs:
51+
solution: ${{ parameters.solution }}
52+
platform: ${{ parameters.msBuildPlatform }}
53+
configuration: ${{ parameters.msBuildConfiguration }}
54+
maximumCpuCount: true
55+
msbuildArchitecture: x64
56+
msbuildArgs: /p:UnityEditorAssembliesPath="$(Unity.Path)Editor/Data/Managed/"

0 commit comments

Comments
 (0)