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 }