From 7ca78cb23cf343006b2bf20943740deb2d3f901d Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 12:35:52 +0100 Subject: [PATCH 01/15] Add workflow to publish to Azure Artifacts --- .github/workflows/publish_artifact.yml | 33 ++++++++++++++++++++++++++ build.gradle | 11 +++++++++ 2 files changed, 44 insertions(+) create mode 100644 .github/workflows/publish_artifact.yml diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml new file mode 100644 index 00000000..6d3025be --- /dev/null +++ b/.github/workflows/publish_artifact.yml @@ -0,0 +1,33 @@ +name: Publish Build to Azure Artifacts +on: + push: + tags: + - '*' + +pool: + vmImage: 'ubuntu-latest' + +variables: + artifactVersion: $[replace(variables['Build.SourceBranch'], 'refs/tags/', '')] + +steps: + # Based on existing jitpack.yml using java17 + - task: JavaToolInstaller@0 + inputs: + versionSpec: '17' + jdkArchitectureOption: 'x64' + + - task: AzureKeyVault@2 + displayName: Azure Key Vault + inputs: + azureSubscription: 'DTS-CFTPTL-INTSVC' + KeyVaultName: 'cftptl-intsvc' + SecretsFilter: 'AZURE_DEVOPS_ARTIFACT_USERNAME, AZURE_DEVOPS_ARTIFACT_TOKEN' + + - script: | + ./gradlew clean publish + env: + AZURE_DEVOPS_ARTIFACT_USERNAME: $(AZURE_DEVOPS_ARTIFACT_USERNAME) + AZURE_DEVOPS_ARTIFACT_TOKEN: $(AZURE_DEVOPS_ARTIFACT_TOKEN) + RELEASE_VERSION: $(artifactVersion) + displayName: 'Publish to Azure Artifacts' diff --git a/build.gradle b/build.gradle index a813f854..42f6cba8 100644 --- a/build.gradle +++ b/build.gradle @@ -109,6 +109,17 @@ publishing { version project.version } } + + repositories { + maven { + name = "AzureArtifacts" + url = uri("https://pkgs.dev.azure.com/hmcts/Artifacts/_packaging/hmcts-lib/maven/v1") + credentials { + username = System.getenv("AZURE_DEVOPS_ARTIFACT_USERNAME") + password = System.getenv("AZURE_DEVOPS_ARTIFACT_TOKEN") + } + } + } } dependencies { From 8f26ad25ae9b50b28e6deeca021af28a0adf27a5 Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 12:38:23 +0100 Subject: [PATCH 02/15] Updating trigger --- .github/workflows/publish_artifact.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index 6d3025be..734d9025 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -1,8 +1,7 @@ -name: Publish Build to Azure Artifacts -on: - push: - tags: - - '*' +trigger: + tags: + include: + - '*' pool: vmImage: 'ubuntu-latest' From 5fc0b7d921c0ec0023648c446481e2e861860a71 Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 12:41:18 +0100 Subject: [PATCH 03/15] Test without java insall --- .github/workflows/publish_artifact.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index 734d9025..8eef44a7 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -11,22 +11,23 @@ variables: steps: # Based on existing jitpack.yml using java17 - - task: JavaToolInstaller@0 - inputs: - versionSpec: '17' - jdkArchitectureOption: 'x64' + # - task: JavaToolInstaller@0 + # inputs: + # versionSpec: '17' + # jdkArchitectureOption: 'x64' + # jdkSourceOption: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'DTS-CFTPTL-INTSVC' KeyVaultName: 'cftptl-intsvc' - SecretsFilter: 'AZURE_DEVOPS_ARTIFACT_USERNAME, AZURE_DEVOPS_ARTIFACT_TOKEN' + SecretsFilter: 'AZURE-DEVOPS-ARTIFACT-USERNAME, AZURE-DEVOPS-ARTIFACT-TOKEN' - script: | ./gradlew clean publish env: - AZURE_DEVOPS_ARTIFACT_USERNAME: $(AZURE_DEVOPS_ARTIFACT_USERNAME) - AZURE_DEVOPS_ARTIFACT_TOKEN: $(AZURE_DEVOPS_ARTIFACT_TOKEN) + AZURE_DEVOPS_ARTIFACT_USERNAME: $(AZURE-DEVOPS-ARTIFACT-USERNAME) + AZURE_DEVOPS_ARTIFACT_TOKEN: $(AZURE-DEVOPS-ARTIFACT-TOKEN) RELEASE_VERSION: $(artifactVersion) displayName: 'Publish to Azure Artifacts' From 87df4beb6a1ffc7ad01d84d7a6a5e20e8d89939c Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 12:46:18 +0100 Subject: [PATCH 04/15] Debugging --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 42f6cba8..4bef4175 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,8 @@ plugins { id 'com.github.ben-manes.versions' version '0.52.0' } +def buildDebug = System.getenv("RELEASE_VERSION") +println "Publishing artifact with version: $buildDebug" def buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" allprojects { From 29d857ef543935756dc1c9ad9b417444f045d31a Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 12:51:45 +0100 Subject: [PATCH 05/15] Logic to test from PR --- build.gradle | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 4bef4175..4f08435d 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,17 @@ plugins { id 'com.github.ben-manes.versions' version '0.52.0' } -def buildDebug = System.getenv("RELEASE_VERSION") -println "Publishing artifact with version: $buildDebug" -def buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" +def buildNumber + +if (System.getenv("RELEASE_VERSION")?.contains("merge")) { + // If it's a pull request merge ref, use DEV-SNAPSHOT + def prNumber = System.getenv("RELEASE_VERSION").split("/")[2] + buildNumber = "DEV-SNAPSHOT-PR-${prNumber}" +} else { + // If building based on new tag + def buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" +} + allprojects { group 'com.github.hmcts.java-logging' From d62ccff403dc1d7533014dd0b04491c03d26cdc0 Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 13:41:22 +0100 Subject: [PATCH 06/15] Update var definition --- build.gradle | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 4f08435d..ddbcdf80 100644 --- a/build.gradle +++ b/build.gradle @@ -6,14 +6,16 @@ plugins { def buildNumber if (System.getenv("RELEASE_VERSION")?.contains("merge")) { - // If it's a pull request merge ref, use DEV-SNAPSHOT - def prNumber = System.getenv("RELEASE_VERSION").split("/")[2] - buildNumber = "DEV-SNAPSHOT-PR-${prNumber}" + // If it's a pull request merge ref, use DEV-SNAPSHOT + def prNumber = System.getenv("RELEASE_VERSION").split("/")[2] + buildNumber = "DEV-SNAPSHOT-PR-${prNumber}" } else { // If building based on new tag - def buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" + buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" } +println("Version to be published is ${buildNumber}") + allprojects { group 'com.github.hmcts.java-logging' From 917d2e08321647d1bf3e37cde6b36033c8e1f4ef Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 15:41:34 +0100 Subject: [PATCH 07/15] Update publish_artifact.yml --- .github/workflows/publish_artifact.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index 8eef44a7..fae76dee 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -30,4 +30,4 @@ steps: AZURE_DEVOPS_ARTIFACT_USERNAME: $(AZURE-DEVOPS-ARTIFACT-USERNAME) AZURE_DEVOPS_ARTIFACT_TOKEN: $(AZURE-DEVOPS-ARTIFACT-TOKEN) RELEASE_VERSION: $(artifactVersion) - displayName: 'Publish to Azure Artifacts' + displayName: 'Publish to Azure DevOps Artifacts' From e308fec97b072a0f302d13ef90c3e432e5ed055b Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 15:58:13 +0100 Subject: [PATCH 08/15] Testing updated user --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ddbcdf80..ab7a5215 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ def buildNumber if (System.getenv("RELEASE_VERSION")?.contains("merge")) { // If it's a pull request merge ref, use DEV-SNAPSHOT def prNumber = System.getenv("RELEASE_VERSION").split("/")[2] - buildNumber = "DEV-SNAPSHOT-PR-${prNumber}" + buildNumber = "DEV-SNAPSHOT-PR${prNumber}" } else { // If building based on new tag buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" From d6e35d38333d20d533499a2659878a305a6e540b Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:07:36 +0100 Subject: [PATCH 09/15] Update to not auto trigger on PR, allow idempotent builds --- .github/workflows/publish_artifact.yml | 2 ++ build.gradle | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index fae76dee..36ed97d4 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -3,6 +3,8 @@ trigger: include: - '*' +pr: none + pool: vmImage: 'ubuntu-latest' diff --git a/build.gradle b/build.gradle index ab7a5215..97026c77 100644 --- a/build.gradle +++ b/build.gradle @@ -6,16 +6,17 @@ plugins { def buildNumber if (System.getenv("RELEASE_VERSION")?.contains("merge")) { - // If it's a pull request merge ref, use DEV-SNAPSHOT + // If it's a pull request merge ref, use DEV-SNAPSHOT-PR(timestamp) format def prNumber = System.getenv("RELEASE_VERSION").split("/")[2] - buildNumber = "DEV-SNAPSHOT-PR${prNumber}" + def id = System.currentTimeMillis() + // Need to add a timestamp for dev builds as ADO artifacts are immutable, subsequent PR runs would cause build failure + buildNumber = "DEV-SNAPSHOT-PR${prNumber}-${id}" } else { // If building based on new tag buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" } -println("Version to be published is ${buildNumber}") - +println("Version to be published is: ${buildNumber}") allprojects { group 'com.github.hmcts.java-logging' From e5e36dac82c1b9453ab8dc27b6f22fac64b9e28c Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:22:45 +0100 Subject: [PATCH 10/15] Use central library --- .github/workflows/publish_artifact.yml | 30 ++++++++------------------ 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index 36ed97d4..34756e94 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -11,25 +11,13 @@ pool: variables: artifactVersion: $[replace(variables['Build.SourceBranch'], 'refs/tags/', '')] -steps: - # Based on existing jitpack.yml using java17 - # - task: JavaToolInstaller@0 - # inputs: - # versionSpec: '17' - # jdkArchitectureOption: 'x64' - # jdkSourceOption: - - - task: AzureKeyVault@2 - displayName: Azure Key Vault - inputs: - azureSubscription: 'DTS-CFTPTL-INTSVC' - KeyVaultName: 'cftptl-intsvc' - SecretsFilter: 'AZURE-DEVOPS-ARTIFACT-USERNAME, AZURE-DEVOPS-ARTIFACT-TOKEN' +resources: + repositories: + - repository: cnp-azuredevops-libraries + type: github + ref: refs/heads/azure-artifact-stage + name: hmcts/cnp-azuredevops-libraries + endpoint: 'hmcts (1)' - - script: | - ./gradlew clean publish - env: - AZURE_DEVOPS_ARTIFACT_USERNAME: $(AZURE-DEVOPS-ARTIFACT-USERNAME) - AZURE_DEVOPS_ARTIFACT_TOKEN: $(AZURE-DEVOPS-ARTIFACT-TOKEN) - RELEASE_VERSION: $(artifactVersion) - displayName: 'Publish to Azure DevOps Artifacts' +steps: +- template: steps/publish-ado-artifact.yaml@cnp-azuredevops-libraries \ No newline at end of file From 11c70fbb98c88520222387706cb010b87db554ab Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:24:56 +0100 Subject: [PATCH 11/15] Update inside job --- .github/workflows/publish_artifact.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index 34756e94..e09a4c12 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -19,5 +19,8 @@ resources: name: hmcts/cnp-azuredevops-libraries endpoint: 'hmcts (1)' -steps: -- template: steps/publish-ado-artifact.yaml@cnp-azuredevops-libraries \ No newline at end of file +jobs: + - job: PublishToAzureArtifacts + displayName: 'Publish to Azure Artifacts' + steps: + - template: steps/publish-ado-artifact.yaml@cnp-azuredevops-libraries \ No newline at end of file From eb45a5437d698327b147fc0a63189edbc80963cc Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:25:40 +0100 Subject: [PATCH 12/15] Remove endpoint --- .github/workflows/publish_artifact.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index e09a4c12..b01ab5f8 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -17,7 +17,6 @@ resources: type: github ref: refs/heads/azure-artifact-stage name: hmcts/cnp-azuredevops-libraries - endpoint: 'hmcts (1)' jobs: - job: PublishToAzureArtifacts From 8882983dfeb3d73f627ee13d4a55a5ec61b3619b Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:26:38 +0100 Subject: [PATCH 13/15] Udpate endpoint --- .github/workflows/publish_artifact.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish_artifact.yml b/.github/workflows/publish_artifact.yml index b01ab5f8..a48a5f1f 100644 --- a/.github/workflows/publish_artifact.yml +++ b/.github/workflows/publish_artifact.yml @@ -17,6 +17,7 @@ resources: type: github ref: refs/heads/azure-artifact-stage name: hmcts/cnp-azuredevops-libraries + endpoint: 'hmcts' jobs: - job: PublishToAzureArtifacts From fccdb9a53e1c63c7b3ea89a0f894cb2adb31ac9b Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:31:32 +0100 Subject: [PATCH 14/15] Update build logic --- build.gradle | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 97026c77..9f5485d6 100644 --- a/build.gradle +++ b/build.gradle @@ -5,12 +5,11 @@ plugins { def buildNumber -if (System.getenv("RELEASE_VERSION")?.contains("merge")) { - // If it's a pull request merge ref, use DEV-SNAPSHOT-PR(timestamp) format - def prNumber = System.getenv("RELEASE_VERSION").split("/")[2] +if (System.getenv("BUILD_REASON")?.contains("Manual")) { + def ref = System.getenv("RELEASE_VERSION") def id = System.currentTimeMillis() - // Need to add a timestamp for dev builds as ADO artifacts are immutable, subsequent PR runs would cause build failure - buildNumber = "DEV-SNAPSHOT-PR${prNumber}-${id}" + // Need to add a timestamp for dev builds as ADO artifacts are immutable, subsequent manual runs would cause build failure + buildNumber = "DEV-SNAPSHOT-${ref}-${id}" } else { // If building based on new tag buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT" From 5ae93e7ec9a9126610ded73e7053e87b24add92d Mon Sep 17 00:00:00 2001 From: Rees Pozzi Date: Thu, 17 Apr 2025 16:34:15 +0100 Subject: [PATCH 15/15] Remove branch ref --- build.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 9f5485d6..ca8cd2f9 100644 --- a/build.gradle +++ b/build.gradle @@ -6,10 +6,9 @@ plugins { def buildNumber if (System.getenv("BUILD_REASON")?.contains("Manual")) { - def ref = System.getenv("RELEASE_VERSION") def id = System.currentTimeMillis() // Need to add a timestamp for dev builds as ADO artifacts are immutable, subsequent manual runs would cause build failure - buildNumber = "DEV-SNAPSHOT-${ref}-${id}" + buildNumber = "DEV-SNAPSHOT-${id}" } else { // If building based on new tag buildNumber = System.getenv("RELEASE_VERSION")?.replace("refs/tags/", "") ?: "DEV-SNAPSHOT"