• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 # Implements the equivalent of ci-templates container-ifnot-exists, using
2 # Docker directly as we don't have buildah/podman/skopeo available under
3 # Windows, nor can we execute Docker-in-Docker
4 $registry_uri = $args[0]
5 $registry_username = $args[1]
6 $registry_password = $args[2]
7 $registry_user_image = $args[3]
8 $registry_central_image = $args[4]
9 $build_dockerfile = $args[5]
10 $registry_base_image = $args[6]
11 
12 Set-Location -Path ".\.gitlab-ci\windows"
13 
14 docker --config "windows-docker.conf" login -u "$registry_username" -p "$registry_password" "$registry_uri"
15 if (!$?) {
16   Write-Host "docker login failed to $registry_uri"
17   Exit 1
18 }
19 
20 # if the image already exists, don't rebuild it
21 docker --config "windows-docker.conf" pull "$registry_user_image"
22 if ($?) {
23   Write-Host "User image $registry_user_image already exists; not rebuilding"
24   docker --config "windows-docker.conf" logout "$registry_uri"
25   Exit 0
26 }
27 
28 # if the image already exists upstream, copy it
29 docker --config "windows-docker.conf" pull "$registry_central_image"
30 if ($?) {
31   Write-Host "Copying central image $registry_central_image to user image $registry_user_image"
32   docker --config "windows-docker.conf" tag "$registry_central_image" "$registry_user_image"
33   docker --config "windows-docker.conf" push "$registry_user_image"
34   $pushstatus = $?
35   docker --config "windows-docker.conf" logout "$registry_uri"
36   if (!$pushstatus) {
37     Write-Host "Pushing image to $registry_user_image failed"
38     Exit 1
39   }
40   Exit 0
41 }
42 
43 Write-Host "No image found at $registry_user_image or $registry_central_image; rebuilding"
44 docker --config "windows-docker.conf" build --no-cache -t "$registry_user_image" -f "$build_dockerfile" --build-arg base_image="$registry_base_image" .
45 if (!$?) {
46   Write-Host "Container build failed"
47   docker --config "windows-docker.conf" logout "$registry_uri"
48   Exit 1
49 }
50 Get-Date
51 
52 docker --config "windows-docker.conf" push "$registry_user_image"
53 $pushstatus = $?
54 docker --config "windows-docker.conf" logout "$registry_uri"
55 if (!$pushstatus) {
56   Write-Host "Pushing image to $registry_user_image failed"
57   Exit 1
58 }
59