Skip to content

Commit

Permalink
Improve our current CI (#624)
Browse files Browse the repository at this point in the history
* Change CI build into multiple stages

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Run unit tests without building

* Resharper

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Use build scripts

* Provide transparency in result

* Change CI build into multiple stages

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Run unit tests without building

* Resharper

Signed-off-by: Tom Kerkhove <kerkhove.tom@gmail.com>

* Use build scripts

* Provide transparency in result

* Tweak

* Lower correct stuff

* Simplify transformation
  • Loading branch information
tomkerkhove authored Jul 19, 2019
1 parent a3152c9 commit d5cf7d1
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 43 deletions.
102 changes: 59 additions & 43 deletions .azure-devops/scraper-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ variables:
Image.Name: 'tomkerkhove/promitor-agent-scraper-ci'
Image.TaggedName: '$(Image.Name):$(Build.BuildNumber)'
stages:
- stage: Codebase
- stage: Build
dependsOn: []
jobs:
- job: Build
displayName: Build, Test & Scan Codebase
displayName: Build Codebase
condition: succeeded()
pool:
vmImage: ubuntu-16.04
Expand All @@ -35,35 +35,67 @@ stages:
inputs:
projects: src/Promitor.sln
arguments: '--configuration release'
- task: DotNetCoreCLI@2
displayName: 'dotnet test'
- task: CopyFiles@2
displayName: 'Copy Build Files'
inputs:
command: test
projects: src/Promitor.Scraper.Tests.Unit/Promitor.Scraper.Tests.Unit.csproj
arguments: '--configuration release'
contents: 'src/**'
targetFolder: '$(Pipeline.Workspace)/build'
- task: PublishPipelineArtifact@0
displayName: 'Publish Build Pipeline Artifact'
inputs:
targetPath: '$(Pipeline.Workspace)/build'
artifactName: Build
- stage: CodeQuality
displayName: Code Quality
dependsOn: []
dependsOn: [Build]
jobs:
- job: RunCodeQuality
displayName: Run Code Quality
condition: succeeded()
pool:
vmImage: windows-2019
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download Build Artifact'
inputs:
artifact: 'Build'
path: '$(Build.SourcesDirectory)'
- task: DotNetCoreInstaller@0
displayName: 'Install .NET SDK'
displayName: 'Import .Net Core Sdk ($(DotNet.Sdk.Version))'
inputs:
version: '$(DotNet.SDK.Version)'
version: '$(DotNet.Sdk.Version)'
- task: DotNetCoreCLI@2
displayName: 'dotnet restore'
displayName: 'Restore NuGet Packages'
inputs:
projects: src/Promitor.sln
arguments: '--configuration release'
command: restore
projects: 'src/Promitor.sln'
- task: alanwales.resharper-code-analysis.custom-build-task.ResharperCli@1
displayName: 'Automated code quality checks'
inputs:
SolutionOrProjectPath: src/Promitor.sln
SolutionOrProjectPath: 'src/Promitor.sln'
AdditionalArguments: '/disable-settings-layers:SolutionPersonal --properties:Configuration=$(Build.Configuration)'
env:
MSBuildSDKsPath: '$(Agent.ToolsDirectory)/dncs/$(DotNet.Sdk.Version)/x64/sdk/$(DotNet.Sdk.Version)/Sdks'
- stage: Test
displayName: Run Tests
dependsOn: [Build]
jobs:
- job: RunUnitTests
displayName: Run Unit Tests
condition: succeeded()
pool:
vmImage: ubuntu-16.04
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download Build Artifact'
inputs:
artifact: 'Build'
path: '$(Build.SourcesDirectory)'
- task: DotNetCoreCLI@2
displayName: 'dotnet test'
inputs:
command: test
projects: src/Promitor.Scraper.Tests.Unit/Promitor.Scraper.Tests.Unit.csproj
arguments: '--configuration release --no-build'
- stage: Docker
displayName: Docker Image
dependsOn: []
Expand Down Expand Up @@ -146,36 +178,20 @@ stages:
helm lint promitor-agent-scraper/ --strict
workingDirectory: charts
displayName: 'Lint Helm Chart'
- powershell: |
echo 'Copying Chart folder'
cp promitor-agent-scraper/ $(Helm.Chart.Name)/ -r
echo 'Determining image version'
$imageVersion = "$(Build.BuildNumber)".ToLower()
$replacedTagSection = " tag: $imageVersion"
echo 'Image version is $imageVersion'
echo 'Changing name of chart'
((Get-Content -path $(Helm.Chart.Name)/Chart.yaml -Raw) -replace 'name: promitor-agent-scraper', 'name: $(Helm.Chart.Name)') | Set-Content -Path $(Helm.Chart.Name)/Chart.yaml
echo 'Changing image tag'
((Get-Content -path $(Helm.Chart.Name)/values.yaml -Raw) -replace ' tag: 1.0.0-preview-8', $replacedTagSection) | Set-Content -Path $(Helm.Chart.Name)/values.yaml
echo 'Changing repo name'
((Get-Content -path $(Helm.Chart.Name)/values.yaml -Raw) -replace ' repository: tomkerkhove/promitor-agent-scraper', ' repository: $(Image.Name)') | Set-Content -Path $(Helm.Chart.Name)/values.yaml
echo 'Change name of chart in documentation samples'
((Get-Content -path $(Helm.Chart.Name)/README.md -Raw) -replace 'promitor-agent-scraper','promitor-agent-scraper-ci') | Set-Content -Path $(Helm.Chart.Name)/README.md
workingDirectory: charts
- task: PowerShell@2
displayName: 'Transform Helm Chart in CI Chart'
- powershell: |
echo 'Creating output folder'
mkdir output/
echo 'Packaging chart'
helm package $(Helm.Chart.Name)/ --app-version $(Helm.Chart.Version) --version $(Helm.Chart.Version) --destination output/
workingDirectory: charts
inputs:
targetType: filePath
filePath: ./build/helm/CI/Transform-Chart.ps1
arguments: '-chartName "$(Helm.Chart.Name)" -imageName "$(Image.Name)" -imageTag "$(Build.BuildNumber)"'
workingDirectory: 'charts'
- task: PowerShell@2
displayName: 'Package Helm Chart'
inputs:
targetType: filePath
filePath: ./build/helm/CI/Package-Chart.ps1
arguments: '-chartName "$(Helm.Chart.Name)" -chartVersion "$(Helm.Chart.Version)"'
workingDirectory: 'charts'
- task: AzureCLI@1
displayName: 'Push Helm Chart to Azure Container Registry'
inputs:
Expand Down
12 changes: 12 additions & 0 deletions build/helm/CI/Package-Chart.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Param(
[String]
[Parameter(Mandatory = $true)] $chartName = $(throw "Chart name is required"),
[String]
[Parameter(Mandatory = $true)] $chartVersion = $(throw "Version of the chart is required")
)

echo 'Creating output folder'
mkdir output/

echo 'Packaging chart'
helm package $chartName/ --app-version $chartVersion --version $chartVersion --destination output/
32 changes: 32 additions & 0 deletions build/helm/CI/Transform-Chart.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
Param(
[String]
[Parameter(Mandatory = $true)] $chartName = $(throw "Chart name is required"),
[String]
[Parameter(Mandatory = $true)] $imageName = $(throw "Image name is required"),
[String]
[Parameter(Mandatory = $true)] $imageTag = $(throw "Image tag is required")
)

echo 'Copying Chart folder'
cp promitor-agent-scraper/ $chartName/ -r

echo 'Determining image version'
$imageVersion = "$imageTag".ToLower()
echo 'Image version is $imageVersion'

echo 'Changing name of chart'
((Get-Content -path $chartName/Chart.yaml -Raw) -replace 'promitor-agent-scraper', $chartName) | Set-Content -Path $chartName/Chart.yaml

echo 'Changing image tag'
((Get-Content -path $chartName/values.yaml -Raw) -replace '1.0.0-preview-8', $imageVersion) | Set-Content -Path $chartName/values.yaml

echo 'Changing repo name'
((Get-Content -path $chartName/values.yaml -Raw) -replace 'tomkerkhove/promitor-agent-scraper', $imageName) | Set-Content -Path $chartName/values.yaml

echo 'Change name of chart in documentation samples'
((Get-Content -path $chartName/README.md -Raw) -replace 'promitor-agent-scraper', 'promitor-agent-scraper-ci') | Set-Content -Path $chartName/README.md

echo 'Outputting transformed content'
Get-Content -path $chartName/Chart.yaml -Raw
Get-Content -path $chartName/values.yaml -Raw
Get-Content -path $chartName/README.md -Raw

0 comments on commit d5cf7d1

Please sign in to comment.