docker/ci/build.ps1 in r10k-3.0.4 vs docker/ci/build.ps1 in r10k-3.1.0
- old
+ new
@@ -17,90 +17,35 @@
# tags required for versioning
git fetch origin 'refs/tags/*:refs/tags/*'
(git describe) -replace '-.*', ''
}
-function Lint-Dockerfile($Path)
+# installs gems for build and test and grabs base images
+function Invoke-ContainerBuildSetup
{
- hadolint --ignore DL3008 --ignore DL3018 --ignore DL4000 --ignore DL4001 $Path
+ Push-Location (Get-CurrentDirectory)
+ bundle install --path '.bundle/gems'
+ bundle exec puppet-docker update-base-images ubuntu:16.04
+ Pop-Location
}
-function Build-Container(
- $Namespace = 'puppet',
- $Version = (Get-ContainerVersion),
- $Vcs_ref = $(git rev-parse HEAD))
+function Build-Container($Name, $Repository = '127.0.0.1', $Version = (Get-ContainerVersion))
{
Push-Location (Join-Path (Get-CurrentDirectory) '..')
-
- $build_date = (Get-Date).ToUniversalTime().ToString('o')
- $docker_args = @(
- '--pull',
- '--build-arg', "vcs_ref=$Vcs_ref",
- '--build-arg', "build_date=$build_date",
- '--build-arg', "version=$Version",
- '--file', "r10k/Dockerfile",
- '--tag', "$Namespace/r10k:$Version"
- )
-
- docker build $docker_args r10k
-
+ bundle exec puppet-docker local-lint $Name
+ bundle exec puppet-docker build $Name --no-cache --repository $Repository --version $Version --no-latest --build-arg namespace=$Repository
Pop-Location
}
-function Invoke-ContainerTest(
- $Namespace = 'puppet',
- $Version = (Get-ContainerVersion))
+function Invoke-ContainerTest($Name, $Repository = '127.0.0.1', $Version = (Get-ContainerVersion))
{
Push-Location (Join-Path (Get-CurrentDirectory) '..')
-
- bundle install --path .bundle/gems
- $ENV:PUPPET_TEST_DOCKER_IMAGE = "$Namespace/r10k:$Version"
- bundle exec rspec r10k/spec
-
+ bundle exec puppet-docker spec $Name --image "$Repository/${Name}:$Version"
Pop-Location
}
-# removes temporary layers / containers / images used during builds
-# removes $Namespace/$Name images > 14 days old by default
-function Clear-ContainerBuilds(
- $Namespace = 'puppet',
- $Name,
- $OlderThan = [DateTime]::Now.Subtract([TimeSpan]::FromDays(14))
-)
+# removes any temporary containers / images used during builds
+function Clear-ContainerBuilds
{
- Write-Output 'Pruning Containers'
docker container prune --force
-
- # this provides example data which ConvertFrom-String infers parsing structure with
- $template = @'
-{Version*:1.2.3} {ID:5b84704c1d01} {[DateTime]Created:2019-02-07 18:24:51} +0000 GMT
-{Version*:latest} {ID:0123456789ab} {[DateTime]Created:2019-01-29 00:05:33} +0000 GMT
-'@
- $output = docker images --filter=reference="$Namespace/${Name}" --format "{{.Tag}} {{.ID}} {{.CreatedAt}}"
- Write-Output @"
-
-Found $Namespace/${Name} images:
-$($output | Out-String)
-
-"@
-
- if ($output -eq $null) { return }
-
- Write-Output "Filtering removal candidates..."
- # docker image prune supports filter until= but not repository like 'puppetlabs/foo'
- # must use label= style filtering which is a bit more inconvenient
- # that output is also not user-friendly!
- # engine doesn't maintain "last used" or "last pulled" metadata, which would be more useful
- # https://github.com/moby/moby/issues/4237
- $output |
- ConvertFrom-String -TemplateContent $template |
- ? { $_.Created -lt $OlderThan } |
- # ensure 'latest' are listed first
- Sort-Object -Property Version -Descending |
- % {
- Write-Output "Removing Old $Namespace/${Name} Image $($_.Version) ($($_.ID)) Created On $($_.Created)"
- docker image rm $_.ID
- }
-
- Write-Output "`nPruning Dangling Images"
docker image prune --filter "dangling=true" --force
}