Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(Windows): add -DryRun option to build.ps1 script #545

Merged
merged 1 commit into from
Oct 29, 2023

Conversation

lemeurherve
Copy link
Member

@lemeurherve lemeurherve commented Oct 26, 2023

This PR adds a DryRun switch argument that can be passed to the Windows build.ps1 script, allowing to run it in dry-run mode.

Testing done

Normal build: https://ci.jenkins.io/job/Packaging/job/docker-agent/job/PR-545/9/

Replayed build on Windows only, with -DryRun activated: https://ci.jenkins.io/job/Packaging/job/docker-agent/job/PR-545/8/console

Replay diff:
--- old/Jenkinsfile
+++ new/Jenkinsfile
@@ -24,7 +24,7 @@
                 axes {
                     axis {
                         name 'IMAGE_TYPE'
-                        values 'linux', 'nanoserver-1809', 'nanoserver-ltsc2019', 'nanoserver-ltsc2022', 'windowsservercore-1809', 'windowsservercore-ltsc2019', 'windowsservercore-ltsc2022'
+                        values 'nanoserver-1809', 'nanoserver-ltsc2019', 'nanoserver-ltsc2022', 'windowsservercore-1809', 'windowsservercore-ltsc2019', 'windowsservercore-ltsc2022'
                     }
                 }
                 stages {
@@ -63,7 +63,7 @@
                                             // If the tests are passing for Linux AMD64, then we can build all the CPU architectures
                                             sh 'docker buildx bake --file docker-bake.hcl linux'
                                         } else {
-                                            powershell '& ./build.ps1 test'
+                                            powershell '& ./build.ps1 -DryRun test'
                                         }
                                     }
                                 }
@@ -75,12 +75,13 @@
                             }
                             stage('Deploy to DockerHub') {
                                 // This stage is the "CD" and should only be run when a tag triggered the build
-                                when {
-                                    buildingTag()
-                                }
+                                // when {
+                                //     buildingTag()
+                                // }
                                 steps {
                                     script {
-                                        def tagItems = env.TAG_NAME.split('-')
+                                        def exampleTagName = '3186.vc3b_7249b_87eb_-1'
+                                        def tagItems = exampleTagName.split('-') // env.TAG_NAME.split('-')
                                         if(tagItems.length == 2) {
                                             def remotingVersion = tagItems[0]
                                             def buildNumber = tagItems[1]
@@ -93,7 +94,7 @@
                                                     ./build.sh -r ${remotingVersion} -b ${buildNumber} -d publish
                                                     """
                                                 } else {
-                                                    powershell "& ./build.ps1 -PushVersions -RemotingVersion $remotingVersion -BuildNumber $buildNumber -DisableEnvProps publish"
+                                                    powershell "& ./build.ps1 -DryRun -PushVersions -RemotingVersion $remotingVersion -BuildNumber $buildNumber -DisableEnvProps publish"
                                                 }
                                             }
                                         }

Outputs

Stage "build and test" calling ./build.ps1 -DryRun test:

= PREPARE: List of jenkins4eval/agent images and tags to be processed:
 {
     "jdk21-nanoserver-ltsc2022":  {
                                       "Tags":  [
                                                    "jdk21-nanoserver-ltsc2022",
                                                    "3186.vc3b_7249b_87eb_-1-jdk21-nanoserver-ltsc2022"
                                                ]
                                   },
     "jdk11-nanoserver-ltsc2022":  {
                                       "Tags":  [
                                                    "jdk11-nanoserver-ltsc2022",
                                                    "3186.vc3b_7249b_87eb_-1-jdk11-nanoserver-ltsc2022"
                                                ]
                                   },
     "jdk17-nanoserver-ltsc2022":  {
                                       "Tags":  [
                                                    "jdk17-nanoserver-ltsc2022",
                                                    "3186.vc3b_7249b_87eb_-1-jdk17-nanoserver-ltsc2022",
                                                    "nanoserver-ltsc2022"
                                                ]
                                   }
 }
 = BUILD: Building all images...
 (dry-run) docker-compose --file=build-windows.yaml build --parallel --pull
 = BUILD: Finished building all image
 = TEST: (dry-run) test harness
 Build finished successfully

Stage "deploy" calling ./build.ps1 -DryRun -RemotingVersion 3186.vc3b_7249b_87eb_ -BuildNumber 1 -DisableEnvProps publish:

= BUILD: Building all images...
 (dry-run) docker-compose --file=build-windows.yaml build --parallel --pull
 = BUILD: Finished building all image
 = PUBLISH: (dry-run) docker tag then publish 'jdk21-nanoserver-ltsc2022 jenkins4eval/agent:jdk21-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk21-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-jdk21-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk21-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-jdk21-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk21-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-3186.vc3b_7249b_87eb_-1-jdk21-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk11-nanoserver-ltsc2022 jenkins4eval/agent:jdk11-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk11-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-jdk11-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk11-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-jdk11-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk11-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-3186.vc3b_7249b_87eb_-1-jdk11-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk17-nanoserver-ltsc2022 jenkins4eval/agent:jdk17-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk17-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-jdk17-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk17-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-jdk17-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk17-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-3186.vc3b_7249b_87eb_-1-jdk17-nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk17-nanoserver-ltsc2022 jenkins4eval/agent:nanoserver-ltsc2022'
 = PUBLISH: (dry-run) docker tag then publish 'jdk17-nanoserver-ltsc2022 jenkins4eval/agent:3186.vc3b_7249b_87eb_-1-nanoserver-ltsc2022'
 Build finished successfully

Note: I'm aware of tags containing a duplicated remoting+build_number in them (3186.vc3b_7249b_87eb_-1-3186.vc3b_7249b_87eb_-1): #546

This PR is a preliminary step which helped me fixing this issue, fixed in #547.

Submitter checklist

Preview Give feedback

@lemeurherve lemeurherve requested a review from a team as a code owner October 26, 2023 08:29
@lemeurherve lemeurherve requested a review from dduportal October 26, 2023 09:58
@dduportal dduportal merged commit 3c099dd into jenkinsci:master Oct 29, 2023
lemeurherve pushed a commit to lemeurherve/docker-agent that referenced this pull request Oct 29, 2023
chore(Windows): add `-DryRun` option to build.ps1 script
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants