From 397efbf2f71d3deca8db3667ef3f287c392c9097 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 20 Feb 2023 14:56:42 -0500 Subject: [PATCH 001/170] chore(dependencies): Autobump korkVersion (#2018) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 70e8c1d211..49cc354039 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.79.0 fiatVersion=1.36.0 -korkVersion=7.165.0 +korkVersion=7.166.0 front50Version=2.27.0 org.gradle.parallel=true spinnakerGradleVersion=8.25.0 From c01d64838569d6a8c651130d0bc1e65de713cc93 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 20 Feb 2023 16:15:30 -0500 Subject: [PATCH 002/170] chore(dependencies): Autobump korkVersion (#2019) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 49cc354039..843418812c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.79.0 fiatVersion=1.36.0 -korkVersion=7.166.0 +korkVersion=7.167.0 front50Version=2.27.0 org.gradle.parallel=true spinnakerGradleVersion=8.25.0 From 511da275da892949a4f613e7abec8ad8c9126e1f Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Fri, 3 Mar 2023 21:21:47 +0530 Subject: [PATCH 003/170] fix(tests): Introduce junit5 vintage engine for running junit4 test cases over junit5 in halyard (#2022) Spring boot 2.4.x removed JUnit5 vintage engine from spring-boot-starter-test. [https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes#junit-5s-vintage-engine-removed-from-spring-boot-starter-test] It is required for executing junit4 based test cases in halyard. So, introducing junit-vintage-engine dependency in build.gradle, using testRuntimeOnly() as suggested in section 3.1 of https://junit.org/junit5/docs/5.6.2/user-guide/index.pdf After applying this fix, coverage increased from 54 to 227 test case executions. --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index be4aef8139..78aa5d7076 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,7 @@ subprojects { } minHeapSize = "512m" maxHeapSize = "512m" + useJUnitPlatform() } if ([korkVersion, fiatVersion, clouddriverVersion, front50Version].any { it.endsWith("-SNAPSHOT") }) { @@ -52,6 +53,7 @@ subprojects { annotationProcessor "org.projectlombok:lombok" testAnnotationProcessor platform("io.spinnaker.kork:kork-bom:$korkVersion") testAnnotationProcessor "org.projectlombok:lombok" + testRuntimeOnly "org.junit.vintage:junit-vintage-engine" } } From 4ece15a55363f1d9304ff9383b2d4918020d3ef0 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 13 Mar 2023 18:07:18 -0400 Subject: [PATCH 004/170] chore(dependencies): Autobump korkVersion (#2024) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 843418812c..c006d8ce83 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.79.0 fiatVersion=1.36.0 -korkVersion=7.167.0 +korkVersion=7.168.0 front50Version=2.27.0 org.gradle.parallel=true spinnakerGradleVersion=8.25.0 From e5595e5ddf7586a4c4adb3cd492dbf85acab4926 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 17 Mar 2023 19:15:40 -0400 Subject: [PATCH 005/170] chore(dependencies): Autobump korkVersion (#2025) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c006d8ce83..38db09c055 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.79.0 fiatVersion=1.36.0 -korkVersion=7.168.0 +korkVersion=7.169.0 front50Version=2.27.0 org.gradle.parallel=true spinnakerGradleVersion=8.25.0 From 73de70bc94d2f8148674418fecc87f0b886030a6 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 24 Mar 2023 19:12:37 -0400 Subject: [PATCH 006/170] chore(dependencies): Autobump fiatVersion (#2026) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 38db09c055..0b32bd2591 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ clouddriverVersion=5.79.0 -fiatVersion=1.36.0 +fiatVersion=1.37.0 korkVersion=7.169.0 front50Version=2.27.0 org.gradle.parallel=true From b81c600b8bb8fee4348fee5120cf0c3ffe1b998a Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 24 Mar 2023 22:27:01 -0400 Subject: [PATCH 007/170] chore(dependencies): Autobump front50Version (#2027) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0b32bd2591..9f733f3add 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ clouddriverVersion=5.79.0 fiatVersion=1.37.0 korkVersion=7.169.0 -front50Version=2.27.0 +front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.25.0 targetJava11=true From ae222e65cbe22c54b37578a221f857341fb85d55 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 24 Mar 2023 22:46:48 -0400 Subject: [PATCH 008/170] chore(dependencies): Autobump clouddriverVersion (#2028) Co-authored-by: root Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9f733f3add..2b58c3cba9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -clouddriverVersion=5.79.0 +clouddriverVersion=5.80.0 fiatVersion=1.37.0 korkVersion=7.169.0 front50Version=2.28.0 From 0bcba4181f0230f3044ca808870a27d86b9e63a8 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 29 Mar 2023 15:36:27 -0400 Subject: [PATCH 009/170] chore(dependencies): Autobump spinnakerGradleVersion (#2029) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2b58c3cba9..c161523808 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ fiatVersion=1.37.0 korkVersion=7.169.0 front50Version=2.28.0 org.gradle.parallel=true -spinnakerGradleVersion=8.25.0 +spinnakerGradleVersion=8.26.0 targetJava11=true # To enable a composite reference to a project, set the From 041cd777c03049b324f9229b338a3f24272d2155 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 30 Mar 2023 10:38:36 -0400 Subject: [PATCH 010/170] chore(dependencies): Autobump fiatVersion (#2030) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c161523808..dbf1c61327 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ clouddriverVersion=5.80.0 -fiatVersion=1.37.0 +fiatVersion=1.38.0 korkVersion=7.169.0 front50Version=2.28.0 org.gradle.parallel=true From 77121be205a9fa525f111f1e09a3762622e62f4b Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Thu, 30 Mar 2023 09:29:35 -0700 Subject: [PATCH 011/170] chore(gha): update to docker/login-action@v2 to stay up to date (#2031) similar to https://github.com/spinnaker/fiat/pull/1036 --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 63a7f306b9..7ebd9441c5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: - name: Login to GAR # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/login-action@v1 + uses: docker/login-action@v2 # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 with: registry: us-docker.pkg.dev diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ada49f404b..c205bae8d6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: - name: Login to GAR # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/login-action@v1 + uses: docker/login-action@v2 # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 with: registry: us-docker.pkg.dev From 09ddfc6d468306d54f306c7c07f762963909a739 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 31 Mar 2023 13:40:17 -0400 Subject: [PATCH 012/170] chore(dependencies): Autobump korkVersion (#2032) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index dbf1c61327..ccfad66e4b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.38.0 -korkVersion=7.169.0 +korkVersion=7.170.0 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.26.0 From b0a5a6e3eeb2c001ed760199fa6b3b409224fac4 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 31 Mar 2023 15:12:52 -0400 Subject: [PATCH 013/170] chore(dependencies): Autobump fiatVersion (#2033) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ccfad66e4b..baea89db4e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ clouddriverVersion=5.80.0 -fiatVersion=1.38.0 +fiatVersion=1.39.0 korkVersion=7.170.0 front50Version=2.28.0 org.gradle.parallel=true From 54a8ddf65acf0b5311d1dcc15caf6bb34b31a36c Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:17:09 -0700 Subject: [PATCH 014/170] chore(gha): replace action for creating github releases (#2034) see https://github.com/spinnaker/rosco/pull/966 for background --- .github/workflows/release.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c205bae8d6..b7f57f0f9a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,13 +94,12 @@ jobs: "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-${{ steps.build_variables.outputs.VERSION }}-unvalidated-ubuntu" - name: Create release if: steps.release_info.outputs.SKIP_RELEASE == 'false' - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: softprops/action-gh-release@v1 with: - tag_name: ${{ github.ref }} - release_name: ${{ github.event.repository.name }} ${{ github.ref }} body: | ${{ steps.release_info.outputs.CHANGELOG }} draft: false + name: ${{ github.event.repository.name }} ${{ github.ref_name }} prerelease: ${{ steps.release_info.outputs.IS_CANDIDATE }} + tag_name: ${{ github.ref }} + token: ${{ secrets.GITHUB_TOKEN }} From c8efac6bdfb98d7c8b26eba7cca748670a87bd3b Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:30:03 -0700 Subject: [PATCH 015/170] feat(gha): configure dependabot to keep github actions up to date (#2035) see https://github.com/spinnaker/spin/pull/358/commits/7fa164603113cbd3798590e540ffd78f78547087 Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/dependabot.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..f9ecf576e1 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" From 5360bacd08859ce5fee336fd9d9b68e835946798 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Mar 2023 23:41:17 +0000 Subject: [PATCH 016/170] chore(deps): bump docker/build-push-action from 2 to 4 (#2036) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 4. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v2...v4) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- .github/workflows/pr.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ebd9441c5..b8d03e510f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,7 +49,7 @@ jobs: - name: Build and publish slim container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: Dockerfile.slim @@ -63,7 +63,7 @@ jobs: - name: Build and publish ubuntu container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v4 with: context: . file: Dockerfile.ubuntu diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index f6341231b2..a7584344f5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -32,7 +32,7 @@ jobs: ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} run: ./gradlew build ${{ steps.build_variables.outputs.REPO }}-web:installDist - name: Build slim container image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: Dockerfile.slim @@ -43,7 +43,7 @@ jobs: "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:latest-slim" "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-slim" - name: Build ubuntu container image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: Dockerfile.ubuntu diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7f57f0f9a..c5f7c5a12e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,7 +70,7 @@ jobs: - name: Build and publish slim container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: Dockerfile.slim @@ -83,7 +83,7 @@ jobs: - name: Build and publish ubuntu container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . file: Dockerfile.ubuntu From 7794b05b7f286f7b166b91bb876fefb784dc0596 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Mar 2023 23:52:29 +0000 Subject: [PATCH 017/170] chore(deps): bump actions/setup-java from 2 to 3 (#2038) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 3. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b8d03e510f..8492ee94fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - uses: actions/setup-java@v2 + - uses: actions/setup-java@v3 with: java-version: 11 distribution: 'zulu' diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a7584344f5..23f52f99b5 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -17,7 +17,7 @@ jobs: uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - uses: actions/setup-java@v2 + - uses: actions/setup-java@v3 with: java-version: 11 distribution: 'zulu' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c5f7c5a12e..ca44abef7b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - uses: actions/setup-java@v2 + - uses: actions/setup-java@v3 with: java-version: 11 distribution: 'zulu' From 15620b88c63d5045fd008ab1e783d2231d142b16 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 00:06:08 +0000 Subject: [PATCH 018/170] chore(deps): bump actions/checkout from 2 to 3 (#2037) Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8492ee94fd..75b607341e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: if: startsWith(github.repository, 'spinnaker/') runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up QEMU diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 23f52f99b5..d305989604 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -10,7 +10,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up QEMU diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ca44abef7b..b6266d70d1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: release: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up QEMU From 6c00d965e9c8f6e04fed60b3a33bd136b5c85e9e Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Sat, 1 Apr 2023 21:24:57 -0700 Subject: [PATCH 019/170] chore(gha): replace deprecated set-output commands with environment files (#2039) to avoid warning messages like Run echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/} Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ --- .github/workflows/build.yml | 4 ++-- .github/workflows/pr.yml | 4 ++-- .github/workflows/release.yml | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75b607341e..b30b3a6661 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,8 +31,8 @@ jobs: - name: Prepare build variables id: build_variables run: | - echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/} - echo ::set-output name=VERSION::"$(git describe --tags --abbrev=0 --match="v[0-9]*" | cut -c2-)-dev-${GITHUB_REF_NAME}-$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" + echo REPO="${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT + echo VERSION="$(git describe --tags --abbrev=0 --match='v[0-9]*' | cut -c2-)-dev-${GITHUB_REF_NAME}-$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT - name: Build env: ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index d305989604..e17a1903a2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -25,8 +25,8 @@ jobs: - name: Prepare build variables id: build_variables run: | - echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/} - echo ::set-output name=VERSION::"$(git describe --tags --abbrev=0 --match="v[0-9]*" | cut -c2-)-dev-pr-$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" + echo REPO="${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT + echo VERSION="$(git describe --tags --abbrev=0 --match='v[0-9]*' | cut -c2-)-dev-pr-$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT - name: Build env: ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b6266d70d1..0f619c43b0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,15 +32,15 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | . .github/workflows/release_info.sh ${{ github.event.repository.full_name }} - echo ::set-output name=CHANGELOG::$(echo -e "${CHANGELOG}") - echo ::set-output name=SKIP_RELEASE::${SKIP_RELEASE} - echo ::set-output name=IS_CANDIDATE::${IS_CANDIDATE} - echo ::set-output name=RELEASE_VERSION::${RELEASE_VERSION} + echo CHANGELOG=$(echo -e "${CHANGELOG}") >> $GITHUB_OUTPUT + echo SKIP_RELEASE="${SKIP_RELEASE}" >> $GITHUB_OUTPUT + echo IS_CANDIDATE="${IS_CANDIDATE}" >> $GITHUB_OUTPUT + echo RELEASE_VERSION="${RELEASE_VERSION}" >> $GITHUB_OUTPUT - name: Prepare build variables id: build_variables run: | - echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/} - echo ::set-output name=VERSION::"$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" + echo REPO="${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT + echo VERSION="$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT - name: Release build env: ORG_GRADLE_PROJECT_version: ${{ steps.release_info.outputs.RELEASE_VERSION }} From eb9f6884cbf4c3412507076a92caff545440cf1d Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 3 Apr 2023 11:09:35 -0400 Subject: [PATCH 020/170] chore(dependencies): Autobump korkVersion (#2040) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index baea89db4e..392edcf32f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.39.0 -korkVersion=7.170.0 +korkVersion=7.171.0 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.26.0 From 20f4a47d233b5a195dc08b7843af8171e5dbfdc8 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 3 Apr 2023 12:31:57 -0400 Subject: [PATCH 021/170] chore(dependencies): Autobump korkVersion (#2041) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 392edcf32f..8800686d63 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.39.0 -korkVersion=7.171.0 +korkVersion=7.171.1 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.26.0 From cb7277857142f92b7e2da324fdb26ee62c6d2565 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 5 Apr 2023 07:08:28 -0400 Subject: [PATCH 022/170] chore(dependencies): Autobump korkVersion (#2042) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8800686d63..d2230bc368 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.39.0 -korkVersion=7.171.1 +korkVersion=7.171.2 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.26.0 From e6531ac05ac4d56d132f7482235dd2e16aaf8bc5 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 17 Apr 2023 15:02:56 -0400 Subject: [PATCH 023/170] chore(dependencies): Autobump korkVersion (#2044) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d2230bc368..62b02f52a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.39.0 -korkVersion=7.171.2 +korkVersion=7.172.0 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.26.0 From 3f00af01fb0532e462fae8985e09796dcafe8daf Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 2 May 2023 01:15:49 -0400 Subject: [PATCH 024/170] chore(dependencies): Autobump korkVersion (#2045) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 62b02f52a8..66f903f9f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.39.0 -korkVersion=7.172.0 +korkVersion=7.173.0 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.26.0 From f427537f6c9487c376e3cedca29df384f910599a Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 18 May 2023 13:08:28 -0400 Subject: [PATCH 025/170] chore(dependencies): Autobump spinnakerGradleVersion (#2047) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 66f903f9f5..192624efc7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ fiatVersion=1.39.0 korkVersion=7.173.0 front50Version=2.28.0 org.gradle.parallel=true -spinnakerGradleVersion=8.26.0 +spinnakerGradleVersion=8.27.0 targetJava11=true # To enable a composite reference to a project, set the From a487a161f6e3e6979310e307bb986515461f31b2 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 25 May 2023 17:41:58 -0400 Subject: [PATCH 026/170] chore(dependencies): Autobump korkVersion (#2048) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 192624efc7..df82cd7130 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ clouddriverVersion=5.80.0 fiatVersion=1.39.0 -korkVersion=7.173.0 +korkVersion=7.174.0 front50Version=2.28.0 org.gradle.parallel=true spinnakerGradleVersion=8.27.0 From 85be467e7b199af3e00a5ae1caa2d900e10aace7 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 5 Jun 2023 16:18:02 -0400 Subject: [PATCH 027/170] chore(dependencies): Autobump fiatVersion (#2050) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index df82cd7130..44e660401d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ clouddriverVersion=5.80.0 -fiatVersion=1.39.0 +fiatVersion=1.41.0 korkVersion=7.174.0 front50Version=2.28.0 org.gradle.parallel=true From 4af8375c6f47da31baf63323671c219b2a2d1a03 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 5 Jun 2023 19:27:34 -0400 Subject: [PATCH 028/170] chore(dependencies): Autobump front50Version (#2051) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 44e660401d..8079130ceb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ clouddriverVersion=5.80.0 fiatVersion=1.41.0 korkVersion=7.174.0 -front50Version=2.28.0 +front50Version=2.29.0 org.gradle.parallel=true spinnakerGradleVersion=8.27.0 targetJava11=true From 4ed6beb860b8b0638218ecfcb8be53148065f35c Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 5 Jun 2023 19:58:53 -0400 Subject: [PATCH 029/170] chore(dependencies): Autobump clouddriverVersion (#2052) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8079130ceb..db6a4f991a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -clouddriverVersion=5.80.0 +clouddriverVersion=5.81.0 fiatVersion=1.41.0 korkVersion=7.174.0 front50Version=2.29.0 From 92d223ee60dae6a5deb72ed508d190d87f2583b9 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 5 Jun 2023 21:22:17 -0400 Subject: [PATCH 030/170] chore(dependencies): Autobump korkVersion (#2049) Co-authored-by: root Co-authored-by: Cameron Motevasselani --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index db6a4f991a..318c471838 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ +korkVersion=7.175.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 -korkVersion=7.174.0 front50Version=2.29.0 org.gradle.parallel=true spinnakerGradleVersion=8.27.0 From 89ff25c771bea89982935f5a059fd3fe0f853efa Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Mon, 12 Jun 2023 20:46:07 +0530 Subject: [PATCH 031/170] refactor(variable): rename boolean variable "sealed" to avoid collision with in-built isSealed() method in Java 17. (#2053) While upgrading the google-java-format version in [spinnaker-gradle-project](https://github.com/spinnaker/spinnaker-gradle-project/pull/195) to 1.11.0 and consuming it for halyard, encountered below error: ``` > Task :halyard-deploy:spotlessJava FAILED Step 'google-java-format' found problem in 'halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/VaultServerService.java': null java.lang.reflect.InvocationTargetException at jdk.internal.reflect.GeneratedMethodAccessor1806.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.diffplug.spotless.java.GoogleJavaFormatStep$State.lambda$createFormat$1(GoogleJavaFormatStep.java:176) at com.diffplug.spotless.FormatterFunc.apply(FormatterFunc.java:32) at com.diffplug.spotless.FormatterStepImpl$Standard.format(FormatterStepImpl.java:78) at com.diffplug.spotless.FormatterStep$Strict.format(FormatterStep.java:76) at com.diffplug.spotless.Formatter.compute(Formatter.java:230) at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:201) at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:188) at com.diffplug.gradle.spotless.SpotlessTaskImpl.processInputFile(SpotlessTaskImpl.java:71) at com.diffplug.gradle.spotless.SpotlessTaskImpl.performAction(SpotlessTaskImpl.java:57) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:236) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68) at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221) at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204) at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187) at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165) at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89) at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71) at org.gradle.internal.Either$Right.fold(Either.java:175) at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56) at java.base/java.util.Optional.orElseGet(Optional.java:369) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:102) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56) at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32) at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31) at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40) at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281) at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40) at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33) at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76) Caused by: java.lang.IllegalArgumentException: No enum constant javax.lang.model.element.Modifier.SEALED at java.base/java.lang.Enum.valueOf(Enum.java:240) at java.compiler@11.0.16.1/javax.lang.model.element.Modifier.valueOf(Modifier.java:47) at com.google.googlejavaformat.java.ModifierOrderer.asModifier(ModifierOrderer.java:151) at com.google.googlejavaformat.java.ModifierOrderer.reorderModifiers(ModifierOrderer.java:64) at com.google.googlejavaformat.java.Formatter.getFormatReplacements(Formatter.java:285) at com.google.googlejavaformat.java.Formatter.formatSource(Formatter.java:267) at com.google.googlejavaformat.java.Formatter.formatSource(Formatter.java:233) ... 134 more FAILURE: Build failed with an exception. ``` The root cause of this issue is usage of boolean variable "sealed" in com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.VaultServerService.SealStatus.sealed [here](https://github.com/spinnaker/halyard/blob/92d223ee60dae6a5deb72ed508d190d87f2583b9/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/VaultServerService.java#L100). With introduction of sealed classes in java 17, isSealed() in-built method is used to verify sealed class or interface. This may collide with getter method isSealed() generated by lombok for boolean variable "sealed". --- .../deploy/spinnaker/v1/service/VaultServerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/VaultServerService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/VaultServerService.java index 439b92c82b..188c01233f 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/VaultServerService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/VaultServerService.java @@ -97,7 +97,7 @@ Response putSecret( @Data protected static class SealStatus { @SerializedName("sealed") - boolean sealed; + boolean sealStatus; } @Data @@ -187,7 +187,7 @@ public String getToken(String deploymentName, Vault vault) { throw handleVaultError(e, "check seal status"); } - if (sealStatus.isSealed()) { + if (sealStatus.isSealStatus()) { throw new HalException( Problem.Severity.FATAL, "Your vault is in a sealed state, no config can be written."); } From 04595088d38ae4108719013089c2164f6dffaadb Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 12 Jun 2023 19:41:29 -0400 Subject: [PATCH 032/170] chore(dependencies): Autobump korkVersion (#2054) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 318c471838..cde3826ebd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.175.0 +korkVersion=7.176.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 44643ef1f4843458e91a38870eae1db9f2e3af9f Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 13 Jun 2023 01:20:06 -0400 Subject: [PATCH 033/170] chore(dependencies): Autobump spinnakerGradleVersion (#2055) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index cde3826ebd..f0f8853591 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 org.gradle.parallel=true -spinnakerGradleVersion=8.27.0 +spinnakerGradleVersion=8.28.0 targetJava11=true # To enable a composite reference to a project, set the From 9baed9bcc20b4cb1cba05c11f4bb9a615a2b5d77 Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Wed, 14 Jun 2023 00:12:01 +0530 Subject: [PATCH 034/170] chore(build): upgrade gradle to 7.6.1 (#2056) --- gradle/wrapper/gradle-wrapper.jar | Bin 59536 -> 61574 bytes gradle/wrapper/gradle-wrapper.properties | 3 ++- gradlew | 18 ++++++++++++++---- gradlew.bat | 15 +++++++++------ 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7454180f2ae8848c63b8b4dea2cb829da983f2fa..943f0cbfa754578e88a3dae77fce6e3dea56edbf 100644 GIT binary patch delta 36900 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

yHlr~Qj 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 GTKgBj+ffbx diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 442d9132ea..508322917b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787337..65dcd68d65 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index ac1b06f938..6689b85bee 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From f3579c3b73d6ae366f485f96de8eb43c9540cf36 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 13 Jun 2023 15:22:10 -0400 Subject: [PATCH 035/170] chore(dependencies): Autobump korkVersion (#2057) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f0f8853591..70ab3c65ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.176.0 +korkVersion=7.177.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From d28eb1d1cbddbec377006be4cf24aae2b40d01bd Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 13 Jun 2023 18:51:37 -0400 Subject: [PATCH 036/170] chore(dependencies): Autobump korkVersion (#2058) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 70ab3c65ed..881b2411d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.177.0 +korkVersion=7.178.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 8b7499ccd0e71098452a17318aa14ac90d3e01b1 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 14 Jun 2023 12:21:17 -0400 Subject: [PATCH 037/170] chore(dependencies): Autobump spinnakerGradleVersion (#2059) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 881b2411d4..053790b3b2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 org.gradle.parallel=true -spinnakerGradleVersion=8.28.0 +spinnakerGradleVersion=8.29.0 targetJava11=true # To enable a composite reference to a project, set the From 4cc25c473c5ce50feea750b01366c806e37be0e9 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 16 Jun 2023 05:49:45 -0400 Subject: [PATCH 038/170] chore(dependencies): Autobump spinnakerGradleVersion (#2060) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 053790b3b2..ec38949f7e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 org.gradle.parallel=true -spinnakerGradleVersion=8.29.0 +spinnakerGradleVersion=8.30.0 targetJava11=true # To enable a composite reference to a project, set the From 840611a30aa8ecd124fa6838257360e4071bbafc Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Mon, 19 Jun 2023 08:28:40 +0530 Subject: [PATCH 039/170] chore(preview): remove preview feature of version ordering (VERSION_ORDERING_V2) for gradle dependencies (#2061) With gradle 6.x, used [feature preview API](https://docs.gradle.org/7.6.1/userguide/feature_lifecycle.html#feature_preview) to take advantage of [improvised dependency version ordering](https://docs.gradle.org/6.5/release-notes.html#improved-dependency-version-ordering). This feature is made public for gradle 7.x. So, removing it from settings.gradle as we moved to gradle 7.6.1 --- settings.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/settings.gradle b/settings.gradle index 3ad0aabe7c..4cad784879 100644 --- a/settings.gradle +++ b/settings.gradle @@ -22,8 +22,6 @@ } } -enableFeaturePreview("VERSION_ORDERING_V2") - rootProject.name="halyard" include 'halyard-backup' From e82323408fb27e2367afb05b3df43713f8e96122 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 26 Jun 2023 13:13:39 -0400 Subject: [PATCH 040/170] chore(dependencies): Autobump korkVersion (#2062) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ec38949f7e..9f8881fbd3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.178.0 +korkVersion=7.179.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From e0523f7144ec3b2df6e5214c10e9591aec68e2b4 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 3 Jul 2023 14:17:45 -0400 Subject: [PATCH 041/170] chore(dependencies): Autobump korkVersion (#2063) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9f8881fbd3..f9eb9f424d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.179.0 +korkVersion=7.180.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 0f256d72126e9f103290aa644da3486b7737ddb2 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 5 Jul 2023 20:38:46 -0400 Subject: [PATCH 042/170] chore(dependencies): Autobump korkVersion (#2064) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f9eb9f424d..a28fe40032 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.180.0 +korkVersion=7.181.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From fbd9c40536d7c8dbf11230fa143cafcd6de5510e Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Mon, 10 Jul 2023 22:08:09 +0530 Subject: [PATCH 043/170] refactor(tests): convert junit4 based testcases to junit5, clean up and unpin spock in halyard (#2065) Before refactor, total test cases executed were 173. After refactor, total test cases executed are 227. --- halyard-cli/halyard-cli.gradle | 4 ++-- .../spinnaker/halyard/cli/command/v1/HalCommandTest.java | 3 --- halyard-config/halyard-config.gradle | 4 ++-- .../model/v1/providers/kubernetes/KubernetesAccountTest.java | 3 --- halyard-core/halyard-core.gradle | 2 +- halyard-deploy/halyard-deploy.gradle | 2 +- 6 files changed, 6 insertions(+), 12 deletions(-) diff --git a/halyard-cli/halyard-cli.gradle b/halyard-cli/halyard-cli.gradle index 69d7080cf9..7d29775da6 100644 --- a/halyard-cli/halyard-cli.gradle +++ b/halyard-cli/halyard-cli.gradle @@ -28,9 +28,9 @@ dependencies { testImplementation 'uk.org.webcompere:system-stubs-jupiter:1.2.0' testImplementation 'org.junit.jupiter:junit-jupiter-api' testImplementation 'org.junit.jupiter:junit-jupiter-params' - testImplementation 'org.junit.platform:junit-platform-runner' - testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5' + testImplementation 'org.spockframework:spock-core' testImplementation 'org.springframework:spring-test' + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine" } apply plugin: 'application' diff --git a/halyard-cli/src/test/java/com/netflix/spinnaker/halyard/cli/command/v1/HalCommandTest.java b/halyard-cli/src/test/java/com/netflix/spinnaker/halyard/cli/command/v1/HalCommandTest.java index 473ebc760a..276274785c 100644 --- a/halyard-cli/src/test/java/com/netflix/spinnaker/halyard/cli/command/v1/HalCommandTest.java +++ b/halyard-cli/src/test/java/com/netflix/spinnaker/halyard/cli/command/v1/HalCommandTest.java @@ -33,10 +33,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.junit.platform.runner.JUnitPlatform; -import org.junit.runner.RunWith; -@RunWith(JUnitPlatform.class) class HalCommandTest { private HalCommand hal; diff --git a/halyard-config/halyard-config.gradle b/halyard-config/halyard-config.gradle index 9d437c712a..32aa8b05a0 100644 --- a/halyard-config/halyard-config.gradle +++ b/halyard-config/halyard-config.gradle @@ -46,9 +46,9 @@ dependencies { testImplementation 'org.assertj:assertj-core' testImplementation 'org.junit.jupiter:junit-jupiter-api' - testImplementation 'org.junit.platform:junit-platform-runner' - testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5' + testImplementation 'org.spockframework:spock-core' testImplementation 'org.springframework:spring-test' testImplementation 'org.codehaus.groovy:groovy' testRuntimeOnly 'net.bytebuddy:byte-buddy' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' } diff --git a/halyard-config/src/test/java/com/netflix/spinnaker/halyard/config/model/v1/providers/kubernetes/KubernetesAccountTest.java b/halyard-config/src/test/java/com/netflix/spinnaker/halyard/config/model/v1/providers/kubernetes/KubernetesAccountTest.java index 924d85782b..a8e30ed0ef 100644 --- a/halyard-config/src/test/java/com/netflix/spinnaker/halyard/config/model/v1/providers/kubernetes/KubernetesAccountTest.java +++ b/halyard-config/src/test/java/com/netflix/spinnaker/halyard/config/model/v1/providers/kubernetes/KubernetesAccountTest.java @@ -24,11 +24,8 @@ import java.io.IOException; import java.io.StringWriter; import org.junit.jupiter.api.Test; -import org.junit.platform.runner.JUnitPlatform; -import org.junit.runner.RunWith; import org.yaml.snakeyaml.Yaml; -@RunWith(JUnitPlatform.class) final class KubernetesAccountTest { @Test diff --git a/halyard-core/halyard-core.gradle b/halyard-core/halyard-core.gradle index 2602ea0bb0..dd1bae32ad 100644 --- a/halyard-core/halyard-core.gradle +++ b/halyard-core/halyard-core.gradle @@ -17,7 +17,7 @@ dependencies { implementation 'commons-io:commons-io' implementation 'io.reactivex:rxjava' implementation 'com.hubspot.jinjava:jinjava:2.2.3' - implementation 'org.spockframework:spock-spring:1.1-groovy-2.4' + implementation 'org.spockframework:spock-spring' implementation 'org.yaml:snakeyaml:1.24' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/halyard-deploy/halyard-deploy.gradle b/halyard-deploy/halyard-deploy.gradle index 68c02c684c..1ecd147ae1 100644 --- a/halyard-deploy/halyard-deploy.gradle +++ b/halyard-deploy/halyard-deploy.gradle @@ -29,7 +29,7 @@ dependencies { implementation project(':halyard-core') implementation project(':halyard-backup') - testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5' + testImplementation 'org.spockframework:spock-core' testImplementation 'org.springframework:spring-test' testRuntimeOnly 'net.bytebuddy:byte-buddy' testRuntimeOnly 'org.objenesis:objenesis' From 4c4b41a1e4e75d70cbd79948511a449ac7cb28a9 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 12 Jul 2023 12:54:39 -0400 Subject: [PATCH 044/170] chore(dependencies): Autobump korkVersion (#2066) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a28fe40032..101f9ec0cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.181.0 +korkVersion=7.182.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 3b99aa9a3f32b9fa51c055330f0e40be97e1b927 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 12 Jul 2023 18:18:49 -0400 Subject: [PATCH 045/170] chore(dependencies): Autobump korkVersion (#2067) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 101f9ec0cd..42c272907b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.182.0 +korkVersion=7.182.1 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 95c6375371b46c999096ad62c66e6ffdb53bee69 Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:12:53 -0700 Subject: [PATCH 046/170] fix(config): import RetrofitConfiguration class (#2068) to get a okhttp3.logging.HttpLoggingInterceptor$Level bean to fix the *************************** APPLICATION FAILED TO START *************************** Description: Parameter 2 of constructor in com.netflix.spinnaker.config.OkHttp3ClientConfiguration required a bean of type 'okhttp3.logging.HttpLoggingInterceptor$Level' that could not be found. Action: Consider defining a bean of type 'okhttp3.logging.HttpLoggingInterceptor$Level' in your configuration. message on startup. More specifically, from $ ./gradlew build halyard-web:installDist $ docker build -f Dockerfile.slim -t halyard:test-me . $ docker run --rm halyard:test-me --- .../spinnaker/halyard/config/config/v1/RetrofitConfig.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java index f97968e3a3..aa8bb7bcf5 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java @@ -19,6 +19,7 @@ import com.jakewharton.retrofit.Ok3Client; import com.netflix.spinnaker.config.OkHttp3ClientConfiguration; import com.netflix.spinnaker.config.OkHttpClientComponents; +import com.netflix.spinnaker.config.RetrofitConfiguration; import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +32,11 @@ import retrofit.RestAdapter; @Configuration -@Import({OkHttp3ClientConfiguration.class, OkHttpClientComponents.class}) +@Import({ + OkHttp3ClientConfiguration.class, + OkHttpClientComponents.class, + RetrofitConfiguration.class +}) class RetrofitConfig { @Autowired OkHttp3ClientConfiguration okHttpClientConfig; From eda1b0a781baf2cbaef698299c1fa36989666854 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 18 Jul 2023 17:39:00 -0400 Subject: [PATCH 047/170] chore(dependencies): Autobump spinnakerGradleVersion (#2069) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 42c272907b..16ccfa6f9f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 org.gradle.parallel=true -spinnakerGradleVersion=8.30.0 +spinnakerGradleVersion=8.31.0 targetJava11=true # To enable a composite reference to a project, set the From 5123b126f059d3311573b1bedc6b1143d932ef7c Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 10 Aug 2023 15:13:41 -0400 Subject: [PATCH 048/170] chore(dependencies): Autobump korkVersion (#2070) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 16ccfa6f9f..b5b6e59742 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.182.1 +korkVersion=7.183.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 12453e55d9cdfab48f6aea51dd6bb7d729468440 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 10 Aug 2023 16:52:03 -0400 Subject: [PATCH 049/170] chore(dependencies): Autobump korkVersion (#2071) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b5b6e59742..c2e392e8fe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.183.0 +korkVersion=7.184.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 053d2895595ed3aa17fb94e11134ec55c6c7b002 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 11 Aug 2023 13:10:02 -0400 Subject: [PATCH 050/170] chore(dependencies): Autobump korkVersion (#2072) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c2e392e8fe..582fcc9dd8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.184.0 +korkVersion=7.185.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 882a5011d605c9ce5acc0a928e6481959e76e1aa Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 11 Aug 2023 14:28:00 -0400 Subject: [PATCH 051/170] chore(dependencies): Autobump korkVersion (#2073) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 582fcc9dd8..71fcfa9d00 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.185.0 +korkVersion=7.186.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From 401ef9d29420c987f31fa9a68ea8abfba67f063b Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 24 Aug 2023 12:05:51 -0400 Subject: [PATCH 052/170] chore(dependencies): Autobump korkVersion (#2074) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 71fcfa9d00..1aad49330f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.186.0 +korkVersion=7.187.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From bccd39b8e29e8bc5b46511c9f0209a79004af0a9 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 24 Aug 2023 18:02:37 -0400 Subject: [PATCH 053/170] chore(dependencies): Autobump korkVersion (#2075) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1aad49330f..66e613c3a9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.187.0 +korkVersion=7.188.0 clouddriverVersion=5.81.0 fiatVersion=1.41.0 front50Version=2.29.0 From df19f711b9a7499a70c264a929a420d13fbbea6d Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 29 Aug 2023 14:11:24 -0400 Subject: [PATCH 054/170] chore(dependencies): Autobump fiatVersion (#2077) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 66e613c3a9..6275865197 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ korkVersion=7.188.0 clouddriverVersion=5.81.0 -fiatVersion=1.41.0 +fiatVersion=1.42.0 front50Version=2.29.0 org.gradle.parallel=true spinnakerGradleVersion=8.31.0 From 9b8c803fc54f9e974fe945ed20422ce086637397 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 30 Aug 2023 01:48:39 -0400 Subject: [PATCH 055/170] chore(dependencies): Autobump clouddriverVersion (#2079) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 6275865197..b0bf144b90 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.188.0 -clouddriverVersion=5.81.0 +clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.29.0 org.gradle.parallel=true From 4a9ffe914dfec148833727cbd948bbf1078dbc81 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 30 Aug 2023 09:08:14 -0400 Subject: [PATCH 056/170] chore(dependencies): Autobump front50Version (#2080) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b0bf144b90..30184df4cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ korkVersion=7.188.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 -front50Version=2.29.0 +front50Version=2.30.0 org.gradle.parallel=true spinnakerGradleVersion=8.31.0 targetJava11=true From 0720966d2a1febe65202c2512f8d8b6902746862 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 6 Sep 2023 12:07:36 -0400 Subject: [PATCH 057/170] chore(dependencies): Autobump korkVersion (#2081) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 30184df4cd..36030c9c96 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.188.0 +korkVersion=7.189.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 1ee701ba5a18000c7ac843638d14858ccfe6b5aa Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 7 Sep 2023 13:04:18 -0400 Subject: [PATCH 058/170] chore(dependencies): Autobump front50Version (#2082) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 36030c9c96..70e61365df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ korkVersion=7.189.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 -front50Version=2.30.0 +front50Version=2.30.1 org.gradle.parallel=true spinnakerGradleVersion=8.31.0 targetJava11=true From 4c7a9e639e75d7eab0ede4c50faf062d1465955d Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Thu, 7 Sep 2023 11:19:33 -0700 Subject: [PATCH 059/170] Revert "chore(dependencies): Autobump front50Version (#2082)" (#2084) This reverts commit 1ee701ba5a18000c7ac843638d14858ccfe6b5aa. https://github.com/spinnaker/halyard/pull/2082 was generated from a tag on the release-1.32.x branch of front50. Halyard is supposed to use versions of front50 from master, so revert this. See https://github.com/spinnaker/spinnaker/projects/20#card-85655999 for a fix for this. --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 70e61365df..36030c9c96 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ korkVersion=7.189.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 -front50Version=2.30.1 +front50Version=2.30.0 org.gradle.parallel=true spinnakerGradleVersion=8.31.0 targetJava11=true From 645ab3efb462130337ec0a3cb8eceaaa33b4060a Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 15 Sep 2023 13:11:26 -0400 Subject: [PATCH 060/170] chore(dependencies): Autobump korkVersion (#2085) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 36030c9c96..9adb45279e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.189.0 +korkVersion=7.190.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 341781a4282a00eaa1bf5eb16108e1b20ee92caa Mon Sep 17 00:00:00 2001 From: Matt Gogerly <6519811+mattgogerly@users.noreply.github.com> Date: Tue, 19 Sep 2023 16:40:45 +0100 Subject: [PATCH 061/170] fix(java17): add options for java11 image variants (#2086) --- .../halyard/config/model/v1/node/DeploymentEnvironment.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/DeploymentEnvironment.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/DeploymentEnvironment.java index 35a5e35923..b1e06cd042 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/DeploymentEnvironment.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/DeploymentEnvironment.java @@ -95,7 +95,9 @@ public enum ImageVariant { SLIM("Based on an Alpine image"), UBUNTU("Based on Canonical's ubuntu:bionic image"), JAVA8("A variant of SLIM that uses the Java 8 runtime"), - UBUNTU_JAVA8("A variant of UBUNTU that uses the Java 8 runtime"); + UBUNTU_JAVA8("A variant of UBUNTU that uses the Java 8 runtime"), + JAVA11("A variant of SLIM that uses the Java 11 runtime"), + UBUNTU_JAVA11("A variant of UBUNTU that uses the Java 11 runtime"); @Getter final String description; From d92968cbbc2cfb4e710f19c4652797149d77d3ae Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Wed, 20 Sep 2023 21:25:41 +0530 Subject: [PATCH 062/170] refactor(core/test): refactor typo in test based on spockframework (#2087) It seems that typo is ignored while compilation by spockframework 1.3-groovy-2.5/groovy 2.5.15, however during upgrade of spockframework 2.0-groovy-3.0 and groovy 3.x, hit the test compilation error: ``` > Task :halyard-core:compileTestGroovy startup failed: /halyard/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/registry/v1/VersionsSpec.groovy: 119: unable to resolve class dev @ line 119, column 13. dev versions = ["1.0.0", badVersion] ^ 1 error > Task :halyard-core:compileTestGroovy FAILED ``` --- .../spinnaker/halyard/core/registry/v1/VersionsSpec.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/registry/v1/VersionsSpec.groovy b/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/registry/v1/VersionsSpec.groovy index 5e63276446..cbd14c0065 100644 --- a/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/registry/v1/VersionsSpec.groovy +++ b/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/registry/v1/VersionsSpec.groovy @@ -116,7 +116,7 @@ class VersionsSpec extends Specification { def "orderBySemVer throws an exception for invalid versions"() { when: - dev versions = ["1.0.0", badVersion] + def versions = ["1.0.0", badVersion] Collections.sort(versions, Versions.orderBySemVer()) then: From 061e344aa2e67232e4a32d4bb23d4583b48801bc Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Thu, 21 Sep 2023 11:23:44 +0530 Subject: [PATCH 063/170] chore(build): remove duplicate useJUnitPlatform() from build.gradle (#2088) Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 78aa5d7076..50051f1c2d 100644 --- a/build.gradle +++ b/build.gradle @@ -36,7 +36,6 @@ subprojects { } minHeapSize = "512m" maxHeapSize = "512m" - useJUnitPlatform() } if ([korkVersion, fiatVersion, clouddriverVersion, front50Version].any { it.endsWith("-SNAPSHOT") }) { From 507e1d4d7eb7cab7b85586651a2b6662470482e7 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 26 Sep 2023 22:31:03 -0400 Subject: [PATCH 064/170] chore(dependencies): Autobump korkVersion (#2089) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9adb45279e..5e31421139 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.190.0 +korkVersion=7.191.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 340384a89a30447f718c92d450bd024adc628c37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 19:25:01 +0000 Subject: [PATCH 065/170] chore(deps): bump docker/setup-buildx-action from 2 to 3 (#2090) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b30b3a6661..56974f5276 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - uses: actions/setup-java@v3 with: java-version: 11 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e17a1903a2..74c9589799 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -16,7 +16,7 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - uses: actions/setup-java@v3 with: java-version: 11 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0f619c43b0..0e639e1941 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - uses: actions/setup-java@v3 with: java-version: 11 From 9db7ec3b03c0b03e97488b97d9e146e12eb91701 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 19:35:50 +0000 Subject: [PATCH 066/170] chore(deps): bump actions/checkout from 3 to 4 (#2091) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56974f5276..917da2dd5e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: if: startsWith(github.repository, 'spinnaker/') runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up QEMU diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 74c9589799..fb29022fc9 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -10,7 +10,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up QEMU diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e639e1941..84c1f23760 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: release: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up QEMU From 9e5a247005fc530c4eecef3b57508858721d7889 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 19:49:30 +0000 Subject: [PATCH 067/170] chore(deps): bump docker/build-push-action from 4 to 5 (#2092) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v4...v5) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- .github/workflows/pr.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 917da2dd5e..bc23370d8b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,7 +49,7 @@ jobs: - name: Build and publish slim container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: Dockerfile.slim @@ -63,7 +63,7 @@ jobs: - name: Build and publish ubuntu container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: Dockerfile.ubuntu diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index fb29022fc9..c64340338a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -32,7 +32,7 @@ jobs: ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} run: ./gradlew build ${{ steps.build_variables.outputs.REPO }}-web:installDist - name: Build slim container image - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: Dockerfile.slim @@ -43,7 +43,7 @@ jobs: "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:latest-slim" "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-slim" - name: Build ubuntu container image - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: Dockerfile.ubuntu diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 84c1f23760..becf9b5b63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,7 +70,7 @@ jobs: - name: Build and publish slim container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: Dockerfile.slim @@ -83,7 +83,7 @@ jobs: - name: Build and publish ubuntu container image # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: Dockerfile.ubuntu From d2449c44f2c96b469992d79b19a848c9390b29b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 20:00:25 +0000 Subject: [PATCH 068/170] chore(deps): bump docker/setup-qemu-action from 2 to 3 (#2093) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc23370d8b..14948d8717 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - uses: actions/setup-java@v3 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index c64340338a..ccbc493e29 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -14,7 +14,7 @@ jobs: with: fetch-depth: 0 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - uses: actions/setup-java@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index becf9b5b63..2cdc8a8a1c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: with: fetch-depth: 0 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - uses: actions/setup-java@v3 From 7970114094ca72a2b55a9317b0d946bd70cef7f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 20:11:52 +0000 Subject: [PATCH 069/170] chore(deps): bump docker/login-action from 2 to 3 (#2094) Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 14948d8717..9620ef9b35 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: - name: Login to GAR # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/login-action@v2 + uses: docker/login-action@v3 # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 with: registry: us-docker.pkg.dev diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2cdc8a8a1c..5d3ce95ac6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: - name: Login to GAR # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') - uses: docker/login-action@v2 + uses: docker/login-action@v3 # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 with: registry: us-docker.pkg.dev From 9e8ba5c26fa3ceb2ff0908f40637c64865f5b30f Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 2 Oct 2023 21:11:14 -0400 Subject: [PATCH 070/170] chore(dependencies): Autobump korkVersion (#2095) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5e31421139..31a3d92cad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.191.0 +korkVersion=7.192.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From f6823e159b17814e0899ff972116b128c84743c1 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 4 Oct 2023 10:08:04 -0400 Subject: [PATCH 071/170] chore(dependencies): Autobump korkVersion (#2096) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 31a3d92cad..16c0802a2c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.192.0 +korkVersion=7.193.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 875663786b6df96d9a09173ba865fbbaaa672528 Mon Sep 17 00:00:00 2001 From: Anderson Mendoza Date: Thu, 5 Oct 2023 16:44:51 -0500 Subject: [PATCH 072/170] Fixing the project logo (#2097) * Uploading project SVG * Updating logo dimensions * fix(logo): logo bug resolved * fix(dead link): removing dead link from logo --------- Co-authored-by: Laboratorio 09 Sede Surco --- README.md | 8 +++++++- spinnaker-seeklogo.svg | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 spinnaker-seeklogo.svg diff --git a/README.md b/README.md index e560a00680..b4de1c53db 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ +

+ # Halyard -[![Build Status](https://api.travis-ci.org/spinnaker/halyard.svg?branch=master)](https://travis-ci.org/spinnaker/halyard) +Logo A tool for configuring, installing, and updating Spinnaker. @@ -8,6 +10,8 @@ A tool for configuring, installing, and updating Spinnaker. ![](./demo.gif) +
+ ## Installation > __NOTICE:__ This tool is in Beta - some behavior may still change. Please @@ -58,3 +62,5 @@ __hal__ is a CLI for making changes to your __halconfig__ via the __daemon__. Read the command reference [here](docs/commands.md). + +[icon]: https://github.com/AnderMendoza/halyard/blob/master/spinnaker-seeklogo.com.svg diff --git a/spinnaker-seeklogo.svg b/spinnaker-seeklogo.svg new file mode 100644 index 0000000000..bde320f2d2 --- /dev/null +++ b/spinnaker-seeklogo.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + Layer 1 + + + + + + \ No newline at end of file From 46a3f5ce1924294985e50f676001b2badbd3c2cf Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 17 Oct 2023 16:09:42 -0400 Subject: [PATCH 073/170] chore(dependencies): Autobump korkVersion (#2099) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 16c0802a2c..23fb2e2b8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.193.0 +korkVersion=7.194.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 2d4317032cb4f29806451ef597155eb4d8d0f779 Mon Sep 17 00:00:00 2001 From: Sandesh <30489233+j-sandy@users.noreply.github.com> Date: Wed, 18 Oct 2023 04:26:16 +0530 Subject: [PATCH 074/170] refactor(test): add runtime jupiter engine and remove vintage engine with upgrade of groovy 3 (#2098) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 50051f1c2d..caadae5360 100644 --- a/build.gradle +++ b/build.gradle @@ -52,7 +52,7 @@ subprojects { annotationProcessor "org.projectlombok:lombok" testAnnotationProcessor platform("io.spinnaker.kork:kork-bom:$korkVersion") testAnnotationProcessor "org.projectlombok:lombok" - testRuntimeOnly "org.junit.vintage:junit-vintage-engine" + testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine" } } From 3f308375aedf0c0cec368f608cf4a5d8bd789ec5 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 20 Oct 2023 13:48:06 -0400 Subject: [PATCH 075/170] chore(dependencies): Autobump korkVersion (#2100) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 23fb2e2b8a..b18acd4404 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.194.0 +korkVersion=7.195.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 4b1e22e707855d2df7d2766ca6eb650cf0b09b3a Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Sun, 29 Oct 2023 20:13:12 -0400 Subject: [PATCH 076/170] chore(dependencies): Autobump korkVersion (#2101) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b18acd4404..5675d99d41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.195.0 +korkVersion=7.196.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 7d3752ac6239897b6cb9e3457ae024e9b4354fdb Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 2 Nov 2023 15:59:22 -0400 Subject: [PATCH 077/170] chore(dependencies): Autobump korkVersion (#2102) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5675d99d41..4e81b9ee7b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.196.0 +korkVersion=7.197.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From ae08e47c0abe0653c09fd9ca52d9039eef399949 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 10 Nov 2023 14:58:40 -0500 Subject: [PATCH 078/170] chore(dependencies): Autobump korkVersion (#2104) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4e81b9ee7b..def14549cc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.197.0 +korkVersion=7.198.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From d7e226b61f9a782dae5c1024d6570e63822bda0f Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 13 Nov 2023 13:27:26 -0500 Subject: [PATCH 079/170] chore(dependencies): Autobump korkVersion (#2105) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index def14549cc..469670a0c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.198.0 +korkVersion=7.199.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 63c5402d1814e1aa02b34f20a04a70a8847a4ecd Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 14 Nov 2023 16:30:47 -0500 Subject: [PATCH 080/170] chore(dependencies): Autobump korkVersion (#2106) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 469670a0c9..5f9e0efe36 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.199.0 +korkVersion=7.200.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 4bd2b4d0cde03ca419e46deaae6ebb7facddd378 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 20 Nov 2023 12:52:24 -0500 Subject: [PATCH 081/170] chore(dependencies): Autobump korkVersion (#2107) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5f9e0efe36..9e6ca69282 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.200.0 +korkVersion=7.201.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 61e7142d232b38f78cd46d01962595b6b021bd43 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 20 Nov 2023 16:39:09 -0500 Subject: [PATCH 082/170] chore(dependencies): Autobump korkVersion (#2108) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9e6ca69282..dfb6bac5b0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.201.0 +korkVersion=7.202.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 5894da1f2399deba5c957317ff59e8617f5ca6ad Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 21 Nov 2023 14:57:49 -0500 Subject: [PATCH 083/170] chore(dependencies): Autobump korkVersion (#2109) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index dfb6bac5b0..d6a136daa0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.202.0 +korkVersion=7.203.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From dd7505f74089ff28fcb3e039ca09f2edded81ba3 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 21 Nov 2023 19:05:37 -0500 Subject: [PATCH 084/170] chore(dependencies): Autobump clouddriverVersion (#2110) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d6a136daa0..7b065ba1fd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.203.0 -clouddriverVersion=5.82.0 +clouddriverVersion=5.81.2 fiatVersion=1.42.0 front50Version=2.30.0 org.gradle.parallel=true From 518b4b08d81dc865c6f7548fe53857944233b38f Mon Sep 17 00:00:00 2001 From: David Byron Date: Tue, 21 Nov 2023 16:31:06 -0800 Subject: [PATCH 085/170] This version of clouddriver isn't from master, so it doesn't belong in halyard Revert "chore(dependencies): Autobump clouddriverVersion (#2110)" This reverts commit dd7505f74089ff28fcb3e039ca09f2edded81ba3. --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 7b065ba1fd..d6a136daa0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.203.0 -clouddriverVersion=5.81.2 +clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 org.gradle.parallel=true From 17bae496e5ca3812398316bd10bfcd60989c9c72 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 21 Nov 2023 19:42:04 -0500 Subject: [PATCH 086/170] chore(dependencies): Autobump korkVersion (#2111) Co-authored-by: root Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d6a136daa0..dc1b90b396 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.203.0 +korkVersion=7.204.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From f1a70e174586341d42c492644ca407a83dfc50dd Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 28 Nov 2023 04:41:15 -0500 Subject: [PATCH 087/170] chore(dependencies): Autobump clouddriverVersion (#2112) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index dc1b90b396..5fb8e04933 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.204.0 -clouddriverVersion=5.82.0 +clouddriverVersion=5.82.1 fiatVersion=1.42.0 front50Version=2.30.0 org.gradle.parallel=true From 73a0bf8e7f232b451b5b8ed101e31cee6f35b781 Mon Sep 17 00:00:00 2001 From: David Byron Date: Tue, 28 Nov 2023 08:58:05 -0800 Subject: [PATCH 088/170] This version of clouddriver isn't from master, so it doesn't belong in halyard Revert "chore(dependencies): Autobump clouddriverVersion (#2112)" This reverts commit f1a70e174586341d42c492644ca407a83dfc50dd. --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5fb8e04933..dc1b90b396 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.204.0 -clouddriverVersion=5.82.1 +clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 org.gradle.parallel=true From 42dc6916a8827c7a5e90dd3175a45a725c7fc3c7 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 28 Nov 2023 12:23:55 -0500 Subject: [PATCH 089/170] chore(dependencies): Autobump korkVersion (#2113) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index dc1b90b396..4e8660bfd0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.204.0 +korkVersion=7.205.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 360cf918a82969571631063012f206d7c0bc8bb4 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 1 Dec 2023 04:57:43 -0500 Subject: [PATCH 090/170] chore(dependencies): Autobump spinnakerGradleVersion (#2114) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4e8660bfd0..5ebae3cf7d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 org.gradle.parallel=true -spinnakerGradleVersion=8.31.0 +spinnakerGradleVersion=8.32.1 targetJava11=true # To enable a composite reference to a project, set the From 7de1660f3f9da2062ee5368f47c3f5bd65c7c8d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Dec 2023 16:28:29 +0000 Subject: [PATCH 091/170] chore(deps): bump actions/setup-java from 3 to 4 (#2115) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9620ef9b35..d6e438c1f5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 11 distribution: 'zulu' diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ccbc493e29..4a01dca2ab 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -17,7 +17,7 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 11 distribution: 'zulu' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5d3ce95ac6..cf30f38fdc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 11 distribution: 'zulu' From f8c876f451ad9fca613655d0ac91b7cc15d17f4b Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 5 Dec 2023 16:37:52 -0500 Subject: [PATCH 092/170] chore(dependencies): Autobump korkVersion (#2116) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5ebae3cf7d..d3d36749ae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.205.0 +korkVersion=7.206.0 clouddriverVersion=5.82.0 fiatVersion=1.42.0 front50Version=2.30.0 From 27792ff90b5f7618815f8951d5adfced69c0b203 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 12 Dec 2023 04:59:34 -0500 Subject: [PATCH 093/170] chore(dependencies): Autobump fiatVersion (#2117) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d3d36749ae..9c98a91ca9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ korkVersion=7.206.0 clouddriverVersion=5.82.0 -fiatVersion=1.42.0 +fiatVersion=1.43.0 front50Version=2.30.0 org.gradle.parallel=true spinnakerGradleVersion=8.32.1 From 3c83a7089930a6d0b894c270f17074c2c6a267e2 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 12 Dec 2023 06:01:18 -0500 Subject: [PATCH 094/170] chore(dependencies): Autobump front50Version (#2118) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9c98a91ca9..623d1a62b0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ korkVersion=7.206.0 clouddriverVersion=5.82.0 fiatVersion=1.43.0 -front50Version=2.30.0 +front50Version=2.31.0 org.gradle.parallel=true spinnakerGradleVersion=8.32.1 targetJava11=true From 23cfd11cad9c9df6ad46793470eed8af18509c0d Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 12 Dec 2023 07:45:51 -0500 Subject: [PATCH 095/170] chore(dependencies): Autobump clouddriverVersion (#2119) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 623d1a62b0..84515259f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.206.0 -clouddriverVersion=5.82.0 +clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 org.gradle.parallel=true From 26d527daa59b49b212c35f088a2b75a86dd4d4db Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 2 Jan 2024 14:03:30 -0500 Subject: [PATCH 096/170] chore(dependencies): Autobump korkVersion (#2120) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 84515259f7..6ccd2398a9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.206.0 +korkVersion=7.207.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 2ee3e59311a1b8f7a89e420d7e4205840aaccba0 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 4 Jan 2024 15:39:44 -0500 Subject: [PATCH 097/170] chore(dependencies): Autobump korkVersion (#2121) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 6ccd2398a9..38e8e9f3ea 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.207.0 +korkVersion=7.208.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From d30a3aff7c47a494a2d87ad9c3514ff426fd39e0 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 5 Jan 2024 18:42:52 -0500 Subject: [PATCH 098/170] chore(dependencies): Autobump korkVersion (#2122) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 38e8e9f3ea..c156137a32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.208.0 +korkVersion=7.209.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 415f85e7fc97bee3fbe234f5e714e4d39bb5ddaa Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 2 Feb 2024 14:06:09 -0500 Subject: [PATCH 099/170] chore(dependencies): Autobump korkVersion (#2123) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c156137a32..e1b64777f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.209.0 +korkVersion=7.210.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From f525c1f8bd5e545dae93b190e50a1912ec1ca1a5 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Sun, 4 Feb 2024 23:14:35 -0500 Subject: [PATCH 100/170] chore(dependencies): Autobump korkVersion (#2124) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index e1b64777f5..d6db1925a2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.210.0 +korkVersion=7.211.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 433b52c1da874e50d4b3ff30b844b066d490859b Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Wed, 7 Feb 2024 14:23:04 -0500 Subject: [PATCH 101/170] chore(dependencies): Autobump korkVersion (#2125) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d6db1925a2..2aef355ee2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.211.0 +korkVersion=7.212.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 796a8f1540bd59ac6634a88556da437f1470b6d1 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Mon, 19 Feb 2024 15:17:58 -0500 Subject: [PATCH 102/170] chore(dependencies): Autobump korkVersion (#2126) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2aef355ee2..a6c3eea87b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.212.0 +korkVersion=7.213.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From fa308a6ff57089b5824c1ee73d549efde8766c8d Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 20 Feb 2024 02:02:19 -0500 Subject: [PATCH 103/170] chore(dependencies): Autobump korkVersion (#2127) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a6c3eea87b..9057cb28a9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.213.0 +korkVersion=7.214.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 879ef3d6956c6aef691d7d4244dd43a2d97d8c16 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 22 Feb 2024 12:19:35 -0500 Subject: [PATCH 104/170] chore(dependencies): Autobump korkVersion (#2128) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9057cb28a9..fe7f80d86d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.214.0 +korkVersion=7.215.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 60ecfa2c945029b6dd66b6283cc5f9235fcdca4d Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Fri, 23 Feb 2024 12:48:24 -0500 Subject: [PATCH 105/170] chore(dependencies): Autobump korkVersion (#2129) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index fe7f80d86d..4c582c0b3f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.215.0 +korkVersion=7.216.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 9035a7809ba558582adce559a92fe36f8f87373c Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 27 Feb 2024 00:29:03 -0500 Subject: [PATCH 106/170] chore(dependencies): Autobump korkVersion (#2130) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4c582c0b3f..79b4c4450e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.216.0 +korkVersion=7.217.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 24d550ca9b04b0bafffdf54258a64c354c588ecc Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Sun, 3 Mar 2024 12:45:25 -0500 Subject: [PATCH 107/170] chore(dependencies): Autobump korkVersion (#2131) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 79b4c4450e..b0e0793d5f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.217.0 +korkVersion=7.218.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From d4906f826e7eff14ec0a0e0a8901342eec06e2b7 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 12 Mar 2024 12:21:58 -0400 Subject: [PATCH 108/170] chore(dependencies): Autobump korkVersion (#2134) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b0e0793d5f..cedad2a2ad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.218.0 +korkVersion=7.219.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 4ec2158efa8d1594a72ad27507923734b8b67819 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 12 Mar 2024 13:36:07 -0400 Subject: [PATCH 109/170] chore(dependencies): Autobump korkVersion (#2135) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index cedad2a2ad..4d80d309b2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.219.0 +korkVersion=7.220.0 clouddriverVersion=5.83.0 fiatVersion=1.43.0 front50Version=2.31.0 From 70c5a7c9fb4ee1d01b671845f17609fc29c53fe7 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 12 Mar 2024 16:07:49 -0400 Subject: [PATCH 110/170] chore(dependencies): Autobump fiatVersion (#2136) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4d80d309b2..4b2cb317f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ korkVersion=7.220.0 clouddriverVersion=5.83.0 -fiatVersion=1.43.0 +fiatVersion=1.44.0 front50Version=2.31.0 org.gradle.parallel=true spinnakerGradleVersion=8.32.1 From 98a53ce219a00b9ea82b4553b7b9c51a11b22819 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 21 Mar 2024 12:45:52 -0400 Subject: [PATCH 111/170] chore(dependencies): Autobump korkVersion (#2137) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4b2cb317f0..15e2ec4c09 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.220.0 +korkVersion=7.221.0 clouddriverVersion=5.83.0 fiatVersion=1.44.0 front50Version=2.31.0 From c938999d95727775f24e5979298d79aa9175546d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 04:34:04 +0000 Subject: [PATCH 112/170] chore(deps): bump softprops/action-gh-release from 1 to 2 (#2138) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf30f38fdc..0e68513fc1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,7 +94,7 @@ jobs: "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-${{ steps.build_variables.outputs.VERSION }}-unvalidated-ubuntu" - name: Create release if: steps.release_info.outputs.SKIP_RELEASE == 'false' - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: body: | ${{ steps.release_info.outputs.CHANGELOG }} From be9159200b5864fffdd5d4f3d2c39bccf0d75d12 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 2 Apr 2024 09:08:26 -0400 Subject: [PATCH 113/170] chore(dependencies): Autobump korkVersion (#2139) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 15e2ec4c09..423a061389 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.221.0 +korkVersion=7.222.0 clouddriverVersion=5.83.0 fiatVersion=1.44.0 front50Version=2.31.0 From 79e97923eda55893159b2d3eefec428954e3a6a3 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 2 Apr 2024 15:27:08 -0400 Subject: [PATCH 114/170] chore(dependencies): Autobump fiatVersion (#2140) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 423a061389..166bf0cfd1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ korkVersion=7.222.0 clouddriverVersion=5.83.0 -fiatVersion=1.44.0 +fiatVersion=1.45.0 front50Version=2.31.0 org.gradle.parallel=true spinnakerGradleVersion=8.32.1 From 20dc107751281c462259c8df275475cb5dd126de Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 2 Apr 2024 16:29:58 -0400 Subject: [PATCH 115/170] chore(dependencies): Autobump korkVersion (#2141) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 166bf0cfd1..380b7d9c4b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.222.0 +korkVersion=7.223.0 clouddriverVersion=5.83.0 fiatVersion=1.45.0 front50Version=2.31.0 From bb0f8459b2471065e2bef144e4fc8078f78728d7 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 4 Apr 2024 15:48:56 -0400 Subject: [PATCH 116/170] chore(dependencies): Autobump clouddriverVersion (#2142) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 380b7d9c4b..c9ead6d086 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ korkVersion=7.223.0 -clouddriverVersion=5.83.0 +clouddriverVersion=5.84.0 fiatVersion=1.45.0 front50Version=2.31.0 org.gradle.parallel=true From 1c69e99941b25f3b1cf839aacfa3b24092c3c377 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Sat, 6 Apr 2024 00:26:56 -0400 Subject: [PATCH 117/170] chore(dependencies): Autobump korkVersion (#2143) Co-authored-by: root --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c9ead6d086..0edb3421be 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -korkVersion=7.223.0 +korkVersion=7.224.0 clouddriverVersion=5.84.0 fiatVersion=1.45.0 front50Version=2.31.0 From a4c0696d815f4299473e74ce793468da61b56ad7 Mon Sep 17 00:00:00 2001 From: David Byron <82477955+dbyron-sf@users.noreply.github.com> Date: Tue, 9 Apr 2024 16:00:03 -0700 Subject: [PATCH 118/170] feat(build): add halyard-integration module to exercise the just-built docker image (#2144) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(core): move @Bean methods from GoogleProfileReader so separate config class to remove circular dependency error on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: versionsController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/VersionsController.class] ↓ versionsService (field com.netflix.spinnaker.halyard.core.registry.v1.ProfileRegistry com.netflix.spinnaker.halyard.config.services.v1.VersionsService.profileRegistry) ↓ profileRegistry (field com.netflix.spinnaker.halyard.core.registry.v1.GoogleProfileReader com.netflix.spinnaker.halyard.core.registry.v1.ProfileRegistry.googleProfileReader) ┌─────┐ | googleProfileReader (field com.google.api.services.storage.Storage com.netflix.spinnaker.halyard.core.registry.v1.GoogleProfileReader.applicationDefaultGoogleStorage) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(config): remove unused ProviderService variable from EcsAccountValidator to prevent circular dependency startup error: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: haServiceController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/HaServiceController.class] ↓ haServiceService (field private com.netflix.spinnaker.halyard.config.services.v1.ValidateService com.netflix.spinnaker.halyard.config.services.v1.HaServiceService.validateService) ┌─────┐ | validateService (field com.netflix.spinnaker.halyard.config.validate.v1.ValidatorCollection com.netflix.spinnaker.halyard.config.services.v1.ValidateService.validatorCollection) ↑ ↓ | validatorCollection (field private java.util.List com.netflix.spinnaker.halyard.config.validate.v1.ValidatorCollection.validators) ↑ ↓ | ecsAccountValidator (field com.netflix.spinnaker.halyard.config.services.v1.ProviderService com.netflix.spinnaker.halyard.config.validate.v1.providers.ecs.EcsAccountValidator.providerService) ↑ ↓ | providerService (field private com.netflix.spinnaker.halyard.config.services.v1.ValidateService com.netflix.spinnaker.halyard.config.services.v1.ProviderService.validateService) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(config): Use @Lazy with ValidatorCollection.validators to remove circular dependency startup error *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: haServiceController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/HaServiceController.class] ↓ haServiceService (field private com.netflix.spinnaker.halyard.config.services.v1.ValidateService com.netflix.spinnaker.halyard.config.services.v1.HaServiceService.validateService) ┌─────┐ | validateService (field com.netflix.spinnaker.halyard.config.validate.v1.ValidatorCollection com.netflix.spinnaker.halyard.config.services.v1.ValidateService.validatorCollection) ↑ ↓ | validatorCollection (field private java.util.List com.netflix.spinnaker.halyard.config.validate.v1.ValidatorCollection.validators) ↑ ↓ | ecsAccountValidator (field com.netflix.spinnaker.halyard.config.services.v1.AccountService com.netflix.spinnaker.halyard.config.validate.v1.providers.ecs.EcsAccountValidator.accountService) ↑ ↓ | accountService (field private com.netflix.spinnaker.halyard.config.services.v1.ProviderService com.netflix.spinnaker.halyard.config.services.v1.AccountService.providerService) ↑ ↓ | providerService (field private com.netflix.spinnaker.halyard.config.services.v1.ValidateService com.netflix.spinnaker.halyard.config.services.v1.ProviderService.validateService) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(config): add @Lazy to DeploymentService.storageService to fix circular dependency startup error: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: haServiceController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/HaServiceController.class] ↓ haServiceService (field private com.netflix.spinnaker.halyard.config.services.v1.DeploymentService com.netflix.spinnaker.halyard.config.services.v1.HaServiceService.deploymentService) ┌─────┐ | deploymentService (field private com.netflix.spinnaker.halyard.config.services.v1.PersistentStorageService com.netflix.spinnaker.halyard.config.services.v1.DeploymentService.storageService) ↑ ↓ | persistentStorageService (field private com.netflix.spinnaker.halyard.config.services.v1.DeploymentService com.netflix.spinnaker.halyard.config.services.v1.PersistentStorageService.deploymentService) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(dpeloy): add @Lazy annotation to GoogleIgorService.googleDistributedServiceDelegate to fix circular dependency startup error: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleIgorService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleIgorService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleRedisBootstrapService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleRedisBootstrapService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleRedisBootstrapService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleDeckService.googleDistributedServiceDelegate to fix circular dependency error on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleDeckService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDeckService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleEchoService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleEchoService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleEchoService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleConsulServerService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleConsulServerService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleConsulServerService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleFront50Service.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleFront50Service (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleFront50Service.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleClouddriverService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleClouddriverService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleOrcaBootstrapService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleOrcaService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleOrcaService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleOrcaService.googleDistributedServiceDelegate to fix circular dependency issue on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleOrcaService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleOrcaService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleRoscoService.googleDistributedServiceDelegate to fix circular dependency error on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleRoscoService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleRoscoService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleFiatService.googleDistributedServiceDelegate to fix circular dependency error on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleFiatService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleFiatService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleClouddriverBootstrapService.googleDistributedServiceDelegate to fix circular dependency startup error *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleClouddriverBootstrapService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleClouddriverBootstrapService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleRedisService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleRedisService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleRedisService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleGateService.googleDistributedServiceDelegate to fix circular dependency error at startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleGateService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleGateService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleKayentaService.googleDistributedServiceDelegate to fix circular dependency error on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ↑ ↓ | googleKayentaService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleKayentaService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to GoogleVaultServerService.googleDistributedServiceDelegate to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ↓ kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↓ kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↓ kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ┌─────┐ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ↑ ↓ | googleVaultServerService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleVaultServerService.googleDistributedServiceDelegate) ↑ ↓ | googleDistributedServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleMonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.google.GoogleDistributedServiceDelegate.monitoringDaemonService) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): add @Lazy annotation to KubernetesV2ServiceDelegate.monitoringDaemonService to fix circular dependency error on startup *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.clouddriverService) ┌─────┐ | kubernetesV2ClouddriverService (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ClouddriverService.serviceDelegate) ↑ ↓ | kubernetesV2ServiceDelegate (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2ServiceDelegate.monitoringDaemonService) ↑ ↓ | kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * fix(deploy): remove unused SpinnakerMonitoringDaemonService.service property to fix circular dependency error on startup: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: deploymentController defined in URL [jar:file:/opt/halyard/lib/halyard-web.jar!/com/netflix/spinnaker/halyard/controllers/v1/DeploymentController.class] ↓ generateService (field private com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory com.netflix.spinnaker.halyard.deploy.services.v1.GenerateService.serviceProviderFactory) ↓ serviceProviderFactory (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider com.netflix.spinnaker.halyard.deploy.deployment.v1.ServiceProviderFactory.kubectlServiceProvider) ↓ kubectlServiceProvider (field com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubernetesV2MonitoringDaemonService com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.distributed.kubernetes.v2.KubectlServiceProvider.monitoringDaemonService) ┌─────┐ | kubernetesV2MonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) ↑ ↓ | googleMonitoringDaemonService (field java.util.List com.netflix.spinnaker.halyard.deploy.spinnaker.v1.service.SpinnakerMonitoringDaemonService.services) └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. * feat(docker): add HEALTHCHECK to facilitate testing container startup * feat(build): add halyard-integration module to exercise the just-built docker image * feat(gha): run integration test in pr builds multi-arch with --load doesn't work, so add a separate step using the local platform to make an image available for testing. see docker/buildx#59 * feat(gha): run integration test in branch builds * refactor(core): remove unused GoogleProfileReader.createGoogleStorage method --- .github/workflows/build.yml | 13 +++ .github/workflows/pr.yml | 13 +++ Dockerfile.slim | 2 + Dockerfile.ubuntu | 2 + .../config/services/v1/DeploymentService.java | 3 +- .../validate/v1/ValidatorCollection.java | 2 + .../v1/providers/ecs/EcsAccountValidator.java | 3 - .../core/registry/v1/GoogleProfileReader.java | 49 -------- .../v1/GoogleProfileReaderConfig.java | 78 +++++++++++++ .../SpinnakerMonitoringDaemonService.java | 2 - .../GoogleClouddriverBootstrapService.java | 3 +- .../google/GoogleClouddriverService.java | 3 +- .../google/GoogleConsulServerService.java | 3 +- .../distributed/google/GoogleDeckService.java | 3 +- .../distributed/google/GoogleEchoService.java | 3 +- .../distributed/google/GoogleFiatService.java | 3 +- .../google/GoogleFront50Service.java | 3 +- .../distributed/google/GoogleGateService.java | 3 +- .../distributed/google/GoogleIgorService.java | 3 +- .../google/GoogleKayentaService.java | 3 +- .../google/GoogleOrcaBootstrapService.java | 3 +- .../distributed/google/GoogleOrcaService.java | 3 +- .../google/GoogleRedisBootstrapService.java | 3 +- .../google/GoogleRedisService.java | 3 +- .../google/GoogleRoscoService.java | 3 +- .../google/GoogleVaultServerService.java | 3 +- .../v2/KubernetesV2ServiceDelegate.java | 3 +- .../halyard-integration.gradle | 26 +++++ .../halyard/StandaloneContainerTest.java | 108 ++++++++++++++++++ .../src/test/resources/logback.xml | 36 ++++++ settings.gradle | 1 + 31 files changed, 317 insertions(+), 72 deletions(-) create mode 100644 halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReaderConfig.java create mode 100644 halyard-integration/halyard-integration.gradle create mode 100644 halyard-integration/src/test/java/com/netflix/spinnaker/halyard/StandaloneContainerTest.java create mode 100644 halyard-integration/src/test/resources/logback.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6e438c1f5..af85971da4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,6 +37,19 @@ jobs: env: ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} run: ./gradlew build --stacktrace ${{ steps.build_variables.outputs.REPO }}-web:installDist + - name: Build local slim container image for testing + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.slim + load: true + platforms: local + tags: | + "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated" + - name: Test local slim container image + env: + FULL_DOCKER_IMAGE_NAME: "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated" + run: ./gradlew ${{ steps.build_variables.outputs.REPO }}-integration:test - name: Login to GAR # Only run this on repositories in the 'spinnaker' org, not on forks. if: startsWith(github.repository, 'spinnaker/') diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 4a01dca2ab..2b068dfafd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -51,3 +51,16 @@ jobs: tags: | "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:latest-ubuntu" "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-ubuntu" + - name: Build local slim container image for testing + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.slim + load: true + platforms: local + tags: | + "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" + - name: Test local slim container image + env: + FULL_DOCKER_IMAGE_NAME: "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" + run: ./gradlew ${{ steps.build_variables.outputs.REPO }}-integration:test diff --git a/Dockerfile.slim b/Dockerfile.slim index dd5af23566..b2cd71021e 100644 --- a/Dockerfile.slim +++ b/Dockerfile.slim @@ -34,4 +34,6 @@ RUN adduser -S -G spinnaker -u 1000 spinnaker COPY halyard-web/build/install/halyard /opt/halyard USER spinnaker +HEALTHCHECK CMD curl http://localhost:8064/health | grep UP || exit 1 + CMD ["/opt/halyard/bin/halyard"] diff --git a/Dockerfile.ubuntu b/Dockerfile.ubuntu index 22fcbbd3d3..69be710006 100644 --- a/Dockerfile.ubuntu +++ b/Dockerfile.ubuntu @@ -30,4 +30,6 @@ RUN adduser --system --uid 1000 --group spinnaker COPY halyard-web/build/install/halyard /opt/halyard USER spinnaker +HEALTHCHECK CMD curl http://localhost:8064/health | grep UP || exit 1 + CMD ["/opt/halyard/bin/halyard"] diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/DeploymentService.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/DeploymentService.java index d1375b25d7..822c21cd4f 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/DeploymentService.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/DeploymentService.java @@ -29,6 +29,7 @@ import com.netflix.spinnaker.halyard.core.problem.v1.ProblemSet; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; /** @@ -43,7 +44,7 @@ public class DeploymentService { @Autowired private HalconfigParser halconfigParser; - @Autowired private PersistentStorageService storageService; + @Lazy @Autowired private PersistentStorageService storageService; public void setDeploymentConfiguration( String deploymentName, DeploymentConfiguration deploymentConfiguration) { diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/ValidatorCollection.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/ValidatorCollection.java index 5b35555aa8..9632269046 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/ValidatorCollection.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/ValidatorCollection.java @@ -26,6 +26,7 @@ import java.util.List; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; /** @@ -35,6 +36,7 @@ @Slf4j @Component public class ValidatorCollection { + @Lazy @Autowired(required = false) private List validators = new ArrayList<>(); diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java index 661fb12623..f0aba6d8e2 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java @@ -6,7 +6,6 @@ import com.netflix.spinnaker.halyard.config.problem.v1.ConfigProblemSetBuilder; import com.netflix.spinnaker.halyard.config.services.v1.AccountService; import com.netflix.spinnaker.halyard.config.services.v1.ConfigService; -import com.netflix.spinnaker.halyard.config.services.v1.ProviderService; import com.netflix.spinnaker.halyard.core.problem.v1.Problem.Severity; import java.util.List; import java.util.Optional; @@ -15,8 +14,6 @@ @Component public class EcsAccountValidator extends Validator { - @Autowired ProviderService providerService; - @Autowired AccountService accountService; @Autowired ConfigService configService; diff --git a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java index 8ab634737b..9024dc8060 100644 --- a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java +++ b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java @@ -19,22 +19,15 @@ package com.netflix.spinnaker.halyard.core.registry.v1; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.api.client.http.HttpRequestInitializer; -import com.google.api.client.json.JsonFactory; -import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.storage.Storage; -import com.google.api.services.storage.StorageScopes; -import com.netflix.spinnaker.halyard.core.provider.v1.google.GoogleCredentials; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Collections; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.yaml.snakeyaml.Yaml; @@ -56,16 +49,6 @@ private Yaml getYamlParser() { return applicationContext.getBean(Yaml.class); } - @Bean - public Storage applicationDefaultGoogleStorage() { - return createGoogleStorage(true); - } - - @Bean - public Storage unauthenticatedGoogleStorage() { - return createGoogleStorage(false); - } - public InputStream readProfile(String artifactName, String version, String profileName) throws IOException { String path = profilePath(artifactName, version, profileName); @@ -118,36 +101,4 @@ private InputStream getContents(String objectName) throws IOException { return new ByteArrayInputStream(output.toByteArray()); } - - private Storage createGoogleStorage(boolean useApplicationDefaultCreds) { - JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); - String applicationName = "Spinnaker/Halyard"; - HttpRequestInitializer requestInitializer = null; - - if (useApplicationDefaultCreds) { - try { - com.google.auth.oauth2.GoogleCredentials credentials = - com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(); - if (credentials.createScopedRequired()) { - credentials = - credentials.createScoped( - Collections.singleton(StorageScopes.DEVSTORAGE_FULL_CONTROL)); - } - requestInitializer = GoogleCredentials.setHttpTimeout(credentials); - log.info("Loaded application default credential for reading BOMs & profiles."); - } catch (Exception e) { - log.debug( - "No application default credential could be loaded for reading BOMs & profiles. Continuing unauthenticated: {}", - e.getMessage()); - } - } - if (requestInitializer == null) { - requestInitializer = GoogleCredentials.retryRequestInitializer(); - } - - return new Storage.Builder( - GoogleCredentials.buildHttpTransport(), jsonFactory, requestInitializer) - .setApplicationName(applicationName) - .build(); - } } diff --git a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReaderConfig.java b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReaderConfig.java new file mode 100644 index 0000000000..213df27433 --- /dev/null +++ b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReaderConfig.java @@ -0,0 +1,78 @@ +/* + * Copyright 2017 Google, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * + */ + +package com.netflix.spinnaker.halyard.core.registry.v1; + +import com.google.api.client.http.HttpRequestInitializer; +import com.google.api.client.json.JsonFactory; +import com.google.api.client.json.jackson2.JacksonFactory; +import com.google.api.services.storage.Storage; +import com.google.api.services.storage.StorageScopes; +import com.netflix.spinnaker.halyard.core.provider.v1.google.GoogleCredentials; +import java.util.Collections; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConditionalOnProperty("spinnaker.config.input.gcs.enabled") +@Slf4j +public class GoogleProfileReaderConfig { + @Bean + public Storage applicationDefaultGoogleStorage() { + return createGoogleStorage(true); + } + + @Bean + public Storage unauthenticatedGoogleStorage() { + return createGoogleStorage(false); + } + + private Storage createGoogleStorage(boolean useApplicationDefaultCreds) { + JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); + String applicationName = "Spinnaker/Halyard"; + HttpRequestInitializer requestInitializer = null; + + if (useApplicationDefaultCreds) { + try { + com.google.auth.oauth2.GoogleCredentials credentials = + com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(); + if (credentials.createScopedRequired()) { + credentials = + credentials.createScoped( + Collections.singleton(StorageScopes.DEVSTORAGE_FULL_CONTROL)); + } + requestInitializer = GoogleCredentials.setHttpTimeout(credentials); + log.info("Loaded application default credential for reading BOMs & profiles."); + } catch (Exception e) { + log.debug( + "No application default credential could be loaded for reading BOMs & profiles. Continuing unauthenticated: {}", + e.getMessage()); + } + } + if (requestInitializer == null) { + requestInitializer = GoogleCredentials.retryRequestInitializer(); + } + + return new Storage.Builder( + GoogleCredentials.buildHttpTransport(), jsonFactory, requestInitializer) + .setApplicationName(applicationName) + .build(); + } +} diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java index fe86dd5ad5..7c25a6f537 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java @@ -47,8 +47,6 @@ public abstract class SpinnakerMonitoringDaemonService @Autowired MetricRegistryProfileFactoryBuilder metricRegistryProfileFactoryBuilder; - @Autowired List services; - @Override public SpinnakerArtifact getArtifact() { return SpinnakerArtifact.SPINNAKER_MONITORING_DAEMON; diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverBootstrapService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverBootstrapService.java index d585f9b345..749c08a37d 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverBootstrapService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverBootstrapService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ public class GoogleClouddriverBootstrapService extends ClouddriverBootstrapServi final DeployPriority deployPriority = new DeployPriority(6); final boolean requiredToBootstrap = true; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverService.java index 7c41624f14..81c2d7c9ad 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleClouddriverService.java @@ -28,6 +28,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -38,7 +39,7 @@ public class GoogleClouddriverService extends ClouddriverService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getProfiles( diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java index 2f88e1ef43..d35b1e0ca4 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java @@ -30,6 +30,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ @Data public class GoogleConsulServerService extends ConsulServerService implements GoogleDistributedService { - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public String getDefaultInstanceType() { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleDeckService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleDeckService.java index 8f8225f671..608bebf66e 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleDeckService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleDeckService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ public class GoogleDeckService extends DeckService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleEchoService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleEchoService.java index 530782c3be..d902aba7fc 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleEchoService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleEchoService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ public class GoogleEchoService extends EchoService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFiatService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFiatService.java index 74f162e5cf..a3abda27dc 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFiatService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFiatService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ public class GoogleFiatService extends FiatService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFront50Service.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFront50Service.java index da6d14247a..5e4a510bdb 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFront50Service.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleFront50Service.java @@ -28,6 +28,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -38,7 +39,7 @@ public class GoogleFront50Service extends Front50Service final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getProfiles( diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleGateService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleGateService.java index affd5e655c..7809bd829b 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleGateService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleGateService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ public class GoogleGateService extends GateService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleIgorService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleIgorService.java index 6a94c88922..c0df95d26d 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleIgorService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleIgorService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -37,7 +38,7 @@ public class GoogleIgorService extends IgorService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleKayentaService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleKayentaService.java index 8ca5eddaa6..ca3e664806 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleKayentaService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleKayentaService.java @@ -26,6 +26,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -36,7 +37,7 @@ public class GoogleKayentaService extends KayentaService final DeployPriority deployPriority = new DeployPriority(4); final boolean requiredToBootstrap = false; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaBootstrapService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaBootstrapService.java index 3ca2976fbb..fa009596b2 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaBootstrapService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaBootstrapService.java @@ -28,6 +28,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -38,7 +39,7 @@ public class GoogleOrcaBootstrapService extends OrcaBootstrapService final DeployPriority deployPriority = new DeployPriority(6); final boolean requiredToBootstrap = true; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaService.java index fb4f593a96..f20fecd2f9 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleOrcaService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -38,7 +39,7 @@ public class GoogleOrcaService extends OrcaService final boolean requiredToBootstrap = false; final boolean stateful = true; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisBootstrapService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisBootstrapService.java index bbd5022581..1007c8bc44 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisBootstrapService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisBootstrapService.java @@ -30,6 +30,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; @@ -41,7 +42,7 @@ public class GoogleRedisBootstrapService extends RedisBootstrapService final DeployPriority deployPriority = new DeployPriority(8); final boolean requiredToBootstrap = true; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisService.java index f09323df1d..8b23f925ff 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRedisService.java @@ -32,6 +32,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; @@ -42,7 +43,7 @@ public class GoogleRedisService extends RedisService implements GoogleDistribute final DeployPriority deployPriority = new DeployPriority(8); final boolean requiredToBootstrap = true; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public Jedis connectToPrimaryService( diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRoscoService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRoscoService.java index fd74d724f4..ff834f3528 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRoscoService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleRoscoService.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -38,7 +39,7 @@ public class GoogleRoscoService extends RoscoService final boolean requiredToBootstrap = false; final boolean stateful = true; - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public List getSidecars(SpinnakerRuntimeSettings runtimeSettings) { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java index 56108bc1f6..6b0c8bd9fb 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java @@ -29,6 +29,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -36,7 +37,7 @@ @Data public class GoogleVaultServerService extends VaultServerService implements GoogleDistributedService { - @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override public String getDefaultInstanceType() { diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2ServiceDelegate.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2ServiceDelegate.java index d22856915e..6d2674c866 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2ServiceDelegate.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2ServiceDelegate.java @@ -25,6 +25,7 @@ import com.netflix.spinnaker.halyard.deploy.spinnaker.v1.SpinnakerArtifact; import lombok.Getter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component @@ -41,5 +42,5 @@ public String getDockerRegistry(String deploymentName, SpinnakerArtifact artifac @Autowired @Getter ObjectMapper objectMapper; - @Autowired @Getter KubernetesV2MonitoringDaemonService monitoringDaemonService; + @Lazy @Autowired @Getter KubernetesV2MonitoringDaemonService monitoringDaemonService; } diff --git a/halyard-integration/halyard-integration.gradle b/halyard-integration/halyard-integration.gradle new file mode 100644 index 0000000000..c860d5c9da --- /dev/null +++ b/halyard-integration/halyard-integration.gradle @@ -0,0 +1,26 @@ +dependencies { + testImplementation "com.fasterxml.jackson.core:jackson-databind" + testImplementation "org.assertj:assertj-core" + testImplementation "org.junit.jupiter:junit-jupiter-api" + testImplementation "org.slf4j:slf4j-api" + testImplementation "org.testcontainers:testcontainers" + testImplementation "org.testcontainers:junit-jupiter" + testImplementation "org.testcontainers:mysql" + testRuntimeOnly "ch.qos.logback:logback-classic" + testRuntimeOnly "mysql:mysql-connector-java" +} + +test.configure { + def fullDockerImageName = System.getenv('FULL_DOCKER_IMAGE_NAME') + onlyIf("there is a docker image to test") { + fullDockerImageName != null && fullDockerImageName.trim() != '' + } +} + +test { + // So stdout and stderr from the just-built container are available in CI + testLogging.showStandardStreams = true + + // Run the tests when the docker image changes + inputs.property 'fullDockerImageName', System.getenv('FULL_DOCKER_IMAGE_NAME') +} diff --git a/halyard-integration/src/test/java/com/netflix/spinnaker/halyard/StandaloneContainerTest.java b/halyard-integration/src/test/java/com/netflix/spinnaker/halyard/StandaloneContainerTest.java new file mode 100644 index 0000000000..435be1c124 --- /dev/null +++ b/halyard-integration/src/test/java/com/netflix/spinnaker/halyard/StandaloneContainerTest.java @@ -0,0 +1,108 @@ +/* + * Copyright 2024 Salesforce, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.netflix.spinnaker.halyard; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.Map; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.output.Slf4jLogConsumer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; + +@Testcontainers +class StandaloneContainerTest { + + private static final Logger logger = LoggerFactory.getLogger(StandaloneContainerTest.class); + + private static GenericContainer halyardContainer; + + @BeforeAll + static void setupOnce() throws Exception { + String fullDockerImageName = System.getenv("FULL_DOCKER_IMAGE_NAME"); + + // Skip the tests if there's no docker image. This allows gradlew build to work. + assumeTrue(fullDockerImageName != null); + + DockerImageName dockerImageName = DockerImageName.parse(fullDockerImageName); + + halyardContainer = + new GenericContainer(dockerImageName) + .withExposedPorts(8064) + .waitingFor(Wait.forHealthcheck()) + .withEnv("SPRING_APPLICATION_JSON", getSpringApplicationJson()); + + Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger); + halyardContainer.start(); + halyardContainer.followOutput(logConsumer); + } + + private static String getSpringApplicationJson() throws JsonProcessingException { + Map properties = Map.of(); + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(properties); + } + + @AfterAll + static void cleanupOnce() { + if (halyardContainer != null) { + halyardContainer.stop(); + } + } + + @BeforeEach + void init(TestInfo testInfo) { + System.out.println("--------------- Test " + testInfo.getDisplayName()); + } + + @Test + void testHealthCheck() throws Exception { + // hit an arbitrary endpoint + HttpRequest request = + HttpRequest.newBuilder() + .uri( + new URI( + "http://" + + halyardContainer.getHost() + + ":" + + halyardContainer.getFirstMappedPort() + + "/health")) + .GET() + .build(); + + HttpClient client = HttpClient.newHttpClient(); + + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + assertThat(response).isNotNull(); + logger.info("response: {}, {}", response.statusCode(), response.body()); + assertThat(response.statusCode()).isEqualTo(200); + } +} diff --git a/halyard-integration/src/test/resources/logback.xml b/halyard-integration/src/test/resources/logback.xml new file mode 100644 index 0000000000..d0573f0bfc --- /dev/null +++ b/halyard-integration/src/test/resources/logback.xml @@ -0,0 +1,36 @@ + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle index 4cad784879..bcb5f29644 100644 --- a/settings.gradle +++ b/settings.gradle @@ -29,6 +29,7 @@ include 'halyard-cli' include 'halyard-config' include 'halyard-core' include 'halyard-deploy' +include 'halyard-integration' include 'halyard-proto' include 'halyard-web' From c7b731cc93626acc17cd0bd308f03b25d5afe13f Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Tue, 14 Feb 2023 13:28:05 +0530 Subject: [PATCH 119/170] Create Preserve-commits.yml --- .github/workflows/Preserve-commits.yml | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/Preserve-commits.yml diff --git a/.github/workflows/Preserve-commits.yml b/.github/workflows/Preserve-commits.yml new file mode 100644 index 0000000000..c96620c756 --- /dev/null +++ b/.github/workflows/Preserve-commits.yml @@ -0,0 +1,30 @@ +name: GitHub Actions For Commit Preserve +run-name: ${{ github.actor }} is testing out GitHub Actions + +on: + pull_request: + types: + - closed +jobs: + Explore-GitHub-Actions: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v3 + - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." + - name: List files in the repository + run: | + # ls ${{ github.workspace }} + git branch + touch Dev_commits + git config --global user.email "yugaa22@gmail.com" + git config --global user.name "yugaa22" + git log -1 | grep commit | awk '{print $2}' >> Dev_commits + git add . + git commit -m "Developper_commits" + git push + - run: echo "🍏 This job's status is ${{ job.status }}." From 8a034907a904cf4b7d73c6e76aba3ad818139a74 Mon Sep 17 00:00:00 2001 From: SheetalAtre Date: Wed, 12 Apr 2023 21:26:42 +0530 Subject: [PATCH 120/170] changes for ubi8.7 java17 build from repo : https://github.com/SusmithaGundu/halyard-oes --- build.gradle | 10 +- gradle.properties | 12 +- halyard-backup/halyard-backup.gradle | 3 +- halyard-cli/halyard-cli.gradle | 8 +- halyard-config/halyard-config.gradle | 60 +++--- .../v1/HalconfigDirectoryStructure.java | 7 +- .../error/v1/ConfigNotFoundException.java | 2 +- .../config/model/v1/node/Telemetry.java | 4 +- .../OraclePersistentStore.java | 4 +- .../v1/ArtifactTemplateServiceSpec.groovy | 176 +++++++++--------- .../services/v1/PluginServiceSpec.groovy | 2 +- halyard-core/halyard-core.gradle | 21 ++- .../halyard/core/error/v1/HalException.java | 2 +- .../v1/LocalDiskProfileReaderSpec.groovy | 10 +- halyard-deploy/halyard-deploy.gradle | 26 ++- .../DistributedServiceProvider.java | 4 +- .../google/GoogleProviderUtils.java | 14 +- halyard-web/halyard-web.gradle | 5 +- .../halyard/config/v1/SecurityConfig.java | 7 +- .../errors/v1/HalconfigExceptionHandler.java | 2 +- settings.gradle | 12 ++ 21 files changed, 229 insertions(+), 162 deletions(-) diff --git a/build.gradle b/build.gradle index caadae5360..4b0f6150d4 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - plugins { id 'io.spinnaker.project' version "$spinnakerGradleVersion" apply false id 'com.google.protobuf' version "0.8.12" apply false @@ -21,6 +20,10 @@ plugins { allprojects { apply plugin: "io.spinnaker.project" + repositories {mavenCentral()} + tasks.withType(Copy).all { + duplicatesStrategy 'exclude' + } } subprojects { @@ -46,7 +49,9 @@ subprojects { } dependencies { - implementation enforcedPlatform("io.spinnaker.kork:kork-bom:$korkVersion") + implementation enforcedPlatform("io.spinnaker.kork:kork-bom:$korkVersion"){ + exclude group: 'org.apache.groovy', module: 'groovy' + } annotationProcessor platform("io.spinnaker.kork:kork-bom:$korkVersion") annotationProcessor "org.projectlombok:lombok" @@ -54,6 +59,7 @@ subprojects { testAnnotationProcessor "org.projectlombok:lombok" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine" } + } defaultTasks ':halyard-web:run' diff --git a/gradle.properties b/gradle.properties index 0edb3421be..4ade2fcd2e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ -korkVersion=7.224.0 -clouddriverVersion=5.84.0 -fiatVersion=1.45.0 -front50Version=2.31.0 +clouddriverVersion=1-0-SNAPSHOT +fiatVersion=1-0-SNAPSHOT +korkVersion=1-0-SNAPSHOT +front50Version=1-0-SNAPSHOT org.gradle.parallel=true -spinnakerGradleVersion=8.32.1 -targetJava11=true +spinnakerGradleVersion=1-0-SNAPSHOT +#targetJava11=true # To enable a composite reference to a project, set the # project property `'Composite=true'`. diff --git a/halyard-backup/halyard-backup.gradle b/halyard-backup/halyard-backup.gradle index 9d849bbe45..e217164e1a 100644 --- a/halyard-backup/halyard-backup.gradle +++ b/halyard-backup/halyard-backup.gradle @@ -6,13 +6,12 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // TODO(lwander) Move to spinnaker-dependencies implementation 'com.google.apis:google-api-services-cloudkms:v1-rev8-1.22.0' - implementation 'com.google.apis:google-api-services-storage' + implementation 'com.google.apis:google-api-services-storage:v1-rev141-1.25.0' implementation 'com.google.auth:google-auth-library-oauth2-http' implementation 'org.apache.commons:commons-lang3' implementation 'commons-io:commons-io' implementation 'org.apache.commons:commons-compress:1.20' implementation 'io.fabric8:kubernetes-client:4.1.1' - implementation 'org.codehaus.groovy:groovy' implementation project(':halyard-config') implementation project(':halyard-core') diff --git a/halyard-cli/halyard-cli.gradle b/halyard-cli/halyard-cli.gradle index 7d29775da6..0bd779b488 100644 --- a/halyard-cli/halyard-cli.gradle +++ b/halyard-cli/halyard-cli.gradle @@ -1,3 +1,6 @@ +apply plugin: 'java-library' +apply plugin: 'groovy' + dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' @@ -8,14 +11,13 @@ dependencies { implementation 'org.apache.commons:commons-lang3' implementation 'org.apache.commons:commons-text:1.10.0' implementation 'ch.qos.logback:logback-classic' - implementation 'com.squareup.retrofit:retrofit' - implementation 'com.squareup.retrofit:converter-jackson' + implementation 'com.squareup.retrofit:retrofit:1.9.0' + implementation 'com.squareup.retrofit:converter-jackson:1.9.0' implementation 'com.fasterxml.jackson.core:jackson-annotations' implementation 'com.fasterxml.jackson.core:jackson-core' implementation 'com.fasterxml.jackson.core:jackson-databind' implementation 'org.aspectj:aspectjweaver' implementation 'org.yaml:snakeyaml:1.24' - implementation 'org.codehaus.groovy:groovy' implementation 'com.beust:jcommander:1.81' implementation 'org.nibor.autolink:autolink:0.10.0' diff --git a/halyard-config/halyard-config.gradle b/halyard-config/halyard-config.gradle index 32aa8b05a0..e6394ccaef 100644 --- a/halyard-config/halyard-config.gradle +++ b/halyard-config/halyard-config.gradle @@ -4,13 +4,27 @@ dependencies { // TODO(plumpy): remove version once added to kork implementation "com.google.cloud:google-cloud-storage:1.108.0" - implementation "io.spinnaker.clouddriver:clouddriver-api:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-docker:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-google:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-appengine:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-azure:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-cloudfoundry:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-security:$clouddriverVersion" + implementation("io.spinnaker.clouddriver:clouddriver-api:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-docker:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-google:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-appengine:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-azure:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-cloudfoundry:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-security:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } implementation "io.spinnaker.fiat:fiat-core:$fiatVersion" implementation "io.spinnaker.front50:front50-core:$front50Version" implementation "io.spinnaker.front50:front50-gcs:$front50Version" @@ -22,7 +36,7 @@ dependencies { implementation "io.spinnaker.kork:kork-cloud-config-server" implementation 'com.amazonaws:aws-java-sdk-core:1.11.534' implementation 'com.amazonaws:aws-java-sdk-s3:1.11.534' - implementation 'com.google.apis:google-api-services-compute' + implementation 'com.google.apis:google-api-services-compute:alpha-rev20200526-1.30.9' implementation 'com.google.apis:google-api-services-appengine:v1-rev92-1.25.0' implementation "com.azure.resourcemanager:azure-resourcemanager:2.19.0" implementation "com.azure:azure-storage-blob:12.19.1" @@ -32,23 +46,23 @@ dependencies { implementation 'io.fabric8:kubernetes-client' implementation "com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0" - implementation 'com.squareup.retrofit:retrofit' - implementation "com.squareup.retrofit:converter-jackson" - implementation "com.squareup.retrofit2:retrofit" - implementation "com.squareup.retrofit2:converter-jackson" + implementation 'com.squareup.retrofit:retrofit:1.9.0' + implementation "com.squareup.retrofit:converter-jackson:1.9.0" + implementation "com.squareup.retrofit2:retrofit:2.8.1" + implementation "com.squareup.retrofit2:converter-jackson:2.8.1" implementation 'com.jcraft:jsch' - implementation 'de.huxhorn.sulky:de.huxhorn.sulky.ulid' - implementation "net.logstash.logback:logstash-logback-encoder" - implementation "javax.validation:validation-api" + implementation 'de.huxhorn.sulky:de.huxhorn.sulky.ulid:8.2.0' + implementation "net.logstash.logback:logstash-logback-encoder:4.11" + implementation "jakarta.validation:jakarta.validation-api:3.0.2" // TODO: add clouddriverDCOS once that's merged implementation project(':halyard-core') - - testImplementation 'org.assertj:assertj-core' - testImplementation 'org.junit.jupiter:junit-jupiter-api' - testImplementation 'org.spockframework:spock-core' - testImplementation 'org.springframework:spring-test' - testImplementation 'org.codehaus.groovy:groovy' - testRuntimeOnly 'net.bytebuddy:byte-buddy' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + api("com.google.apis:google-api-services-compute:alpha-rev20200526-1.30.9") + testImplementation 'org.assertj:assertj-core' + testImplementation 'org.junit.jupiter:junit-jupiter-api' + testImplementation 'org.junit.jupiter:junit-jupiter-params' + testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5' + testImplementation 'org.springframework:spring-test' + testRuntimeOnly 'net.bytebuddy:byte-buddy' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' } diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/HalconfigDirectoryStructure.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/HalconfigDirectoryStructure.java index cefd04f4dd..f16375b109 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/HalconfigDirectoryStructure.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/HalconfigDirectoryStructure.java @@ -43,7 +43,12 @@ public String getHalconfigDirectory() { } public String getHalconfigPath() { - return normalizePath(Paths.get(getHalconfigDirectory(), "config").toString()); + String dir = getHalconfigDirectory(); + if (dir != null) { + String path = Paths.get(dir, "config").toString(); + return normalizePath(path); + } + return "/config"; } public Path getLogsPath(String deploymentName) { diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/error/v1/ConfigNotFoundException.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/error/v1/ConfigNotFoundException.java index 71e443f91a..9aed2c632e 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/error/v1/ConfigNotFoundException.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/error/v1/ConfigNotFoundException.java @@ -19,7 +19,7 @@ import com.netflix.spinnaker.halyard.core.error.v1.HalException; import com.netflix.spinnaker.halyard.core.problem.v1.Problem; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import lombok.Getter; /** diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/Telemetry.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/Telemetry.java index 2971668c7e..10c900b694 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/Telemetry.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/node/Telemetry.java @@ -19,7 +19,9 @@ import lombok.Data; import lombok.EqualsAndHashCode; -/** @deprecated Use {@link Stats} instead. */ +/** + * @deprecated Use {@link Stats} instead. + */ @Data @EqualsAndHashCode(callSuper = false) @Deprecated diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/persistentStorage/OraclePersistentStore.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/persistentStorage/OraclePersistentStore.java index aa185f7f3b..1c43e7d54a 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/persistentStorage/OraclePersistentStore.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/model/v1/persistentStorage/OraclePersistentStore.java @@ -14,8 +14,8 @@ import com.netflix.spinnaker.halyard.config.model.v1.node.PersistentStore; import com.netflix.spinnaker.halyard.config.model.v1.node.Secret; import com.netflix.spinnaker.halyard.config.model.v1.node.SecretFile; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/ArtifactTemplateServiceSpec.groovy b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/ArtifactTemplateServiceSpec.groovy index f82220aaf7..fe69b51f3c 100644 --- a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/ArtifactTemplateServiceSpec.groovy +++ b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/ArtifactTemplateServiceSpec.groovy @@ -20,25 +20,25 @@ import com.netflix.spinnaker.halyard.config.error.v1.ConfigNotFoundException import spock.lang.Specification class ArtifactTemplateServiceSpec extends Specification { - String DEPLOYMENT = "default" - HalconfigParserMocker mocker = new HalconfigParserMocker() - - LookupService getMockLookupService(String config) { - def lookupService = new LookupService() - lookupService.parser = mocker.mockHalconfigParser(config) - return lookupService - } - - ArtifactTemplateService makeArtifactTemplateService(String config) { - def lookupService = getMockLookupService(config) - def deploymentService = new DeploymentService() - deploymentService.lookupService = lookupService - new ArtifactTemplateService(lookupService, new ValidateService(), deploymentService) - } - - def "load an existing artifact template node"() { - setup: - String config = """ + String DEPLOYMENT = "default" + HalconfigParserMocker mocker = new HalconfigParserMocker() + + LookupService getMockLookupService(String config) { + def lookupService = new LookupService() + lookupService.parser = mocker.mockHalconfigParser(config) + return lookupService + } + + ArtifactTemplateService makeArtifactTemplateService(String config) { + def lookupService = getMockLookupService(config) + def deploymentService = new DeploymentService() + deploymentService.lookupService = lookupService + new ArtifactTemplateService(lookupService, new ValidateService(), deploymentService) + } + + def "load an existing artifact template node"() { + setup: + String config = """ halyardVersion: 1 currentDeployment: $DEPLOYMENT deploymentConfigurations: @@ -50,35 +50,35 @@ deploymentConfigurations: - name: test-template templatePath: /home/user/test-template.jinja """ - def artifactTemplateService = makeArtifactTemplateService(config) + def artifactTemplateService = makeArtifactTemplateService(config) - when: - def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) + when: + def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) - then: - result != null - result.size() == 1 - result[0].getName() == "test-template" - result[0].getTemplatePath() == "/home/user/test-template.jinja" + then: + result != null + result.size() == 1 + result[0].getName() == "test-template" + result[0].getTemplatePath() == "/home/user/test-template.jinja" - when: - result = artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") + when: + result = artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") - then: - result != null - result.getName() == "test-template" - result.getTemplatePath() == "/home/user/test-template.jinja" + then: + result != null + result.getName() == "test-template" + result.getTemplatePath() == "/home/user/test-template.jinja" - when: - artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "non-existent-template") + when: + artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "non-existent-template") - then: - thrown(ConfigNotFoundException) - } + then: + thrown(ConfigNotFoundException) + } - def "no error if templates is empty"() { - setup: - String config = """ + def "no error if templates is empty"() { + setup: + String config = """ halyardVersion: 1 currentDeployment: $DEPLOYMENT deploymentConfigurations: @@ -88,25 +88,25 @@ deploymentConfigurations: artifacts: templates: [] """ - def artifactTemplateService = makeArtifactTemplateService(config) + def artifactTemplateService = makeArtifactTemplateService(config) - when: - def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) + when: + def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) - then: - result != null - result.size() == 0 + then: + result != null + result.size() == 0 - when: - artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") + when: + artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") - then: - thrown(ConfigNotFoundException) - } + then: + thrown(ConfigNotFoundException) + } - def "no error if templates is missing"() { - setup: - String config = """ + def "no error if templates is missing"() { + setup: + String config = """ halyardVersion: 1 currentDeployment: $DEPLOYMENT deploymentConfigurations: @@ -115,25 +115,25 @@ deploymentConfigurations: providers: null artifacts: """ - def artifactTemplateService = makeArtifactTemplateService(config) + def artifactTemplateService = makeArtifactTemplateService(config) - when: - def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) + when: + def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) - then: - result != null - result.size() == 0 + then: + result != null + result.size() == 0 - when: - artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") + when: + artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") - then: - thrown(ConfigNotFoundException) - } + then: + thrown(ConfigNotFoundException) + } - def "multiple templates are correctly parsed"() { - setup: - String config = """ + def "multiple templates are correctly parsed"() { + setup: + String config = """ halyardVersion: 1 currentDeployment: $DEPLOYMENT deploymentConfigurations: @@ -147,29 +147,29 @@ deploymentConfigurations: - name: test-template-2 templatePath: /home/user/test-template-2.jinja """ - def artifactTemplateService = makeArtifactTemplateService(config) + def artifactTemplateService = makeArtifactTemplateService(config) - when: - def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) + when: + def result = artifactTemplateService.getAllArtifactTemplates(DEPLOYMENT) - then: - result != null - result.size() == 2 + then: + result != null + result.size() == 2 - when: - result = artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") + when: + result = artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template") - then: - result != null - result.getName() == "test-template" - result.getTemplatePath() == "/home/user/test-template.jinja" + then: + result != null + result.getName() == "test-template" + result.getTemplatePath() == "/home/user/test-template.jinja" - when: - result = artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template-2") + when: + result = artifactTemplateService.getArtifactTemplate(DEPLOYMENT, "test-template-2") - then: - result != null - result.getName() == "test-template-2" - result.getTemplatePath() == "/home/user/test-template-2.jinja" - } + then: + result != null + result.getName() == "test-template-2" + result.getTemplatePath() == "/home/user/test-template-2.jinja" + } } diff --git a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/PluginServiceSpec.groovy b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/PluginServiceSpec.groovy index de17733638..b135eae285 100644 --- a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/PluginServiceSpec.groovy +++ b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/PluginServiceSpec.groovy @@ -98,7 +98,7 @@ deploymentConfigurations: version: 1 providers: null spinnaker: - extensibility: + extensibility: plugins: {} """ def pluginService = makePluginService(config) diff --git a/halyard-core/halyard-core.gradle b/halyard-core/halyard-core.gradle index dd1bae32ad..d1ed2975f7 100644 --- a/halyard-core/halyard-core.gradle +++ b/halyard-core/halyard-core.gradle @@ -1,3 +1,6 @@ +apply plugin: 'java-library' +apply plugin: 'groovy' + dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' @@ -5,21 +8,27 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-gradle-plugin:1.4.7.RELEASE' - implementation "io.spinnaker.clouddriver:clouddriver-aws:$clouddriverVersion" + implementation("io.spinnaker.clouddriver:clouddriver-aws:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } implementation 'io.spinnaker.kork:kork-secrets' implementation 'io.spinnaker.kork:kork-secrets-aws' implementation 'io.spinnaker.kork:kork-secrets-gcp' - implementation 'com.google.apis:google-api-services-storage' + implementation 'com.google.apis:google-api-services-storage:+'//v1-rev141-1.25.0' implementation 'com.google.api.grpc:grpc-google-common-protos:1.0.5' implementation 'com.google.auth:google-auth-library-oauth2-http' - implementation 'org.apache.commons:commons-exec' + implementation 'org.apache.commons:commons-exec:+'//1.3' implementation 'org.apache.commons:commons-compress:1.20' implementation 'commons-io:commons-io' - implementation 'io.reactivex:rxjava' + implementation 'io.reactivex:rxjava:+'//1.3.8' implementation 'com.hubspot.jinjava:jinjava:2.2.3' - implementation 'org.spockframework:spock-spring' + implementation('org.spockframework:spock-spring:1.1-groovy-2.4'){ + exclude group: 'org.apache.groovy', module: 'groovy' + } + implementation 'org.apache.groovy:groovy:4.0.9' implementation 'org.yaml:snakeyaml:1.24' - + implementation 'com.google.http-client:google-http-client-jackson2:+' + implementation 'com.google.apis:google-api-services-compute:+' //alpha-rev20200526-1.30.9") testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework:spring-test' } diff --git a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/error/v1/HalException.java b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/error/v1/HalException.java index bab1624bcb..e1b6d21b91 100644 --- a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/error/v1/HalException.java +++ b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/error/v1/HalException.java @@ -20,10 +20,10 @@ import com.netflix.spinnaker.halyard.core.problem.v1.Problem; import com.netflix.spinnaker.halyard.core.problem.v1.ProblemBuilder; import com.netflix.spinnaker.halyard.core.problem.v1.ProblemSet; +import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import javax.servlet.http.HttpServletResponse; import lombok.Getter; /** This is the exception class that needs to be thrown by all validators. */ diff --git a/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy b/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy index a48d76a5f7..194e55d462 100644 --- a/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy +++ b/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.netflix.spinnaker.halyard.config.model.v1 +package com.netflix.spinnaker.halyard.core.resource.v1 import com.netflix.spinnaker.halyard.core.error.v1.HalException import com.netflix.spinnaker.halyard.core.problem.v1.Problem @@ -22,6 +22,9 @@ import org.apache.commons.compress.archivers.ArchiveException import org.apache.commons.compress.archivers.ArchiveStreamFactory import org.apache.commons.compress.archivers.tar.TarArchiveInputStream import org.apache.commons.io.IOUtils +import org.junit.jupiter.api.extension.ExtendWith +import org.springframework.context.annotation.Import +import org.springframework.test.context.ContextConfiguration import spock.lang.Specification import com.netflix.spinnaker.halyard.core.registry.v1.ProfileRegistry @@ -34,10 +37,9 @@ import com.fasterxml.jackson.databind.ObjectMapper import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest -import java.io.File - -@SpringBootTest(classes = [ProfileRegistry.class, GoogleProfileReader.class, GitProfileReader.class, LocalDiskProfileReader.class, Yaml.class, ObjectMapper.class, String.class]) +//@SpringBootTest(classes = [ProfileRegistry.class, GoogleProfileReader.class, GitProfileReader.class, LocalDiskProfileReader.class, Yaml.class, ObjectMapper.class, String.class]) +@ContextConfiguration(classes = [ProfileRegistry.class, GoogleProfileReader.class, GitProfileReader.class, LocalDiskProfileReader.class, Yaml.class, ObjectMapper.class, String.class]) class LocalDiskProfileReaderSpec extends Specification { @Autowired diff --git a/halyard-deploy/halyard-deploy.gradle b/halyard-deploy/halyard-deploy.gradle index 1ecd147ae1..ccc5803003 100644 --- a/halyard-deploy/halyard-deploy.gradle +++ b/halyard-deploy/halyard-deploy.gradle @@ -5,25 +5,31 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-web' implementation "io.spinnaker.clouddriver:clouddriver-api:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-core:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-google:$clouddriverVersion" - implementation "io.spinnaker.clouddriver:clouddriver-security:$clouddriverVersion" + implementation("io.spinnaker.clouddriver:clouddriver-core:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-google:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } + implementation("io.spinnaker.clouddriver:clouddriver-security:$clouddriverVersion"){ + exclude group: 'org.codehaus.groovy', module: 'groovy' + } implementation "io.spinnaker.kork:kork-secrets" implementation "io.spinnaker.kork:kork-cloud-config-server" - implementation 'com.netflix.frigga:frigga' - implementation 'com.google.apis:google-api-services-storage' - implementation 'com.google.apis:google-api-services-compute' + implementation 'com.netflix.frigga:frigga:0.24.0' + implementation 'com.google.apis:google-api-services-storage:+' // v1-rev141-1.25.0' + implementation 'com.google.apis:google-api-services-compute:+' //alpha-rev20200526-1.30.9' implementation 'com.amazonaws:aws-java-sdk-core:1.11.534' implementation 'org.apache.commons:commons-compress:1.20' implementation 'org.apache.commons:commons-lang3' implementation 'commons-io:commons-io' implementation 'com.squareup.retrofit:retrofit' - implementation 'com.squareup.okhttp:okhttp' - + implementation 'com.squareup.okhttp:okhttp:2.7.5' + implementation 'org.apache.groovy:groovy:4.0.9' implementation "com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0" implementation 'io.fabric8:kubernetes-client' implementation 'redis.clients:jedis' - implementation 'org.codehaus.groovy:groovy' + implementation project(':halyard-config') implementation project(':halyard-core') @@ -32,5 +38,5 @@ dependencies { testImplementation 'org.spockframework:spock-core' testImplementation 'org.springframework:spring-test' testRuntimeOnly 'net.bytebuddy:byte-buddy' - testRuntimeOnly 'org.objenesis:objenesis' + testRuntimeOnly 'org.objenesis:objenesis:2.5.1' } diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/DistributedServiceProvider.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/DistributedServiceProvider.java index 17f0f34235..0371b6a29c 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/DistributedServiceProvider.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/DistributedServiceProvider.java @@ -51,7 +51,9 @@ public DistributedService getDeployableService( } } - /** @return the highest priority services first. */ + /** + * @return the highest priority services first. + */ public List getPrioritizedDistributedServices( List serviceTypes) { List result = diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleProviderUtils.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleProviderUtils.java index 1d78ec13b0..4f94e92926 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleProviderUtils.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleProviderUtils.java @@ -40,6 +40,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.net.ServerSocket; import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; @@ -58,7 +59,6 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.client.utils.URIBuilder; -import org.springframework.util.SocketUtils; @Slf4j class GoogleProviderUtils { @@ -168,6 +168,16 @@ public static String getSshPublicKey() { } } + private static Integer findRandomOpenPortOnAllLocalInterfaces() { + ServerSocket socket; + try { + socket = new ServerSocket(0); + } catch (IOException e) { + throw new HalException(FATAL, "cannot find a random port"); + } + return socket.getLocalPort(); + } + private static Proxy openSshTunnel(String ip, int port, String keyFile) throws InterruptedException { JobExecutor jobExecutor = DaemonTaskHandler.getJobExecutor(); @@ -188,7 +198,7 @@ private static Proxy openSshTunnel(String ip, int port, String keyFile) } } - int localPort = SocketUtils.findAvailableTcpPort(); + int localPort = findRandomOpenPortOnAllLocalInterfaces(); command.clear(); command.add("ssh"); diff --git a/halyard-web/halyard-web.gradle b/halyard-web/halyard-web.gradle index 3fe301fccf..a677975cc0 100644 --- a/halyard-web/halyard-web.gradle +++ b/halyard-web/halyard-web.gradle @@ -1,4 +1,6 @@ apply plugin: 'io.spinnaker.package' +apply plugin: 'java-library' +apply plugin: 'groovy' mainClassName = 'com.netflix.spinnaker.halyard.Main' @@ -24,12 +26,11 @@ dependencies { implementation 'org.apache.commons:commons-lang3' implementation 'com.squareup.retrofit:retrofit' implementation 'io.github.lognet:grpc-spring-boot-starter:2.4.4' - implementation 'org.codehaus.groovy:groovy' implementation "io.spinnaker.kork:kork-web" implementation "io.spinnaker.kork:kork-cloud-config-server" implementation "io.spinnaker.kork:kork-config" runtimeOnly "io.spinnaker.kork:kork-actuator" - + implementation "jakarta.validation:jakarta.validation-api:3.0.2" implementation project(':halyard-backup') // halyard-cli is required as a dependency even though it is not used directly by halyard-web // because the halyard installation only install halyard-web but the CLI expects to find the diff --git a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/SecurityConfig.java b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/SecurityConfig.java index 36bd595a7d..3989b16562 100644 --- a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/SecurityConfig.java +++ b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/SecurityConfig.java @@ -18,13 +18,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { - - @Override +public class SecurityConfig { public void configure(HttpSecurity http) throws Exception { - http.csrf().disable().authorizeRequests().anyRequest().permitAll(); + http.csrf().disable().authorizeHttpRequests().anyRequest().permitAll(); } } diff --git a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/errors/v1/HalconfigExceptionHandler.java b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/errors/v1/HalconfigExceptionHandler.java index 3431e57412..003c93f61d 100644 --- a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/errors/v1/HalconfigExceptionHandler.java +++ b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/errors/v1/HalconfigExceptionHandler.java @@ -18,7 +18,7 @@ import com.netflix.spinnaker.halyard.core.DaemonResponse; import com.netflix.spinnaker.halyard.core.error.v1.HalException; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; diff --git a/settings.gradle b/settings.gradle index bcb5f29644..b494c57701 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,6 +14,16 @@ * limitations under the License. */ +if (spinnakerGradleVersion.endsWith('-SNAPSHOT')) { + pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } + } +} + ['clouddriver', 'fiat', 'front50', 'kork'].each { prj -> String propName = "${prj}Composite" String projectPath = "../$prj" @@ -22,6 +32,8 @@ } } +enableFeaturePreview("VERSION_ORDERING_V2") + rootProject.name="halyard" include 'halyard-backup' From ca2519fd86f644494383b85e3ee1160e33dbad5b Mon Sep 17 00:00:00 2001 From: SusmithaGundu Date: Thu, 13 Apr 2023 20:44:35 +0530 Subject: [PATCH 121/170] added dockerfile --- docker/ubi8/Dockerfile | 48 ++++++++++++++++++++++++++++ halyard-config/halyard-config.gradle | 2 +- halyard-web/halyard-web.gradle | 8 +++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 docker/ubi8/Dockerfile diff --git a/docker/ubi8/Dockerfile b/docker/ubi8/Dockerfile new file mode 100644 index 0000000000..f906063777 --- /dev/null +++ b/docker/ubi8/Dockerfile @@ -0,0 +1,48 @@ +FROM quay.io/opsmxpublic/ubifips:8.7 +MAINTAINER sig-platform@spinnaker.io +LABEL name='halyard' +LABEL maintainer='info@opsmx.io' +LABEL release=1 +LABEL version='1.28.4' +LABEL summary='Red Hat certified Open Enterprise Spinnaker ubi8 container image for clouddriver' +LABEL description='Certified Open Enterprise Spinnaker is an Enterprise grade, Red Hat certified and OpsMx supported release of the popular and critically acclaimed Continuous Delivery platform Spinnaker' +LABEL vendor='OpsMx' +COPY halyard-web/build/install/halyard /opt/halyard + +ENV KUBECTL_VERSION v1.22.0 + + +#ENV KUBECTL_RELEASE=1.15.10 +#ENV AWS_BINARY_RELEASE_DATE=2020-02-22 +#ENV AWS_CLI_VERSION=1.18.18 + +#RUN apk --no-cache add --update \ +# bash \ +# curl \ +# openjdk11-jre \ +# openssl \ +# py-pip \ +# python \ +# && pip install --upgrade awscli==${AWS_CLI_VERSION} \ +# && apk --purge del \ +# py-pip \ +# && rm -rf /var/cache/apk + +RUN yum -y install bash unzip wget unzip procps java-17-openjdk-devel python2 vim net-tools curl git +RUN yum -y update + + + +RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ + echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ + chmod +x /usr/local/bin/hal + + + +#RUN curl -f -LO --retry 3 --retry-delay 3 https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_RELEASE}/bin/linux/${TARGETARCH}/kubectl && \ +# chmod +x ./kubectl && \ +# mv ./kubectl /usr/local/bin/kubectl + +RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \ + chmod +x kubectl && \ + mv ./kubectl /usr/local/bin/kubectl \ No newline at end of file diff --git a/halyard-config/halyard-config.gradle b/halyard-config/halyard-config.gradle index e6394ccaef..f7f99e2185 100644 --- a/halyard-config/halyard-config.gradle +++ b/halyard-config/halyard-config.gradle @@ -50,7 +50,7 @@ dependencies { implementation "com.squareup.retrofit:converter-jackson:1.9.0" implementation "com.squareup.retrofit2:retrofit:2.8.1" implementation "com.squareup.retrofit2:converter-jackson:2.8.1" - implementation 'com.jcraft:jsch' + implementation 'com.jcraft:jsch:0.1.55' implementation 'de.huxhorn.sulky:de.huxhorn.sulky.ulid:8.2.0' implementation "net.logstash.logback:logstash-logback-encoder:4.11" implementation "jakarta.validation:jakarta.validation-api:3.0.2" diff --git a/halyard-web/halyard-web.gradle b/halyard-web/halyard-web.gradle index a677975cc0..40bbc96d3f 100644 --- a/halyard-web/halyard-web.gradle +++ b/halyard-web/halyard-web.gradle @@ -53,3 +53,11 @@ def cliScript = project.tasks.create('createCliStartScripts', CreateStartScripts tasks.installDist.dependsOn(cliScript) tasks.distZip.dependsOn(cliScript) tasks.distTar.dependsOn(cliScript) + +tasks.withType(Tar){ + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} + +tasks.withType(Zip){ + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} From a5ce104212a2e3f787506541fd065376a9921b66 Mon Sep 17 00:00:00 2001 From: Sheetal Atre Date: Mon, 17 Apr 2023 19:47:34 +0530 Subject: [PATCH 122/170] Update build.gradle --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 4b0f6150d4..17bb4bef32 100644 --- a/build.gradle +++ b/build.gradle @@ -45,6 +45,9 @@ subprojects { logger.info("Enabling mavenLocal") repositories { mavenLocal() + maven{ + url "https://nexus.opsmx.net/repository/maven-snapshots/" + } } } From 2d9491c467538d41f11011ab57533da915aa75c4 Mon Sep 17 00:00:00 2001 From: Sheetal Atre Date: Mon, 17 Apr 2023 19:47:46 +0530 Subject: [PATCH 123/170] Update settings.gradle --- settings.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/settings.gradle b/settings.gradle index b494c57701..fb4828cd7a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -20,6 +20,9 @@ if (spinnakerGradleVersion.endsWith('-SNAPSHOT')) { mavenLocal() mavenCentral() gradlePluginPortal() + maven{ + url "https://nexus.opsmx.net/repository/maven-snapshots/" + } } } } From fc1d37b64a987b4c457a9945d44e9c7f3d5aa1c2 Mon Sep 17 00:00:00 2001 From: Sheetal Atre Date: Mon, 17 Apr 2023 21:16:56 +0530 Subject: [PATCH 124/170] Create halyard-oes.yml --- .github/workflows/halyard-oes.yml | 55 +++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/halyard-oes.yml diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml new file mode 100644 index 0000000000..aa47172461 --- /dev/null +++ b/.github/workflows/halyard-oes.yml @@ -0,0 +1,55 @@ +name: Branch Build halyard + +on: + workflow_call: + push: + branches: + - OES-1.30.x-master-adhoc + +env: + GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g + CONTAINER_REGISTRY: quay.io/opsmxpublic + +jobs: + branch-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + cache: 'gradle' + - name: Prepare build variables + id: build_variables + run: | + echo ::set-output name=REPO::ubi8-halyard-cve + echo ::set-output name=VERSION::"$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" + - name: Login to Quay + uses: docker/login-action@v1 + # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_KEY }} + - name: Build + env: + ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} + run: ./gradlew --no-daemon -PenableCrossCompilerPlugin=true halyard-web:installDist -x test + + - name: dockerBuildpush + uses: docker/build-push-action@v2 + with: + context: . + build-args: | + CUSTOMPLUGIN_RELEASEVERSION=v4.0.3.2-rc1 + file: docker/ubi8/Dockerfile + push: true + tags: | + "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" From dbbf3516ff174a23ee35d35f4fb09fe29795826e Mon Sep 17 00:00:00 2001 From: SheetalAtre Date: Wed, 19 Apr 2023 16:58:27 +0530 Subject: [PATCH 125/170] updated versions of some libs to resolve CVEs --- build.gradle | 4 ++++ halyard-cli/halyard-cli.gradle | 2 +- halyard-core/halyard-core.gradle | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 17bb4bef32..4ed70ff8bd 100644 --- a/build.gradle +++ b/build.gradle @@ -55,6 +55,10 @@ subprojects { implementation enforcedPlatform("io.spinnaker.kork:kork-bom:$korkVersion"){ exclude group: 'org.apache.groovy', module: 'groovy' } + implementation ("commons-fileupload:commons-fileupload:1.5") + implementation("io.netty:netty-codec-http:5.0.0.Alpha2") + implementation("org.apache.ivy:ivy:2.5.1") + annotationProcessor platform("io.spinnaker.kork:kork-bom:$korkVersion") annotationProcessor "org.projectlombok:lombok" diff --git a/halyard-cli/halyard-cli.gradle b/halyard-cli/halyard-cli.gradle index 0bd779b488..125a651ebc 100644 --- a/halyard-cli/halyard-cli.gradle +++ b/halyard-cli/halyard-cli.gradle @@ -17,7 +17,7 @@ dependencies { implementation 'com.fasterxml.jackson.core:jackson-core' implementation 'com.fasterxml.jackson.core:jackson-databind' implementation 'org.aspectj:aspectjweaver' - implementation 'org.yaml:snakeyaml:1.24' + implementation 'org.yaml:snakeyaml:2.0' implementation 'com.beust:jcommander:1.81' implementation 'org.nibor.autolink:autolink:0.10.0' diff --git a/halyard-core/halyard-core.gradle b/halyard-core/halyard-core.gradle index d1ed2975f7..706f282aa4 100644 --- a/halyard-core/halyard-core.gradle +++ b/halyard-core/halyard-core.gradle @@ -26,7 +26,7 @@ dependencies { exclude group: 'org.apache.groovy', module: 'groovy' } implementation 'org.apache.groovy:groovy:4.0.9' - implementation 'org.yaml:snakeyaml:1.24' + implementation 'org.yaml:snakeyaml:2.0' implementation 'com.google.http-client:google-http-client-jackson2:+' implementation 'com.google.apis:google-api-services-compute:+' //alpha-rev20200526-1.30.9") testImplementation 'org.springframework.boot:spring-boot-starter-test' From f5b72305ea30319cecb6d1253b92498667564a50 Mon Sep 17 00:00:00 2001 From: SusmithaGundu Date: Wed, 26 Apr 2023 18:18:27 +0530 Subject: [PATCH 126/170] fix for snakeyaml 2.0 breaking changes --- .../netflix/spinnaker/halyard/cli/ui/v1/AnsiFormatUtils.java | 4 +++- .../spinnaker/halyard/config/config/v1/ResourceConfig.java | 4 +++- .../halyard/config/config/v1/HalconfigParserSpec.groovy | 3 ++- .../halyard/config/services/v1/HalconfigParserMocker.groovy | 3 ++- .../spinnaker/halyard/core/GlobalApplicationOptions.java | 3 ++- .../service/distributed/kubernetes/v2/KubernetesV2Utils.java | 5 +++-- 6 files changed, 15 insertions(+), 7 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/ui/v1/AnsiFormatUtils.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/ui/v1/AnsiFormatUtils.java index beb2d91866..505b59bbad 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/ui/v1/AnsiFormatUtils.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/ui/v1/AnsiFormatUtils.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.representer.Representer; @@ -55,7 +56,8 @@ private static Yaml getYamlParser() { options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - return new Yaml(new SafeConstructor(), new Representer(), options); + return new Yaml( + new SafeConstructor(new LoaderOptions()), new Representer(new DumperOptions()), options); } private static ObjectMapper getObjectMapper() { diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/ResourceConfig.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/ResourceConfig.java index 2248f43cfb..d45dd13b97 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/ResourceConfig.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/ResourceConfig.java @@ -28,6 +28,7 @@ import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.stereotype.Component; import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.representer.Representer; @@ -102,7 +103,8 @@ Yaml yamlParser() { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN); - return new Yaml(new SafeConstructor(), new Representer(), options); + return new Yaml( + new SafeConstructor(new LoaderOptions()), new Representer(new DumperOptions()), options); } private String normalizePath(String path) { diff --git a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/config/v1/HalconfigParserSpec.groovy b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/config/v1/HalconfigParserSpec.groovy index c409b75a73..c84ba64f1e 100644 --- a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/config/v1/HalconfigParserSpec.groovy +++ b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/config/v1/HalconfigParserSpec.groovy @@ -18,6 +18,7 @@ package com.netflix.spinnaker.halyard.config.config.v1 import com.netflix.spinnaker.halyard.config.model.v1.node.Halconfig import org.springframework.context.ApplicationContext +import org.yaml.snakeyaml.LoaderOptions import org.yaml.snakeyaml.Yaml import org.yaml.snakeyaml.constructor.SafeConstructor import spock.lang.Specification @@ -33,7 +34,7 @@ class HalconfigParserSpec extends Specification { void setup() { ApplicationContext applicationContext = Stub(ApplicationContext.class) - applicationContext.getBean(Yaml.class) >> new Yaml(new SafeConstructor()) + applicationContext.getBean(Yaml.class) >> new Yaml(new SafeConstructor(new LoaderOptions())) parser = new HalconfigParser() parser.applicationContext = applicationContext parser.objectMapper = new StrictObjectMapper() diff --git a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/HalconfigParserMocker.groovy b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/HalconfigParserMocker.groovy index 486bd874cf..a771124686 100644 --- a/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/HalconfigParserMocker.groovy +++ b/halyard-config/src/test/groovy/com/netflix/spinnaker/halyard/config/services/v1/HalconfigParserMocker.groovy @@ -21,6 +21,7 @@ import com.netflix.spinnaker.halyard.config.config.v1.HalconfigParser import com.netflix.spinnaker.halyard.config.config.v1.StrictObjectMapper import com.netflix.spinnaker.halyard.config.model.v1.node.Halconfig import org.springframework.context.ApplicationContext +import org.yaml.snakeyaml.LoaderOptions import org.yaml.snakeyaml.Yaml import org.yaml.snakeyaml.constructor.SafeConstructor import spock.lang.Specification @@ -31,7 +32,7 @@ class HalconfigParserMocker extends Specification { HalconfigParser mockHalconfigParser(String config) { def parserStub = new HalconfigParser() ApplicationContext applicationContext = Stub(ApplicationContext.class) - applicationContext.getBean(Yaml.class) >> new Yaml(new SafeConstructor()) + applicationContext.getBean(Yaml.class) >> new Yaml(new SafeConstructor(new LoaderOptions())) parserStub.objectMapper = new StrictObjectMapper() parserStub.applicationContext = applicationContext parserStub.halconfigDirectoryStructure = new HalconfigDirectoryStructure(); diff --git a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/GlobalApplicationOptions.java b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/GlobalApplicationOptions.java index 3f8554e034..b555280e3f 100644 --- a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/GlobalApplicationOptions.java +++ b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/GlobalApplicationOptions.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; @@ -52,7 +53,7 @@ public boolean isUseRemoteDaemon() { public static GlobalApplicationOptions getInstance() { if (GlobalApplicationOptions.options == null) { - Yaml yamlParser = new Yaml(new SafeConstructor()); + Yaml yamlParser = new Yaml(new SafeConstructor(new LoaderOptions())); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2Utils.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2Utils.java index bb4bbd76e4..d2f882e95e 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2Utils.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2Utils.java @@ -42,6 +42,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.SafeConstructor; @@ -164,12 +165,12 @@ public SecretSpec createSecretSpec( } public String prettify(String input) { - Yaml yaml = new Yaml(new SafeConstructor()); + Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); return yaml.dump(yaml.load(input)); } public Map parseManifest(String input) { - Yaml yaml = new Yaml(new SafeConstructor()); + Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); return mapper.convertValue(yaml.load(input), new TypeReference>() {}); } From eb20ac88912b9351d8a7d8e2fad9878a337910d1 Mon Sep 17 00:00:00 2001 From: sanopsmx Date: Tue, 2 May 2023 16:42:45 +0530 Subject: [PATCH 127/170] Committed code for brining the halyard service up. --- .../config/config/v1/RetrofitConfig.java | 10 ++++ .../services/v1/PersistentStorageService.java | 3 +- .../v1/DeploymentEnvironmentValidator.java | 3 +- .../v1/persistentStorage/GCSValidator.java | 4 +- .../v1/providers/aws/AwsAccountValidator.java | 3 +- .../v1/providers/ecs/EcsAccountValidator.java | 7 ++- .../core/registry/v1/GoogleProfileReader.java | 54 ++++++++++++++++++- .../SpinnakerMonitoringDaemonService.java | 3 ++ .../google/GoogleConsulServerService.java | 1 + .../google/GoogleVaultServerService.java | 1 + .../KubernetesV2MonitoringDaemonService.java | 3 +- .../com/netflix/spinnaker/halyard/Main.java | 2 +- 12 files changed, 85 insertions(+), 9 deletions(-) diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java index aa8bb7bcf5..611438d959 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/config/v1/RetrofitConfig.java @@ -21,8 +21,12 @@ import com.netflix.spinnaker.config.OkHttpClientComponents; import com.netflix.spinnaker.config.RetrofitConfiguration; import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider; +import com.netflix.spinnaker.kork.api.exceptions.ExceptionMessage; +import com.netflix.spinnaker.kork.web.exceptions.ExceptionMessageDecorator; +import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -51,6 +55,12 @@ class RetrofitConfig { @Autowired RequestInterceptor spinnakerRequestInterceptor; + @Bean + ExceptionMessageDecorator exceptionMessageDecorator( + ObjectProvider> exceptionMessagesProvider) { + return new ExceptionMessageDecorator(exceptionMessagesProvider); + } + @Bean RestAdapter.LogLevel retrofitLogLevel( @Value("${retrofit.log-level:BASIC}") String retrofitLogLevel) { diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/PersistentStorageService.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/PersistentStorageService.java index d9530dadf8..d58784d5f9 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/PersistentStorageService.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/services/v1/PersistentStorageService.java @@ -32,13 +32,14 @@ import com.netflix.spinnaker.halyard.core.problem.v1.ProblemSet; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component public class PersistentStorageService { @Autowired private LookupService lookupService; - @Autowired private DeploymentService deploymentService; + @Lazy @Autowired private DeploymentService deploymentService; @Autowired private ValidateService validateService; diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/DeploymentEnvironmentValidator.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/DeploymentEnvironmentValidator.java index 386ba94a72..3d252bdd9b 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/DeploymentEnvironmentValidator.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/DeploymentEnvironmentValidator.java @@ -32,12 +32,13 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component @Slf4j public class DeploymentEnvironmentValidator extends Validator { - @Autowired AccountService accountService; + @Lazy @Autowired AccountService accountService; @Autowired KubernetesAccountValidator kubernetesAccountValidator; diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/persistentStorage/GCSValidator.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/persistentStorage/GCSValidator.java index 8cab2c8f68..5aadb65ffd 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/persistentStorage/GCSValidator.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/persistentStorage/GCSValidator.java @@ -33,12 +33,14 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.TaskScheduler; import org.springframework.stereotype.Component; @Component public class GCSValidator extends Validator { - @Autowired private AccountService accountService; + + @Lazy @Autowired private AccountService accountService; @Autowired private Registry registry; diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/aws/AwsAccountValidator.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/aws/AwsAccountValidator.java index 953d0f17a0..df60dd35bc 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/aws/AwsAccountValidator.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/aws/AwsAccountValidator.java @@ -27,12 +27,13 @@ import com.netflix.spinnaker.halyard.config.services.v1.ProviderService; import com.netflix.spinnaker.halyard.core.problem.v1.Problem.Severity; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component public class AwsAccountValidator extends Validator { - @Autowired ProviderService providerService; + @Lazy @Autowired ProviderService providerService; @Override public void validate(ConfigProblemSetBuilder p, AwsAccount awsAccount) { diff --git a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java index f0aba6d8e2..7e2783d7cb 100644 --- a/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java +++ b/halyard-config/src/main/java/com/netflix/spinnaker/halyard/config/validate/v1/providers/ecs/EcsAccountValidator.java @@ -6,15 +6,20 @@ import com.netflix.spinnaker.halyard.config.problem.v1.ConfigProblemSetBuilder; import com.netflix.spinnaker.halyard.config.services.v1.AccountService; import com.netflix.spinnaker.halyard.config.services.v1.ConfigService; +import com.netflix.spinnaker.halyard.config.services.v1.ProviderService; import com.netflix.spinnaker.halyard.core.problem.v1.Problem.Severity; import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component public class EcsAccountValidator extends Validator { - @Autowired AccountService accountService; + + @Lazy @Autowired ProviderService providerService; + + @Lazy @Autowired AccountService accountService; @Autowired ConfigService configService; diff --git a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java index 9024dc8060..8f68b84cf3 100644 --- a/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java +++ b/halyard-core/src/main/java/com/netflix/spinnaker/halyard/core/registry/v1/GoogleProfileReader.java @@ -19,15 +19,23 @@ package com.netflix.spinnaker.halyard.core.registry.v1; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.api.client.http.HttpRequestInitializer; +import com.google.api.client.json.JsonFactory; +import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.storage.Storage; +import com.google.api.services.storage.StorageScopes; +import com.netflix.spinnaker.halyard.core.provider.v1.google.GoogleCredentials; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Collections; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import org.yaml.snakeyaml.Yaml; @@ -37,9 +45,9 @@ public class GoogleProfileReader implements ProfileReader { @Autowired String spinconfigBucket; - @Autowired Storage applicationDefaultGoogleStorage; + @Lazy @Autowired Storage applicationDefaultGoogleStorage; - @Autowired Storage unauthenticatedGoogleStorage; + @Lazy @Autowired Storage unauthenticatedGoogleStorage; @Autowired ObjectMapper relaxedObjectMapper; @@ -49,6 +57,16 @@ private Yaml getYamlParser() { return applicationContext.getBean(Yaml.class); } + @Bean + public Storage applicationDefaultGoogleStorage() { + return createGoogleStorage(true); + } + + @Bean + public Storage unauthenticatedGoogleStorage() { + return createGoogleStorage(false); + } + public InputStream readProfile(String artifactName, String version, String profileName) throws IOException { String path = profilePath(artifactName, version, profileName); @@ -101,4 +119,36 @@ private InputStream getContents(String objectName) throws IOException { return new ByteArrayInputStream(output.toByteArray()); } + + private Storage createGoogleStorage(boolean useApplicationDefaultCreds) { + JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); + String applicationName = "Spinnaker/Halyard"; + HttpRequestInitializer requestInitializer = null; + + if (useApplicationDefaultCreds) { + try { + com.google.auth.oauth2.GoogleCredentials credentials = + com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(); + if (credentials.createScopedRequired()) { + credentials = + credentials.createScoped( + Collections.singleton(StorageScopes.DEVSTORAGE_FULL_CONTROL)); + } + requestInitializer = GoogleCredentials.setHttpTimeout(credentials); + log.info("Loaded application default credential for reading BOMs & profiles."); + } catch (Exception e) { + log.debug( + "No application default credential could be loaded for reading BOMs & profiles. Continuing unauthenticated: {}", + e.getMessage()); + } + } + if (requestInitializer == null) { + requestInitializer = GoogleCredentials.retryRequestInitializer(); + } + + return new Storage.Builder( + GoogleCredentials.buildHttpTransport(), jsonFactory, requestInitializer) + .setApplicationName(applicationName) + .build(); + } } diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java index 7c25a6f537..4b77aa51b8 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerMonitoringDaemonService.java @@ -31,6 +31,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @EqualsAndHashCode(callSuper = true) @@ -47,6 +48,8 @@ public abstract class SpinnakerMonitoringDaemonService @Autowired MetricRegistryProfileFactoryBuilder metricRegistryProfileFactoryBuilder; + @Lazy @Autowired List services; + @Override public SpinnakerArtifact getArtifact() { return SpinnakerArtifact.SPINNAKER_MONITORING_DAEMON; diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java index d35b1e0ca4..164ebc4650 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleConsulServerService.java @@ -38,6 +38,7 @@ @Data public class GoogleConsulServerService extends ConsulServerService implements GoogleDistributedService { + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java index 6b0c8bd9fb..82a3359cae 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/google/GoogleVaultServerService.java @@ -37,6 +37,7 @@ @Data public class GoogleVaultServerService extends VaultServerService implements GoogleDistributedService { + @Lazy @Delegate @Autowired GoogleDistributedServiceDelegate googleDistributedServiceDelegate; @Override diff --git a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2MonitoringDaemonService.java b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2MonitoringDaemonService.java index d009d5360d..3660e0b2fa 100644 --- a/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2MonitoringDaemonService.java +++ b/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/distributed/kubernetes/v2/KubernetesV2MonitoringDaemonService.java @@ -26,6 +26,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Data @@ -35,7 +36,7 @@ public class KubernetesV2MonitoringDaemonService extends SpinnakerMonitoringDaem implements KubernetesV2Service { final DeployPriority deployPriority = new DeployPriority(0); - @Delegate @Autowired KubernetesV2ServiceDelegate serviceDelegate; + @Lazy @Delegate @Autowired KubernetesV2ServiceDelegate serviceDelegate; @Override public boolean runsOnJvm() { diff --git a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/Main.java b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/Main.java index 32e028e85d..3584c2677d 100644 --- a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/Main.java +++ b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/Main.java @@ -27,7 +27,7 @@ import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan(value = {"com.netflix.spinnaker.halyard"}) +@ComponentScan(value = {"com.netflix.spinnaker.halyard", "com.netflix.spinnaker.kork"}) @EnableAutoConfiguration @EnableConfigServer public class Main extends SpringBootServletInitializer { From 96521d2d375e3c8db97ebec2291b10cc127ae479 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Tue, 30 May 2023 13:52:11 +0530 Subject: [PATCH 128/170] Update Dockerfile with start point --- docker/ubi8/Dockerfile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docker/ubi8/Dockerfile b/docker/ubi8/Dockerfile index f906063777..4c801e226f 100644 --- a/docker/ubi8/Dockerfile +++ b/docker/ubi8/Dockerfile @@ -45,4 +45,12 @@ RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \ chmod +x kubectl && \ - mv ./kubectl /usr/local/bin/kubectl \ No newline at end of file + mv ./kubectl /usr/local/bin/kubectl + + +RUN adduser spinnaker +USER spinnaker + +CMD ["/opt/halyard/bin/halyard"] + + From 48775bb2c1c5faaf7476f656fb889a6105904d40 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Tue, 30 May 2023 13:53:15 +0530 Subject: [PATCH 129/170] removed the build args --- .github/workflows/halyard-oes.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index aa47172461..6cba706146 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -47,8 +47,6 @@ jobs: uses: docker/build-push-action@v2 with: context: . - build-args: | - CUSTOMPLUGIN_RELEASEVERSION=v4.0.3.2-rc1 file: docker/ubi8/Dockerfile push: true tags: | From c3b9f1aa4be8059f9354222f7b0ac20830cf4f40 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Thu, 1 Jun 2023 19:09:55 +0530 Subject: [PATCH 130/170] fix for hal deploy apply command --- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index 4900e6a4b3..aa7a5b4cc2 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -62,7 +62,7 @@ DaemonTask restoreBackup( @GET("/v1/config/") DaemonTask getHalconfig(); - @GET("/v1/config/currentDeployment/") + @GET("/v1/config/currentDeployment") DaemonTask getCurrentDeployment(); @PUT("/v1/config/currentDeployment/") From 95cd871fa10ececf1f12b5cddc86bb4938ed06c6 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Sun, 4 Jun 2023 22:32:01 +0530 Subject: [PATCH 131/170] hal add ci, jenkins --- .../halyard/cli/services/v1/DaemonService.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index aa7a5b4cc2..a1be124214 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -324,7 +324,7 @@ DaemonTask addAccount( @Body Account account); @GET( - "/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/account/{accountName}/") + "/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/account/{accountName}") DaemonTask getAccount( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, @@ -712,41 +712,41 @@ DaemonTask setNotification( @Query("validate") boolean validate, @Body Notification notification); - @GET("/v1/config/deployments/{deploymentName}/ci/{ciName}/") + @GET("/v1/config/deployments/{deploymentName}/ci/{ciName}") DaemonTask getCi( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, @Query("validate") boolean validate); - @PUT("/v1/config/deployments/{deploymentName}/ci/{ciName}/") + @PUT("/v1/config/deployments/{deploymentName}/ci/{ciName}") DaemonTask setCi( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, @Query("validate") boolean validate, @Body Ci ci); - @PUT("/v1/config/deployments/{deploymentName}/ci/{ciName}/enabled/") + @PUT("/v1/config/deployments/{deploymentName}/ci/{ciName}/enabled") DaemonTask setCiEnabled( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, @Query("validate") boolean validate, @Body boolean enabled); - @POST("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/") + @POST("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters") DaemonTask addMaster( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, @Query("validate") boolean validate, @Body CIAccount account); - @GET("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/{masterName}/") + @GET("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/{masterName}") DaemonTask getMaster( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, @Path("masterName") String masterName, @Query("validate") boolean validate); - @PUT("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/{masterName}/") + @PUT("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/{masterName}") DaemonTask setMaster( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, @@ -754,7 +754,7 @@ DaemonTask setMaster( @Query("validate") boolean validate, @Body CIAccount account); - @DELETE("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/{masterName}/") + @DELETE("/v1/config/deployments/{deploymentName}/ci/{ciName}/masters/{masterName}") DaemonTask deleteMaster( @Path("deploymentName") String deploymentName, @Path("ciName") String ciName, From 7dfbb540a483617a9b91ba29de07a81fc053ee9b Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Sun, 4 Jun 2023 22:33:55 +0530 Subject: [PATCH 132/170] hal add ci, jenkins --- .github/workflows/halyard-oes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 6cba706146..52d38b7aa5 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - OES-1.30.x-master-adhoc + - aws-edit env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g From 58f68dfd70fcaf4459e009eedb34af04e000ed82 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Sun, 4 Jun 2023 22:52:03 +0530 Subject: [PATCH 133/170] hal edit aws --- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index a1be124214..faa3663fcc 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -316,7 +316,7 @@ DaemonTask deleteSubscription( @Path("subscriptionName") String subscriptionName, @Query("validate") boolean validate); - @POST("/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/") + @POST("/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts") DaemonTask addAccount( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, @@ -332,7 +332,7 @@ DaemonTask getAccount( @Query("validate") boolean validate); @PUT( - "/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/account/{accountName}/") + "/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/account/{accountName}") DaemonTask setAccount( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, @@ -341,7 +341,7 @@ DaemonTask setAccount( @Body Account account); @DELETE( - "/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/account/{accountName}/") + "/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/account/{accountName}") DaemonTask deleteAccount( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, From 52a4abcc3fec10e601171b38f63f96670c4ba37e Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Mon, 5 Jun 2023 11:32:18 +0530 Subject: [PATCH 134/170] kubernetes account fail --- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index faa3663fcc..7ebdcce3a3 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -316,7 +316,7 @@ DaemonTask deleteSubscription( @Path("subscriptionName") String subscriptionName, @Query("validate") boolean validate); - @POST("/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts") + @POST("/v1/config/deployments/{deploymentName}/providers/{providerName}/accounts/") DaemonTask addAccount( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, From b56ae32919bea53a1ac42aa8fea5d77291fcf0cc Mon Sep 17 00:00:00 2001 From: Luthan95 <66585454+Luthan95@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:39:38 +0530 Subject: [PATCH 135/170] Update halyard-oes.yml replace with default branch --- .github/workflows/halyard-oes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 52d38b7aa5..6cba706146 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - aws-edit + - OES-1.30.x-master-adhoc env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g From c10fc78d3c66f935d6ac391dc9cf67cbb6b2595f Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Tue, 6 Jun 2023 11:07:49 +0530 Subject: [PATCH 136/170] slack fix --- .github/workflows/halyard-oes.yml | 2 +- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 6cba706146..a89154eb6e 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - OES-1.30.x-master-adhoc + - halyardcommand-fix env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index 7ebdcce3a3..14f0e80a8b 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -692,7 +692,7 @@ DaemonTask deleteBaseImage( DaemonTask getNotifications( @Path("deploymentName") String deploymentName, @Query("validate") boolean validate); - @GET("/v1/config/deployments/{deploymentName}/notifications/{notificationName}/") + @GET("/v1/config/deployments/{deploymentName}/notifications/{notificationName}") DaemonTask getNotification( @Path("deploymentName") String deploymentName, @Path("notificationName") String notificationName, From ec0a929a8d45c66065b71a165311318f461b0392 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Tue, 6 Jun 2023 11:20:29 +0530 Subject: [PATCH 137/170] slack fix --- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index 14f0e80a8b..d1fc38d27a 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -688,7 +688,7 @@ DaemonTask deleteBaseImage( @Path("baseImageId") String baseImageId, @Query("validate") boolean validate); - @GET("/v1/config/deployments/{deploymentName}/notifications/") + @GET("/v1/config/deployments/{deploymentName}/notifications") DaemonTask getNotifications( @Path("deploymentName") String deploymentName, @Query("validate") boolean validate); @@ -705,7 +705,7 @@ DaemonTask setNotificationEnabled( @Query("validate") boolean validate, @Body boolean enabled); - @PUT("/v1/config/deployments/{deploymentName}/notifications/{notificationName}/") + @PUT("/v1/config/deployments/{deploymentName}/notifications/{notificationName}") DaemonTask setNotification( @Path("deploymentName") String deploymentName, @Path("notificationName") String notificationName, From 1d280c39e7bd5a220014fc74503574f4cd520b97 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Tue, 6 Jun 2023 15:53:56 +0530 Subject: [PATCH 138/170] hal config fail fix --- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index d1fc38d27a..4b58283edb 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -68,14 +68,14 @@ DaemonTask restoreBackup( @PUT("/v1/config/currentDeployment/") DaemonTask setCurrentDeployment(@Body StringBodyRequest name); - @GET("/v1/config/deployments/") + @GET("/v1/config/deployments") DaemonTask> getDeployments(); - @GET("/v1/config/deployments/{deploymentName}/") + @GET("/v1/config/deployments/{deploymentName}") DaemonTask getDeployment( @Path("deploymentName") String deploymentName, @Query("validate") boolean validate); - @PUT("/v1/config/deployments/{deploymentName}/") + @PUT("/v1/config/deployments/{deploymentName}") DaemonTask setDeployment( @Path("deploymentName") String deploymentName, @Query("validate") boolean validate, From 5459c34770db7bfab8de250849e28a11e38abfab Mon Sep 17 00:00:00 2001 From: Luthan95 <66585454+Luthan95@users.noreply.github.com> Date: Tue, 6 Jun 2023 16:01:16 +0530 Subject: [PATCH 139/170] Update halyard-oes.yml --- .github/workflows/halyard-oes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index a89154eb6e..6cba706146 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - halyardcommand-fix + - OES-1.30.x-master-adhoc env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g From 4bee88acc59b1d3972513470272051072b10e072 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Tue, 6 Jun 2023 16:20:45 +0530 Subject: [PATCH 140/170] provider enable fix --- .../cli/services/v1/DaemonService.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index 4b58283edb..8e27fe2673 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -179,53 +179,53 @@ DaemonTask setFeatures( @Query("validate") boolean validate, @Body Features features); - @PUT("/v1/config/deployments/{deploymentName}/persistentStorage/") + @PUT("/v1/config/deployments/{deploymentName}/persistentStorage") DaemonTask setPersistentStorage( @Path("deploymentName") String deploymentName, @Query("validate") boolean validate, @Body PersistentStorage persistentStorage); - @PUT("/v1/config/deployments/{deploymentName}/persistentStorage/{persistentStoreType}/") + @PUT("/v1/config/deployments/{deploymentName}/persistentStorage/{persistentStoreType}") DaemonTask setPersistentStore( @Path("deploymentName") String deploymentName, @Path("persistentStoreType") String persistentStoreType, @Query("validate") boolean validate, @Body PersistentStore persistentStore); - @GET("/v1/config/deployments/{deploymentName}/pubsubs/{pubsubName}/") + @GET("/v1/config/deployments/{deploymentName}/pubsubs/{pubsubName}") DaemonTask getPubsub( @Path("deploymentName") String deploymentName, @Path("pubsubName") String pubsubName, @Query("validate") boolean validate); - @PUT("/v1/config/deployments/{deploymentName}/pubsubs/{pubsubName}/") + @PUT("/v1/config/deployments/{deploymentName}/pubsubs/{pubsubName}") DaemonTask setPubsub( @Path("deploymentName") String deploymentName, @Path("pubsubName") String pubsubName, @Query("validate") boolean validate, @Body Pubsub pubsub); - @PUT("/v1/config/deployments/{deploymentName}/pubsubs/{pubsubName}/enabled/") + @PUT("/v1/config/deployments/{deploymentName}/pubsubs/{pubsubName}/enabled") DaemonTask setPubsubEnabled( @Path("deploymentName") String deploymentName, @Path("pubsubName") String pubsubName, @Query("validate") boolean validate, @Body boolean enabled); - @GET("/v1/config/deployments/{deploymentName}/providers/{providerName}/") + @GET("/v1/config/deployments/{deploymentName}/providers/{providerName}") DaemonTask getProvider( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, @Query("validate") boolean validate); - @PUT("/v1/config/deployments/{deploymentName}/providers/{providerName}/") + @PUT("/v1/config/deployments/{deploymentName}/providers/{providerName}") DaemonTask setProvider( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, @Query("validate") boolean validate, @Body Provider provider); - @PUT("/v1/config/deployments/{deploymentName}/providers/{providerName}/enabled/") + @PUT("/v1/config/deployments/{deploymentName}/providers/{providerName}/enabled") DaemonTask setProviderEnabled( @Path("deploymentName") String deploymentName, @Path("providerName") String providerName, @@ -583,20 +583,20 @@ DaemonTask setApacheSslEnabled( @Query("validate") boolean validate, @Body boolean enabled); - @GET("/v1/config/deployments/{deploymentName}/security/authn/{methodName}/") + @GET("/v1/config/deployments/{deploymentName}/security/authn/{methodName}") DaemonTask getAuthnMethod( @Path("deploymentName") String deploymentName, @Path("methodName") String methodName, @Query("validate") boolean validate); - @PUT("/v1/config/deployments/{deploymentName}/security/authn/{methodName}/") + @PUT("/v1/config/deployments/{deploymentName}/security/authn/{methodName}") DaemonTask setAuthnMethod( @Path("deploymentName") String deploymentName, @Path("methodName") String methodName, @Query("validate") boolean validate, @Body AuthnMethod authnMethod); - @PUT("/v1/config/deployments/{deploymentName}/security/authn/{methodName}/enabled/") + @PUT("/v1/config/deployments/{deploymentName}/security/authn/{methodName}/enabled") DaemonTask setAuthnMethodEnabled( @Path("deploymentName") String deploymentName, @Path("methodName") String methodName, From d2ca0074a66cc4da631d835f0c9fb35276fd7694 Mon Sep 17 00:00:00 2001 From: Luthan95 Date: Fri, 9 Jun 2023 10:53:31 +0530 Subject: [PATCH 141/170] authz enabled --- .github/workflows/halyard-oes.yml | 2 +- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 6cba706146..70e14483ad 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - OES-1.30.x-master-adhoc + - authn-enable env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index 8e27fe2673..0f0ce5714a 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -596,7 +596,7 @@ DaemonTask setAuthnMethod( @Query("validate") boolean validate, @Body AuthnMethod authnMethod); - @PUT("/v1/config/deployments/{deploymentName}/security/authn/{methodName}/enabled") + @PUT("/v1/config/deployments/{deploymentName}/security/authn/{methodName}/enabled/") DaemonTask setAuthnMethodEnabled( @Path("deploymentName") String deploymentName, @Path("methodName") String methodName, From bd12064c88caf9fbae27a80f833567e945d798da Mon Sep 17 00:00:00 2001 From: Luthan95 <66585454+Luthan95@users.noreply.github.com> Date: Fri, 9 Jun 2023 11:09:52 +0530 Subject: [PATCH 142/170] Update halyard-oes.yml reverting to default branch --- .github/workflows/halyard-oes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 70e14483ad..6cba706146 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - authn-enable + - OES-1.30.x-master-adhoc env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g From d77a74a7b4c44bfb549e9e221e0867dd0ebe6985 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Fri, 23 Jun 2023 19:17:11 +0530 Subject: [PATCH 143/170] Create Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 docker/ubi8/Dockerfile-fips diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips new file mode 100644 index 0000000000..3198e02e66 --- /dev/null +++ b/docker/ubi8/Dockerfile-fips @@ -0,0 +1,43 @@ +FROM registry.access.redhat.com/ubi8/ubi:8.8 as java-builder +LABEL maintainer="OpsMx" +ARG JAVA_PACKAGE=java-17-openjdk-jmods +RUN yum -y update && yum -y install --nodocs ${JAVA_PACKAGE} + +# Build a custom JRE. +# For now, we will include all modules. We could try to remove the ones +# we don't need to reduce image size and security attack surface. +WORKDIR /jrebuild +RUN java --list-modules | cut -d'@' -f1 > modules +RUN jlink --output runtime --add-modules `paste -sd, - < modules` --compress 2 --vm server + +# Build a minimal base image with our custom Java installed. +FROM registry.access.redhat.com/ubi8/ubi:8.8 AS java-base +LABEL maintainer="OpsMx" +COPY --from=java-builder /jrebuild/runtime /opsmx-java-runtime +ARG OPSMXUSER=1001 +ENV JAVA_HOME=/opsmx-java-runtime \ + PATH=${PATH}:/opsmx-java-runtime/bin \ + WORK_DIR=/opsmx/workdir \ + CONF_DIR=/opsmx/conf + +# Enabling fips mode +RUN fips-mode-setup --enable + +# Setting crypto policies to FIPS +RUN update-crypto-policies --set FIPS + +COPY halyard-web/build/install/halyard /opt/halyard + +ENV KUBECTL_VERSION v1.22.0 +RUN yum -y install git bash +RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ + echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ + chmod +x /usr/local/bin/hal + +RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \ + chmod +x kubectl && \ + mv ./kubectl /usr/local/bin/kubectl + +RUN adduser spinnaker +USER spinnaker +CMD ["/opt/halyard/bin/halyard"] From 6a77332a0fe8ae39f3a68bbf017b0ee72fd525bf Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Fri, 23 Jun 2023 19:17:40 +0530 Subject: [PATCH 144/170] Update halyard-oes.yml --- .github/workflows/halyard-oes.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 6cba706146..cc8e44e199 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -25,7 +25,6 @@ jobs: with: java-version: 17 distribution: 'temurin' - cache: 'gradle' - name: Prepare build variables id: build_variables run: | @@ -47,7 +46,7 @@ jobs: uses: docker/build-push-action@v2 with: context: . - file: docker/ubi8/Dockerfile + file: docker/ubi8/Dockerfile-fips push: true tags: | "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" From 7a24523bc61df6ddc001607ca3b24719062355ec Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Fri, 23 Jun 2023 19:25:10 +0530 Subject: [PATCH 145/170] Update Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index 3198e02e66..ddca513336 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -29,7 +29,7 @@ RUN update-crypto-policies --set FIPS COPY halyard-web/build/install/halyard /opt/halyard ENV KUBECTL_VERSION v1.22.0 -RUN yum -y install git bash +RUN yum -y install git bash wget RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ chmod +x /usr/local/bin/hal @@ -37,6 +37,9 @@ RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \ chmod +x kubectl && \ mv ./kubectl /usr/local/bin/kubectl + +RUN yum -y remove wget +RUN yum -y remove clean all && rm -rf /var/cache RUN adduser spinnaker USER spinnaker From a828ee72fbdac86287be6981834e6ca92b6f829f Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Mon, 26 Jun 2023 17:10:26 +0530 Subject: [PATCH 146/170] Update Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index ddca513336..48ae613256 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -29,7 +29,7 @@ RUN update-crypto-policies --set FIPS COPY halyard-web/build/install/halyard /opt/halyard ENV KUBECTL_VERSION v1.22.0 -RUN yum -y install git bash wget +RUN yum -y install git bash wget curl RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ chmod +x /usr/local/bin/hal @@ -38,7 +38,11 @@ RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VER chmod +x kubectl && \ mv ./kubectl /usr/local/bin/kubectl -RUN yum -y remove wget + +RUN curl -f -o /usr/local/bin/aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/${KUBECTL_RELEASE}/${AWS_BINARY_RELEASE_DATE}/bin/linux/amd64/aws-iam-authenticator && \ + chmod +x /usr/local/bin/aws-iam-authenticator + +RUN yum -y remove wget curl RUN yum -y remove clean all && rm -rf /var/cache RUN adduser spinnaker From d3c3581593488ad2900ae69689f1ab71f7794188 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Mon, 26 Jun 2023 17:18:29 +0530 Subject: [PATCH 147/170] Update Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index 48ae613256..97620123a7 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -28,7 +28,9 @@ RUN update-crypto-policies --set FIPS COPY halyard-web/build/install/halyard /opt/halyard -ENV KUBECTL_VERSION v1.22.0 +ENV KUBECTL_VERSION=v1.22.0 +ENV AWS_BINARY_RELEASE_DATE=2020-02-22 + RUN yum -y install git bash wget curl RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ From 53d89bcae00c3f1b8848ec3d7996508e577d9dce Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Mon, 26 Jun 2023 17:43:00 +0530 Subject: [PATCH 148/170] Update Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index 97620123a7..5cc4d8da26 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -29,9 +29,12 @@ RUN update-crypto-policies --set FIPS COPY halyard-web/build/install/halyard /opt/halyard ENV KUBECTL_VERSION=v1.22.0 +ENV KUBECTL_RELEASE=1.15.10 ENV AWS_BINARY_RELEASE_DATE=2020-02-22 +ENV AWS_CLI_VERSION=1.18.18 +RUN yum -y install git bash wget curl python3-pip && \ +pip3 install awscli==${AWS_CLI_VERSION} -RUN yum -y install git bash wget curl RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ chmod +x /usr/local/bin/hal @@ -46,7 +49,7 @@ RUN curl -f -o /usr/local/bin/aws-iam-authenticator https://amazon-eks.s3-us-we RUN yum -y remove wget curl RUN yum -y remove clean all && rm -rf /var/cache - + RUN adduser spinnaker USER spinnaker CMD ["/opt/halyard/bin/halyard"] From 0be0105d3f0c1e5e72f1d2d954bf0a7642c0c32f Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Mon, 26 Jun 2023 17:49:14 +0530 Subject: [PATCH 149/170] Update Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index 5cc4d8da26..b3d9050b7c 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -47,8 +47,7 @@ RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VER RUN curl -f -o /usr/local/bin/aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/${KUBECTL_RELEASE}/${AWS_BINARY_RELEASE_DATE}/bin/linux/amd64/aws-iam-authenticator && \ chmod +x /usr/local/bin/aws-iam-authenticator -RUN yum -y remove wget curl -RUN yum -y remove clean all && rm -rf /var/cache + RUN adduser spinnaker USER spinnaker From 31cc69d12684eca33452ab6b6d0c4cfe96516dde Mon Sep 17 00:00:00 2001 From: Sheetal Atre Date: Mon, 26 Jun 2023 23:10:50 -0700 Subject: [PATCH 150/170] feature(halyard-config): OP-20625: SpringBoot3 UR-matching changes for trailing slash configuration in halyard (#11) * fix(daemonservice) OP-20625: fix artifactProviders/enabled PUT api throws 405 https://devopsmx.atlassian.net/browse/OP-20625 Remove "/" at end of PUT url. /v1/config/deployments/default/artifactProviders/bitbucket/enabled/ * Update halyard-oes.yml added github action to fix-OP-20625 branch added github action to fix-OP-20625 branch * changes in URL-matching introduced by Spring Boot 3 changes in URL-matching introduced by Spring Boot 3 * Create WebConfiguration.java changes in URL-matching for SpringBoot 3 changes in URL-matching for SpringBoot 3 * Update halyard-oes.yml revert temp change for actions --- .../halyard/config/v1/WebConfiguration.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java diff --git a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java new file mode 100644 index 0000000000..2611023cf5 --- /dev/null +++ b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java @@ -0,0 +1,14 @@ +package com.netflix.spinnaker.halyard.config.v1; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfiguration implements WebMvcConfigurer { + + @Override + public void configurePathMatch(PathMatchConfigurer configurer) { + configurer.setUseTrailingSlashMatch(true); + } +} From d8c65b6a13953f00da014714c7c97318e4255b1e Mon Sep 17 00:00:00 2001 From: Sheetal Atre Date: Tue, 27 Jun 2023 12:28:33 +0530 Subject: [PATCH 151/170] Update Dockerfile-fips fix critical cve pyyaml version 5.3.1 > 5.4 fix critical cve pyyaml version 5.3.1 > 5.4 --- docker/ubi8/Dockerfile-fips | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index b3d9050b7c..e6bdcc6a23 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -33,7 +33,7 @@ ENV KUBECTL_RELEASE=1.15.10 ENV AWS_BINARY_RELEASE_DATE=2020-02-22 ENV AWS_CLI_VERSION=1.18.18 RUN yum -y install git bash wget curl python3-pip && \ -pip3 install awscli==${AWS_CLI_VERSION} +pip3 install --upgrade pyyaml==5.4 awscli==${AWS_CLI_VERSION} RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ From 12eb2a6ed1ffaa9a83a2dbf6fb98430828fe5363 Mon Sep 17 00:00:00 2001 From: Sheetal Atre Date: Fri, 30 Jun 2023 13:46:48 +0530 Subject: [PATCH 152/170] fix(halyard):Update Dockerfile for python-pkg trivy cves fix- replace python-pip3 install with manual install of AWS_CLI (#13) * fix(halyard):Update Dockerfile for python-pkg trivy cves fix- replace python-pip3 install with manual install of AWS_CLI * fix(halyard):Update Dockerfile for python-pkg trivy cves fix- replace python-pip3 install with manual install of AWS_CLI --- docker/ubi8/Dockerfile-fips | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index e6bdcc6a23..a170f843e3 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -26,14 +26,25 @@ RUN fips-mode-setup --enable # Setting crypto policies to FIPS RUN update-crypto-policies --set FIPS +FROM java-builder AS awscli-install +RUN yum install -y unzip +RUN curl https://awscli.amazonaws.com/awscli-exe-linux-`uname -m`.zip -o awscliv2.zip +RUN unzip awscliv2.zip +RUN ./aws/install + +FROM java-builder AS base +COPY --from=awscli-install /usr/local/aws-cli /usr/local/aws-cli/ +RUN ln -sf /usr/local/aws-cli/v2/current/bin/aws /usr/local/bin/aws && ln -sf /usr/local/aws-cli/v2/current/bin/aws_completer /usr/local/bin/aws_completer + +ARG TARGETARCH + COPY halyard-web/build/install/halyard /opt/halyard ENV KUBECTL_VERSION=v1.22.0 ENV KUBECTL_RELEASE=1.15.10 ENV AWS_BINARY_RELEASE_DATE=2020-02-22 -ENV AWS_CLI_VERSION=1.18.18 -RUN yum -y install git bash wget curl python3-pip && \ -pip3 install --upgrade pyyaml==5.4 awscli==${AWS_CLI_VERSION} + +RUN yum -y install git bash wget curl RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ @@ -43,12 +54,9 @@ RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VER chmod +x kubectl && \ mv ./kubectl /usr/local/bin/kubectl - RUN curl -f -o /usr/local/bin/aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/${KUBECTL_RELEASE}/${AWS_BINARY_RELEASE_DATE}/bin/linux/amd64/aws-iam-authenticator && \ chmod +x /usr/local/bin/aws-iam-authenticator - - RUN adduser spinnaker USER spinnaker CMD ["/opt/halyard/bin/halyard"] From 345cd36a924b7d9b4d7055313db02da231c1b90a Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Wed, 19 Jul 2023 20:38:07 +0530 Subject: [PATCH 153/170] Update settings.gradle --- settings.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/settings.gradle b/settings.gradle index fb4828cd7a..310726c208 100644 --- a/settings.gradle +++ b/settings.gradle @@ -22,6 +22,10 @@ if (spinnakerGradleVersion.endsWith('-SNAPSHOT')) { gradlePluginPortal() maven{ url "https://nexus.opsmx.net/repository/maven-snapshots/" + credentials { + username = "NEXUS_USERNAME" + password = "NEXUS_PASSWORD" + } } } } From e9f0de58f56eb1c2bcebdffc64847ee091f7ad74 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Wed, 19 Jul 2023 20:38:25 +0530 Subject: [PATCH 154/170] Update build.gradle --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index 4ed70ff8bd..1615fce414 100644 --- a/build.gradle +++ b/build.gradle @@ -47,6 +47,10 @@ subprojects { mavenLocal() maven{ url "https://nexus.opsmx.net/repository/maven-snapshots/" + credentials { + username = "NEXUS_USERNAME" + password = "NEXUS_PASSWORD" + } } } } From df0a1776d276eecd8f7e4c22d667fe0f11ced8b4 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Wed, 19 Jul 2023 20:39:42 +0530 Subject: [PATCH 155/170] Update halyard-oes.yml --- .github/workflows/halyard-oes.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index cc8e44e199..324a9bba64 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -40,7 +40,13 @@ jobs: - name: Build env: ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} - run: ./gradlew --no-daemon -PenableCrossCompilerPlugin=true halyard-web:installDist -x test + run: | + sed -e 's/NEXUS_USERNAME/${{ secrets.NEXUS_USERNAME }}/' -i settings.gradle + sed -e 's/NEXUS_PASSWORD/${{ secrets.NEXUS_PASSWORD }}/' -i settings.gradle + sed -e 's/NEXUS_USERNAME/${{ secrets.NEXUS_USERNAME }}/' -i build.gradle + sed -e 's/NEXUS_PASSWORD/${{ secrets.NEXUS_PASSWORD }}/' -i build.gradle + + ./gradlew --no-daemon -PenableCrossCompilerPlugin=true halyard-web:installDist -x test - name: dockerBuildpush uses: docker/build-push-action@v2 From 3ea280bc8699108207f47195ef7bc16abb2b3f6c Mon Sep 17 00:00:00 2001 From: aman-agrawal <9412470@gmail,com> Date: Tue, 25 Jul 2023 12:41:52 +0530 Subject: [PATCH 156/170] Junit4 to Junit5 Migration & Fixed TCs --- build.gradle | 6 ++++++ halyard-cli/halyard-cli.gradle | 2 +- .../core/resource/v1/LocalDiskProfileReaderSpec.groovy | 2 -- halyard-web/config/halyard.yml | 4 ++++ .../spinnaker/halyard/config/v1/WebConfiguration.java | 8 ++++---- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 1615fce414..ba704f85c9 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,12 @@ subprojects { testLogging { showStandardStreams = false exceptionFormat = 'full' + afterSuite { desc, result -> + if (!desc.parent) { + println "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)" + println "Report file: ${reports.html.entryPoint}" + } + } } minHeapSize = "512m" maxHeapSize = "512m" diff --git a/halyard-cli/halyard-cli.gradle b/halyard-cli/halyard-cli.gradle index 125a651ebc..185633d4af 100644 --- a/halyard-cli/halyard-cli.gradle +++ b/halyard-cli/halyard-cli.gradle @@ -30,7 +30,7 @@ dependencies { testImplementation 'uk.org.webcompere:system-stubs-jupiter:1.2.0' testImplementation 'org.junit.jupiter:junit-jupiter-api' testImplementation 'org.junit.jupiter:junit-jupiter-params' - testImplementation 'org.spockframework:spock-core' + testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5' testImplementation 'org.springframework:spring-test' testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine" } diff --git a/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy b/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy index 194e55d462..b54143865e 100644 --- a/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy +++ b/halyard-core/src/test/groovy/com/netflix/spinnaker/halyard/core/resource/v1/LocalDiskProfileReaderSpec.groovy @@ -22,8 +22,6 @@ import org.apache.commons.compress.archivers.ArchiveException import org.apache.commons.compress.archivers.ArchiveStreamFactory import org.apache.commons.compress.archivers.tar.TarArchiveInputStream import org.apache.commons.io.IOUtils -import org.junit.jupiter.api.extension.ExtendWith -import org.springframework.context.annotation.Import import org.springframework.test.context.ContextConfiguration import spock.lang.Specification diff --git a/halyard-web/config/halyard.yml b/halyard-web/config/halyard.yml index 2a3c6b3a04..a47ddbd7b0 100644 --- a/halyard-web/config/halyard.yml +++ b/halyard-web/config/halyard.yml @@ -35,3 +35,7 @@ backup: retrofit: logLevel: BASIC + +logging: + level: + root: DEBUG diff --git a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java index 2611023cf5..4051231a89 100644 --- a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java +++ b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/config/v1/WebConfiguration.java @@ -7,8 +7,8 @@ @Configuration public class WebConfiguration implements WebMvcConfigurer { - @Override - public void configurePathMatch(PathMatchConfigurer configurer) { - configurer.setUseTrailingSlashMatch(true); - } + @Override + public void configurePathMatch(PathMatchConfigurer configurer) { + configurer.setUseTrailingSlashMatch(true); + } } From 43e7ede06b7248ff88f769e9183ca0adcad682fb Mon Sep 17 00:00:00 2001 From: SheetalAtre Date: Wed, 2 Aug 2023 19:06:24 +0530 Subject: [PATCH 157/170] fix(all): fix build was failing after adding latest version of com.google.guava:guava:32.1.1-jre for weekly cve report --- halyard-cli/halyard-cli.gradle | 1 + halyard-config/halyard-config.gradle | 2 ++ halyard-core/halyard-core.gradle | 2 ++ halyard-proto/halyard-proto.gradle | 2 +- halyard-web/halyard-web.gradle | 2 ++ 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/halyard-cli/halyard-cli.gradle b/halyard-cli/halyard-cli.gradle index 185633d4af..53ceebf9fb 100644 --- a/halyard-cli/halyard-cli.gradle +++ b/halyard-cli/halyard-cli.gradle @@ -20,6 +20,7 @@ dependencies { implementation 'org.yaml:snakeyaml:2.0' implementation 'com.beust:jcommander:1.81' implementation 'org.nibor.autolink:autolink:0.10.0' + implementation 'com.google.guava:guava:32.1.1-jre' implementation project(':halyard-config') implementation project(':halyard-core') diff --git a/halyard-config/halyard-config.gradle b/halyard-config/halyard-config.gradle index f7f99e2185..e047997f07 100644 --- a/halyard-config/halyard-config.gradle +++ b/halyard-config/halyard-config.gradle @@ -36,6 +36,8 @@ dependencies { implementation "io.spinnaker.kork:kork-cloud-config-server" implementation 'com.amazonaws:aws-java-sdk-core:1.11.534' implementation 'com.amazonaws:aws-java-sdk-s3:1.11.534' + implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'com.google.apis:google-api-services-compute:alpha-rev20200526-1.30.9' implementation 'com.google.apis:google-api-services-appengine:v1-rev92-1.25.0' implementation "com.azure.resourcemanager:azure-resourcemanager:2.19.0" diff --git a/halyard-core/halyard-core.gradle b/halyard-core/halyard-core.gradle index 706f282aa4..d7781236b9 100644 --- a/halyard-core/halyard-core.gradle +++ b/halyard-core/halyard-core.gradle @@ -26,6 +26,8 @@ dependencies { exclude group: 'org.apache.groovy', module: 'groovy' } implementation 'org.apache.groovy:groovy:4.0.9' + implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'org.yaml:snakeyaml:2.0' implementation 'com.google.http-client:google-http-client-jackson2:+' implementation 'com.google.apis:google-api-services-compute:+' //alpha-rev20200526-1.30.9") diff --git a/halyard-proto/halyard-proto.gradle b/halyard-proto/halyard-proto.gradle index 6b319abc5f..1ace4f92b3 100644 --- a/halyard-proto/halyard-proto.gradle +++ b/halyard-proto/halyard-proto.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.google.protobuf' dependencies { implementation 'com.google.protobuf:protobuf-java' - implementation 'com.google.guava:guava:23.5-jre' + implementation 'com.google.guava:guava:32.1.1-jre' api 'com.google.api.grpc:grpc-google-common-protos:1.0.5' implementation 'io.grpc:grpc-all:1.8.0' diff --git a/halyard-web/halyard-web.gradle b/halyard-web/halyard-web.gradle index 40bbc96d3f..d926939e84 100644 --- a/halyard-web/halyard-web.gradle +++ b/halyard-web/halyard-web.gradle @@ -31,6 +31,8 @@ dependencies { implementation "io.spinnaker.kork:kork-config" runtimeOnly "io.spinnaker.kork:kork-actuator" implementation "jakarta.validation:jakarta.validation-api:3.0.2" + implementation "com.google.guava:guava:32.1.1-jre" + implementation project(':halyard-backup') // halyard-cli is required as a dependency even though it is not used directly by halyard-web // because the halyard installation only install halyard-web but the CLI expects to find the From f0059019ad9bccfe41029f7dee62142d9a4b2176 Mon Sep 17 00:00:00 2001 From: SheetalAtre Date: Mon, 14 Aug 2023 15:41:45 +0530 Subject: [PATCH 158/170] fix(halyard) : handle 405 error code for PUT /persistentStorage api for OP-20924 --- .../spinnaker/halyard/cli/services/v1/DaemonService.java | 2 +- .../halyard/controllers/v1/PersistentStorageController.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java index 0f0ce5714a..fd1be90e1c 100644 --- a/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java +++ b/halyard-cli/src/main/java/com/netflix/spinnaker/halyard/cli/services/v1/DaemonService.java @@ -179,7 +179,7 @@ DaemonTask setFeatures( @Query("validate") boolean validate, @Body Features features); - @PUT("/v1/config/deployments/{deploymentName}/persistentStorage") + @PUT("/v1/config/deployments/{deploymentName}/persistentStorage/") DaemonTask setPersistentStorage( @Path("deploymentName") String deploymentName, @Query("validate") boolean validate, diff --git a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/controllers/v1/PersistentStorageController.java b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/controllers/v1/PersistentStorageController.java index 9e48a98492..6f8b0b92f1 100644 --- a/halyard-web/src/main/java/com/netflix/spinnaker/halyard/controllers/v1/PersistentStorageController.java +++ b/halyard-web/src/main/java/com/netflix/spinnaker/halyard/controllers/v1/PersistentStorageController.java @@ -50,7 +50,9 @@ DaemonTask getPersistentStorage( .execute(validationSettings); } - @RequestMapping(value = "/", method = RequestMethod.PUT) + @RequestMapping( + value = {"", "/"}, + method = RequestMethod.PUT) DaemonTask setPersistentStorage( @PathVariable String deploymentName, @ModelAttribute ValidationSettings validationSettings, From 88575c9b4db03c981dedae2a682992d9bb6c9499 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Thu, 17 Aug 2023 08:45:53 +0530 Subject: [PATCH 159/170] updating github actions with image format updating github actions with image format --- .github/workflows/halyard-oes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 324a9bba64..799017d7b6 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -29,7 +29,7 @@ jobs: id: build_variables run: | echo ::set-output name=REPO::ubi8-halyard-cve - echo ::set-output name=VERSION::"$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" + echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d%H%M')" - name: Login to Quay uses: docker/login-action@v1 # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 From 5bd079f6214f16817967aa71ffbaa2b2771d4593 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Tue, 19 Sep 2023 15:33:04 +0530 Subject: [PATCH 160/170] Create halyard-oes-branch.yml --- .github/workflows/halyard-oes-branch.yml | 78 ++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/halyard-oes-branch.yml diff --git a/.github/workflows/halyard-oes-branch.yml b/.github/workflows/halyard-oes-branch.yml new file mode 100644 index 0000000000..5e6ccfc609 --- /dev/null +++ b/.github/workflows/halyard-oes-branch.yml @@ -0,0 +1,78 @@ +name: Branch Build halyard with local branch + +on: + workflow_call: + workflow_dispatch: + # Inputs the workflow accepts. + inputs: + org: + # Friendly description to be shown in the UI instead of 'name' + description: 'Organisation name' + # Default value if no value is explicitly provided + default: 'opsmx' + # Input has to be provided for the workflow to run + required: true + # The data type of the input + type: string + branch: + # Friendly description to be shown in the UI instead of 'name' + description: 'Branch name' + # Default value if no value is explicitly provided + default: 'master' + # Input has to be provided for the workflow to run + required: true + # The data type of the input + type: string + + +env: + GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g + CONTAINER_REGISTRY: quay.io/opsmxpublic + +jobs: + branch-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + repository: ${{ inputs.org }}/halyard-oes + ref: refs/heads/${{ inputs.branch }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - uses: actions/setup-java@v2 + with: + java-version: 17 + distribution: 'temurin' + - name: Prepare build variables + id: build_variables + run: | + echo ::set-output name=REPO::ubi8-halyard-cve + echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d%H%M')" + - name: Login to Quay + uses: docker/login-action@v1 + # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_KEY }} + - name: Build + env: + ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} + run: | + sed -e 's/NEXUS_USERNAME/${{ secrets.NEXUS_USERNAME }}/' -i settings.gradle + sed -e 's/NEXUS_PASSWORD/${{ secrets.NEXUS_PASSWORD }}/' -i settings.gradle + sed -e 's/NEXUS_USERNAME/${{ secrets.NEXUS_USERNAME }}/' -i build.gradle + sed -e 's/NEXUS_PASSWORD/${{ secrets.NEXUS_PASSWORD }}/' -i build.gradle + + ./gradlew --no-daemon -PenableCrossCompilerPlugin=true halyard-web:installDist -x test + + - name: dockerBuildpush + uses: docker/build-push-action@v2 + with: + context: . + file: docker/ubi8/Dockerfile-fips + push: true + tags: | + "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" From 9901b3dcaab3af4e710730c356c3e1808bd3bf15 Mon Sep 17 00:00:00 2001 From: SusmithaGundu Date: Tue, 19 Dec 2023 14:27:26 +0530 Subject: [PATCH 161/170] fix for CVE-2022-46751 --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index ba704f85c9..4049d4c926 100644 --- a/build.gradle +++ b/build.gradle @@ -62,6 +62,10 @@ subprojects { } dependencies { + + constraints{ + api 'org.apache.ivy:ivy:2.5.2' + } implementation enforcedPlatform("io.spinnaker.kork:kork-bom:$korkVersion"){ exclude group: 'org.apache.groovy', module: 'groovy' } From 95f89b46abb5bacc6456269928c68e8d61343889 Mon Sep 17 00:00:00 2001 From: SusmithaGundu <93190458+SusmithaGundu@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:43:06 +0530 Subject: [PATCH 162/170] fix for CVE-2023-34054 --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 4049d4c926..d20d245eec 100644 --- a/build.gradle +++ b/build.gradle @@ -65,6 +65,7 @@ subprojects { constraints{ api 'org.apache.ivy:ivy:2.5.2' + implementation 'io.projectreactor.netty:reactor-netty-http:1.1.13' } implementation enforcedPlatform("io.spinnaker.kork:kork-bom:$korkVersion"){ exclude group: 'org.apache.groovy', module: 'groovy' From 469e75213dbc323856f19839d272d6ed96036a71 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Tue, 20 Feb 2024 13:36:08 +0530 Subject: [PATCH 163/170] Update halyard-oes.yml --- .github/workflows/halyard-oes.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 799017d7b6..8bcf3e1bf3 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -29,7 +29,12 @@ jobs: id: build_variables run: | echo ::set-output name=REPO::ubi8-halyard-cve - echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d%H%M')" + #echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d%H%M')" + #echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d')" + #echo ::set-output name=VERSION::"1.55.1$(date --utc +'%-m%d')" + echo ::set-output name=VERSION::"1.55.1" + echo "::set-output name=GITHASH::$(git rev-parse --short HEAD)" + echo "::set-output name=BUILDDATE::$(date -u +"%Y%m%d%H%M")" - name: Login to Quay uses: docker/login-action@v1 # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 @@ -55,4 +60,5 @@ jobs: file: docker/ubi8/Dockerfile-fips push: true tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" + "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-${{ steps.build_variables.outputs.GITHASH }}-${{ steps.build_variables.outputs.BUILDDATE }}" + From 5bdc36af9e0460cf690b09c0a0afaa360f748dd8 Mon Sep 17 00:00:00 2001 From: keerthibingi <86963947+keerthibingi@users.noreply.github.com> Date: Tue, 5 Mar 2024 11:41:19 +0530 Subject: [PATCH 164/170] Update Dockerfile-fips --- docker/ubi8/Dockerfile-fips | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/ubi8/Dockerfile-fips b/docker/ubi8/Dockerfile-fips index a170f843e3..57935156fa 100644 --- a/docker/ubi8/Dockerfile-fips +++ b/docker/ubi8/Dockerfile-fips @@ -45,7 +45,7 @@ ENV KUBECTL_RELEASE=1.15.10 ENV AWS_BINARY_RELEASE_DATE=2020-02-22 RUN yum -y install git bash wget curl - +RUN yum -y remove tar vim vi RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ chmod +x /usr/local/bin/hal From 9b704c2ae81773a75373ac7f20e5600c833e9e31 Mon Sep 17 00:00:00 2001 From: aman-agrawal <9412470@gmail.com> Date: Tue, 12 Mar 2024 10:14:30 +0530 Subject: [PATCH 165/170] OP-21877 Remove explicit google-guava version --- halyard-cli/halyard-cli.gradle | 2 +- halyard-config/halyard-config.gradle | 2 +- halyard-core/halyard-core.gradle | 2 +- halyard-proto/halyard-proto.gradle | 2 +- halyard-web/halyard-web.gradle | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/halyard-cli/halyard-cli.gradle b/halyard-cli/halyard-cli.gradle index 53ceebf9fb..6661993b9b 100644 --- a/halyard-cli/halyard-cli.gradle +++ b/halyard-cli/halyard-cli.gradle @@ -20,7 +20,7 @@ dependencies { implementation 'org.yaml:snakeyaml:2.0' implementation 'com.beust:jcommander:1.81' implementation 'org.nibor.autolink:autolink:0.10.0' - implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'com.google.guava:guava' implementation project(':halyard-config') implementation project(':halyard-core') diff --git a/halyard-config/halyard-config.gradle b/halyard-config/halyard-config.gradle index e047997f07..f8689a8f5d 100644 --- a/halyard-config/halyard-config.gradle +++ b/halyard-config/halyard-config.gradle @@ -36,7 +36,7 @@ dependencies { implementation "io.spinnaker.kork:kork-cloud-config-server" implementation 'com.amazonaws:aws-java-sdk-core:1.11.534' implementation 'com.amazonaws:aws-java-sdk-s3:1.11.534' - implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'com.google.guava:guava' implementation 'com.google.apis:google-api-services-compute:alpha-rev20200526-1.30.9' implementation 'com.google.apis:google-api-services-appengine:v1-rev92-1.25.0' diff --git a/halyard-core/halyard-core.gradle b/halyard-core/halyard-core.gradle index d7781236b9..44d6de2031 100644 --- a/halyard-core/halyard-core.gradle +++ b/halyard-core/halyard-core.gradle @@ -26,7 +26,7 @@ dependencies { exclude group: 'org.apache.groovy', module: 'groovy' } implementation 'org.apache.groovy:groovy:4.0.9' - implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'com.google.guava:guava' implementation 'org.yaml:snakeyaml:2.0' implementation 'com.google.http-client:google-http-client-jackson2:+' diff --git a/halyard-proto/halyard-proto.gradle b/halyard-proto/halyard-proto.gradle index 1ace4f92b3..e7e1a1855a 100644 --- a/halyard-proto/halyard-proto.gradle +++ b/halyard-proto/halyard-proto.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.google.protobuf' dependencies { implementation 'com.google.protobuf:protobuf-java' - implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'com.google.guava:guava' api 'com.google.api.grpc:grpc-google-common-protos:1.0.5' implementation 'io.grpc:grpc-all:1.8.0' diff --git a/halyard-web/halyard-web.gradle b/halyard-web/halyard-web.gradle index d926939e84..fef4d2e98e 100644 --- a/halyard-web/halyard-web.gradle +++ b/halyard-web/halyard-web.gradle @@ -31,7 +31,7 @@ dependencies { implementation "io.spinnaker.kork:kork-config" runtimeOnly "io.spinnaker.kork:kork-actuator" implementation "jakarta.validation:jakarta.validation-api:3.0.2" - implementation "com.google.guava:guava:32.1.1-jre" + implementation "com.google.guava:guava" implementation project(':halyard-backup') // halyard-cli is required as a dependency even though it is not used directly by halyard-web From 76d4057c28a05a7a08804820bb75ba39b2cd30ac Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Thu, 21 Mar 2024 18:08:29 +0530 Subject: [PATCH 166/170] Create Dockerfile-dev --- docker/ubi8/Dockerfile-dev | 62 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docker/ubi8/Dockerfile-dev diff --git a/docker/ubi8/Dockerfile-dev b/docker/ubi8/Dockerfile-dev new file mode 100644 index 0000000000..a170f843e3 --- /dev/null +++ b/docker/ubi8/Dockerfile-dev @@ -0,0 +1,62 @@ +FROM registry.access.redhat.com/ubi8/ubi:8.8 as java-builder +LABEL maintainer="OpsMx" +ARG JAVA_PACKAGE=java-17-openjdk-jmods +RUN yum -y update && yum -y install --nodocs ${JAVA_PACKAGE} + +# Build a custom JRE. +# For now, we will include all modules. We could try to remove the ones +# we don't need to reduce image size and security attack surface. +WORKDIR /jrebuild +RUN java --list-modules | cut -d'@' -f1 > modules +RUN jlink --output runtime --add-modules `paste -sd, - < modules` --compress 2 --vm server + +# Build a minimal base image with our custom Java installed. +FROM registry.access.redhat.com/ubi8/ubi:8.8 AS java-base +LABEL maintainer="OpsMx" +COPY --from=java-builder /jrebuild/runtime /opsmx-java-runtime +ARG OPSMXUSER=1001 +ENV JAVA_HOME=/opsmx-java-runtime \ + PATH=${PATH}:/opsmx-java-runtime/bin \ + WORK_DIR=/opsmx/workdir \ + CONF_DIR=/opsmx/conf + +# Enabling fips mode +RUN fips-mode-setup --enable + +# Setting crypto policies to FIPS +RUN update-crypto-policies --set FIPS + +FROM java-builder AS awscli-install +RUN yum install -y unzip +RUN curl https://awscli.amazonaws.com/awscli-exe-linux-`uname -m`.zip -o awscliv2.zip +RUN unzip awscliv2.zip +RUN ./aws/install + +FROM java-builder AS base +COPY --from=awscli-install /usr/local/aws-cli /usr/local/aws-cli/ +RUN ln -sf /usr/local/aws-cli/v2/current/bin/aws /usr/local/bin/aws && ln -sf /usr/local/aws-cli/v2/current/bin/aws_completer /usr/local/bin/aws_completer + +ARG TARGETARCH + +COPY halyard-web/build/install/halyard /opt/halyard + +ENV KUBECTL_VERSION=v1.22.0 +ENV KUBECTL_RELEASE=1.15.10 +ENV AWS_BINARY_RELEASE_DATE=2020-02-22 + +RUN yum -y install git bash wget curl + +RUN echo '#!/usr/bin/env bash' > /usr/local/bin/hal && \ + echo '/opt/halyard/bin/hal "$@"' >> /usr/local/bin/hal && \ + chmod +x /usr/local/bin/hal + +RUN wget https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \ + chmod +x kubectl && \ + mv ./kubectl /usr/local/bin/kubectl + +RUN curl -f -o /usr/local/bin/aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/${KUBECTL_RELEASE}/${AWS_BINARY_RELEASE_DATE}/bin/linux/amd64/aws-iam-authenticator && \ + chmod +x /usr/local/bin/aws-iam-authenticator + +RUN adduser spinnaker +USER spinnaker +CMD ["/opt/halyard/bin/halyard"] From 5fbb39189b2be71f6f4d623413cfbff84f4f1df7 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Thu, 21 Mar 2024 18:08:48 +0530 Subject: [PATCH 167/170] Update halyard-oes.yml --- .github/workflows/halyard-oes.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 8bcf3e1bf3..1388c8eace 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -61,4 +61,13 @@ jobs: push: true tags: | "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-${{ steps.build_variables.outputs.GITHASH }}-${{ steps.build_variables.outputs.BUILDDATE }}" + + - name: dockerBuildpush + uses: docker/build-push-action@v2 + with: + context: . + file: docker/ubi8/Dockerfile-dev + push: true + tags: | + "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-${{ steps.build_variables.outputs.GITHASH }}-${{ steps.build_variables.outputs.BUILDDATE }}-dev" From 06fedbd4170e1f933ff6776e68457868002013d4 Mon Sep 17 00:00:00 2001 From: Yugandharkumar Date: Thu, 21 Mar 2024 18:31:44 +0530 Subject: [PATCH 168/170] Update halyard-oes.yml --- .github/workflows/halyard-oes.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 1388c8eace..03b654fecf 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -53,7 +53,7 @@ jobs: ./gradlew --no-daemon -PenableCrossCompilerPlugin=true halyard-web:installDist -x test - - name: dockerBuildpush + - name: dockerBuildpushFips uses: docker/build-push-action@v2 with: context: . @@ -62,7 +62,7 @@ jobs: tags: | "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-${{ steps.build_variables.outputs.GITHASH }}-${{ steps.build_variables.outputs.BUILDDATE }}" - - name: dockerBuildpush + - name: dockerBuildpushDev uses: docker/build-push-action@v2 with: context: . @@ -70,4 +70,10 @@ jobs: push: true tags: | "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-${{ steps.build_variables.outputs.GITHASH }}-${{ steps.build_variables.outputs.BUILDDATE }}-dev" + - id: get-build-name + run: | + imageName="${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-${{ steps.build_variables.outputs.GITHASH }}-${{ steps.build_variables.outputs.BUILDDATE }}" + echo "clouddriver=$imageName" >> $GITHUB_OUTPUT + echo "clouddriverDev=$imageName"-dev >> $GITHUB_OUTPUT + From d41a11f71a0b3d96541e8bb5abb2fc0f96b24473 Mon Sep 17 00:00:00 2001 From: emanipravallika Date: Tue, 11 Jun 2024 11:40:54 +0530 Subject: [PATCH 169/170] OP-22255: Rebased with OSS-1.33.2(tag-v1.65) over OES-1.30.1 base. Commited changes for GitHubWorkflows and gradle.properties --- .github/dependabot.yml | 7 -- .github/workflows/build.yml | 86 -------------- .github/workflows/halyard-oes.yml | 10 +- .github/workflows/pr.yml | 66 ----------- .github/workflows/release.yml | 105 ------------------ gradle.properties | 9 +- .../halyard-integration.gradle | 2 +- 7 files changed, 10 insertions(+), 275 deletions(-) delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/pr.yml delete mode 100644 .github/workflows/release.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index f9ecf576e1..0000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: 2 -updates: - # Maintain dependencies for GitHub Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "monthly" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index af85971da4..0000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: Branch Build - -on: - push: - branches: - - master - - release-* - -env: - GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g - CONTAINER_REGISTRY: us-docker.pkg.dev/spinnaker-community/docker - -jobs: - branch-build: - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: 'zulu' - cache: 'gradle' - - name: Prepare build variables - id: build_variables - run: | - echo REPO="${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT - echo VERSION="$(git describe --tags --abbrev=0 --match='v[0-9]*' | cut -c2-)-dev-${GITHUB_REF_NAME}-$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT - - name: Build - env: - ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} - run: ./gradlew build --stacktrace ${{ steps.build_variables.outputs.REPO }}-web:installDist - - name: Build local slim container image for testing - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.slim - load: true - platforms: local - tags: | - "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated" - - name: Test local slim container image - env: - FULL_DOCKER_IMAGE_NAME: "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated" - run: ./gradlew ${{ steps.build_variables.outputs.REPO }}-integration:test - - name: Login to GAR - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - uses: docker/login-action@v3 - # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 - with: - registry: us-docker.pkg.dev - username: _json_key - password: ${{ secrets.GAR_JSON_KEY }} - - name: Build and publish slim container image - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.slim - platforms: linux/amd64,linux/arm64 - push: true - tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ github.ref_name }}-latest-unvalidated" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ github.ref_name }}-latest-unvalidated-slim" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated-slim" - - name: Build and publish ubuntu container image - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.ubuntu - push: true - tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ github.ref_name }}-latest-unvalidated-ubuntu" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-unvalidated-ubuntu" diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 03b654fecf..14b974c928 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches: - - OES-1.30.x-master-adhoc + - OES-1.33.x env: GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx6g -Xms6g @@ -29,10 +29,10 @@ jobs: id: build_variables run: | echo ::set-output name=REPO::ubi8-halyard-cve - #echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d%H%M')" - #echo ::set-output name=VERSION::"1.55.1$(date --utc +'%Y%m%d')" - #echo ::set-output name=VERSION::"1.55.1$(date --utc +'%-m%d')" - echo ::set-output name=VERSION::"1.55.1" + #echo ::set-output name=VERSION::"1.65$(date --utc +'%Y%m%d%H%M')" + #echo ::set-output name=VERSION::"1.65$(date --utc +'%Y%m%d')" + #echo ::set-output name=VERSION::"1.65$(date --utc +'%-m%d')" + echo ::set-output name=VERSION::"1.65" echo "::set-output name=GITHASH::$(git rev-parse --short HEAD)" echo "::set-output name=BUILDDATE::$(date -u +"%Y%m%d%H%M")" - name: Login to Quay diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml deleted file mode 100644 index 2b068dfafd..0000000000 --- a/.github/workflows/pr.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: PR Build - -on: [ pull_request ] - -env: - GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g - CONTAINER_REGISTRY: us-docker.pkg.dev/spinnaker-community/docker - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: 'zulu' - cache: 'gradle' - - name: Prepare build variables - id: build_variables - run: | - echo REPO="${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT - echo VERSION="$(git describe --tags --abbrev=0 --match='v[0-9]*' | cut -c2-)-dev-pr-$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT - - name: Build - env: - ORG_GRADLE_PROJECT_version: ${{ steps.build_variables.outputs.VERSION }} - run: ./gradlew build ${{ steps.build_variables.outputs.REPO }}-web:installDist - - name: Build slim container image - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.slim - platforms: linux/amd64,linux/arm64 - tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:latest" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:latest-slim" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-slim" - - name: Build ubuntu container image - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.ubuntu - platforms: linux/amd64,linux/arm64 - tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:latest-ubuntu" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}-ubuntu" - - name: Build local slim container image for testing - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.slim - load: true - platforms: local - tags: | - "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" - - name: Test local slim container image - env: - FULL_DOCKER_IMAGE_NAME: "${{ steps.build_variables.outputs.REPO }}:${{ steps.build_variables.outputs.VERSION }}" - run: ./gradlew ${{ steps.build_variables.outputs.REPO }}-integration:test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 0e68513fc1..0000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,105 +0,0 @@ -name: Release - -on: - push: - tags: - - "v[0-9]+.[0-9]+.[0-9]+" - - "v[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+" - -env: - GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g - CONTAINER_REGISTRY: us-docker.pkg.dev/spinnaker-community/docker - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - uses: actions/setup-java@v4 - with: - java-version: 11 - distribution: 'zulu' - cache: 'gradle' - - name: Assemble release info - id: release_info - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - . .github/workflows/release_info.sh ${{ github.event.repository.full_name }} - echo CHANGELOG=$(echo -e "${CHANGELOG}") >> $GITHUB_OUTPUT - echo SKIP_RELEASE="${SKIP_RELEASE}" >> $GITHUB_OUTPUT - echo IS_CANDIDATE="${IS_CANDIDATE}" >> $GITHUB_OUTPUT - echo RELEASE_VERSION="${RELEASE_VERSION}" >> $GITHUB_OUTPUT - - name: Prepare build variables - id: build_variables - run: | - echo REPO="${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT - echo VERSION="$(git rev-parse --short HEAD)-$(date --utc +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT - - name: Release build - env: - ORG_GRADLE_PROJECT_version: ${{ steps.release_info.outputs.RELEASE_VERSION }} - ORG_GRADLE_PROJECT_nexusPublishEnabled: true - ORG_GRADLE_PROJECT_nexusUsername: ${{ secrets.NEXUS_USERNAME }} - ORG_GRADLE_PROJECT_nexusPassword: ${{ secrets.NEXUS_PASSWORD }} - ORG_GRADLE_PROJECT_nexusPgpSigningKey: ${{ secrets.NEXUS_PGP_SIGNING_KEY }} - ORG_GRADLE_PROJECT_nexusPgpSigningPassword: ${{ secrets.NEXUS_PGP_SIGNING_PASSWORD }} - run: | - ./gradlew --info build ${{ steps.build_variables.outputs.REPO }}-web:installDist publishToNexus closeAndReleaseNexusStagingRepository - - name: Publish apt packages to Google Artifact Registry - env: - ORG_GRADLE_PROJECT_version: ${{ steps.release_info.outputs.RELEASE_VERSION }} - ORG_GRADLE_PROJECT_artifactRegistryPublishEnabled: true - GAR_JSON_KEY: ${{ secrets.GAR_JSON_KEY }} - run: | - ./gradlew --info publish - - name: Login to GAR - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - uses: docker/login-action@v3 - # use service account flow defined at: https://github.com/docker/login-action#service-account-based-authentication-1 - with: - registry: us-docker.pkg.dev - username: _json_key - password: ${{ secrets.GAR_JSON_KEY }} - - name: Build and publish slim container image - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.slim - platforms: linux/amd64,linux/arm64 - push: true - tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-unvalidated" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-unvalidated-slim" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-${{ steps.build_variables.outputs.VERSION }}-unvalidated-slim" - - name: Build and publish ubuntu container image - # Only run this on repositories in the 'spinnaker' org, not on forks. - if: startsWith(github.repository, 'spinnaker/') - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.ubuntu - platforms: linux/amd64,linux/arm64 - push: true - tags: | - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-unvalidated-ubuntu" - "${{ env.CONTAINER_REGISTRY }}/${{ steps.build_variables.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-${{ steps.build_variables.outputs.VERSION }}-unvalidated-ubuntu" - - name: Create release - if: steps.release_info.outputs.SKIP_RELEASE == 'false' - uses: softprops/action-gh-release@v2 - with: - body: | - ${{ steps.release_info.outputs.CHANGELOG }} - draft: false - name: ${{ github.event.repository.name }} ${{ github.ref_name }} - prerelease: ${{ steps.release_info.outputs.IS_CANDIDATE }} - tag_name: ${{ github.ref }} - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/gradle.properties b/gradle.properties index 4ade2fcd2e..cf72120afb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,9 @@ -clouddriverVersion=1-0-SNAPSHOT -fiatVersion=1-0-SNAPSHOT -korkVersion=1-0-SNAPSHOT -front50Version=1-0-SNAPSHOT +clouddriverVersion=1.33.0-SNAPSHOT +fiatVersion=1.33.0-SNAPSHOT +korkVersion=1.33.0-SNAPSHOT +front50Version=1.33.0-SNAPSHOT org.gradle.parallel=true spinnakerGradleVersion=1-0-SNAPSHOT -#targetJava11=true # To enable a composite reference to a project, set the # project property `'Composite=true'`. diff --git a/halyard-integration/halyard-integration.gradle b/halyard-integration/halyard-integration.gradle index c860d5c9da..dc2d60b6e4 100644 --- a/halyard-integration/halyard-integration.gradle +++ b/halyard-integration/halyard-integration.gradle @@ -7,7 +7,7 @@ dependencies { testImplementation "org.testcontainers:junit-jupiter" testImplementation "org.testcontainers:mysql" testRuntimeOnly "ch.qos.logback:logback-classic" - testRuntimeOnly "mysql:mysql-connector-java" + testRuntimeOnly "com.mysql:mysql-connector-j" } test.configure { From 500bac09541d16d351e8dc5bd51726cb1206ecb7 Mon Sep 17 00:00:00 2001 From: emanipravallika Date: Tue, 11 Jun 2024 12:05:34 +0530 Subject: [PATCH 170/170] OP-22255: updating halyard-oes.yml --- .github/workflows/halyard-oes.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/halyard-oes.yml b/.github/workflows/halyard-oes.yml index 14b974c928..0457a924c5 100644 --- a/.github/workflows/halyard-oes.yml +++ b/.github/workflows/halyard-oes.yml @@ -29,10 +29,10 @@ jobs: id: build_variables run: | echo ::set-output name=REPO::ubi8-halyard-cve - #echo ::set-output name=VERSION::"1.65$(date --utc +'%Y%m%d%H%M')" - #echo ::set-output name=VERSION::"1.65$(date --utc +'%Y%m%d')" - #echo ::set-output name=VERSION::"1.65$(date --utc +'%-m%d')" - echo ::set-output name=VERSION::"1.65" + #echo ::set-output name=VERSION::"1.65.0$(date --utc +'%Y%m%d%H%M')" + #echo ::set-output name=VERSION::"1.65.0$(date --utc +'%Y%m%d')" + #echo ::set-output name=VERSION::"1.65.0$(date --utc +'%-m%d')" + echo ::set-output name=VERSION::"1.65.0" echo "::set-output name=GITHASH::$(git rev-parse --short HEAD)" echo "::set-output name=BUILDDATE::$(date -u +"%Y%m%d%H%M")" - name: Login to Quay