diff --git a/.github/workflows/ci-integrated.yaml b/.github/workflows/ci-integrated.yaml index f47ddaaa..83fe8e21 100644 --- a/.github/workflows/ci-integrated.yaml +++ b/.github/workflows/ci-integrated.yaml @@ -108,6 +108,9 @@ jobs: Build: needs: [Init] runs-on: ubuntu-20.04 + outputs: + envoyAlphaTag: ${{ steps.setVariables.outputs.alphaTag }} + ciImage: ${{ steps.setVariables.outputs.ciImage }} steps: - uses: actions/checkout@v2 @@ -133,12 +136,13 @@ jobs: - name: Set env variables run: | new_version=`cat VERSION` + alpha_tag="${new_version}-alpha" echo "New version is: $new_version" echo "VERSION=$new_version" >> "$GITHUB_ENV" - echo "CI_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${new_version}-alpha" >> "$GITHUB_ENV" + echo "CI_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${new_version}-${alpha_tag}" >> "$GITHUB_ENV" + echo "::set-output name=ciImage::${{ env.CI_IMAGE }}" echo "CI_LATEST_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:latest" >> "$GITHUB_ENV" - echo "BRANCH_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${{ steps.branch.outputs.branch_name }}-${new_version}" >> "$GITHUB_ENV" - echo "RC_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${new_version}-rc" >> "$GITHUB_ENV" + echo "::set-output name=alphaTag::${alpha_tag}" - name: Docker Build run: | @@ -150,28 +154,27 @@ jobs: - name: Docker tag run: | - docker tag '${{ secrets.DOCKER_REPO }}'/oauth2-proxy:latest ${{ env.BRANCH_IMAGE }} - docker push ${{ env.BRANCH_IMAGE }} + docker tag '${{ secrets.DOCKER_REPO }}'/oauth2-proxy:latest ${{ env.CI_IMAGE }} + docker tag ${{ env.CI_IMAGE }} ${{ env.CI_LATEST_IMAGE }} + docker push ${{ env.CI_LATEST_IMAGE }} + docker push ${{ env.CI_IMAGE }} - - name: Docker Push - if: github.ref == 'refs/heads/edi-foundation-integration' - run: | - docker tag ${{ env.BRANCH_IMAGE }} ${{ env.CI_IMAGE }} - docker push ${{ env.CI_IMAGE }} - - Deploy_And_GW_Integrated_Test: + Deploy_Test_HDS_AUTH_GATEWAY: needs: [Build, Blackduck, Fortify, unit-test] - if: github.ref == 'refs/heads/edi-foundation-integration' - uses: ./.github/workflows/api-gw-integrated-test.yaml + uses: ./.github/workflows/deploy-hds-auth-gateway.yaml + with: + OAUTH2_PROXY_IMAGE: ${{ needs.Build.outputs.envoyAlphaTag }} secrets: VAULT_HOST: ${{ secrets.VAULT_HOST }} VAULT_ROLE_ID: ${{ secrets.VAULT_ROLE_ID }} VAULT_SECRET_ID: ${{ secrets.VAULT_SECRET_ID }} - Release: - if: github.ref == 'refs/heads/edi-foundation-integration' - needs: Deploy_And_GW_Integrated_Test + Promote_Version: + needs: [Deploy_Test_HDS_AUTH_GATEWAY] + if: github.ref == 'refs/heads/release-version' runs-on: ubuntu-20.04 + outputs: + versionTag: ${{ steps.setVariables.outputs.versionTag }} steps: - uses: actions/checkout@v2 @@ -190,17 +193,32 @@ jobs: devops/data/docker-repos/hsdp-edi password | HSDP_DOCKER_PASSWORD ; - name: Set env variables + id: setVariables run: | new_version=`cat VERSION` + echo "New version is: $new_version" echo "CI_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${new_version}-alpha" >> "$GITHUB_ENV" - echo "CI_LATEST_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:latest" >> "$GITHUB_ENV" - echo "RC_IMAGE=docker.na1.hsdp.io/edisp-releases/edi-foundation-oauth2-proxy:${new_version}-rc" >> "$GITHUB_ENV" + echo "VERSION_IMAGE=${{ env.HSDP_DOCKER_REGISTRY }}/edi-foundation-oauth2-proxy:${new_version}" >> "$GITHUB_ENV" + echo "VERSION_TAG=${new_version}" >> "$GITHUB_ENV" + echo "::set-output name=versionTag::${{ env.VERSION_TAG }}" - - name: Login to Docker Repo - run: docker login ${{ env.HSDP_DOCKER_REGISTRY }} --username ${{ env.HSDP_DOCKER_USER }} --password ${{ env.HSDP_DOCKER_PASSWORD }} + - name: Docker login + run: | + docker login --username '${{ secrets.DOCKER_USER }}' --password '${{ secrets.DOCKER_PSWD }}' '${{ secrets.DOCKER_REPO }}' - name: Docker Push run: | docker pull ${{ env.CI_IMAGE }} - docker tag ${{ env.CI_IMAGE }} ${{ env.RC_IMAGE }} - docker push ${{ env.RC_IMAGE }} \ No newline at end of file + docker tag ${{ env.CI_IMAGE }} ${{ env.VERSION_IMAGE }} + docker push ${{ env.VERSION_IMAGE }} + + Replace_OAuth2_Proxy_Tag_in_Terraform_API_Gateway: + needs: [Promote_Version] + if: github.ref == 'refs/heads/release-version' + uses: ./.github/workflows/update-oauth2-proxy-version-at-api-gw.yaml + with: + TOKEN_AUTHENTICATOR_IMAGE: ${{ needs.Promote_Version.outputs.versionTag }} + secrets: + VAULT_HOST: ${{ secrets.VAULT_HOST }} + VAULT_ROLE_ID: ${{ secrets.VAULT_ROLE_ID }} + VAULT_SECRET_ID: ${{ secrets.VAULT_SECRET_ID }} \ No newline at end of file diff --git a/.github/workflows/deploy-hds-auth-gateway.yaml b/.github/workflows/deploy-hds-auth-gateway.yaml new file mode 100644 index 00000000..0f50fb8e --- /dev/null +++ b/.github/workflows/deploy-hds-auth-gateway.yaml @@ -0,0 +1,40 @@ +name: Deploy HDS Auth Gateway with a given Oauth2 Proxy Image Tag + +on: + workflow_call: + inputs: + OAUTH2_PROXY_IMAGE: + type: string + required: true + secrets: + VAULT_HOST: + required: true + VAULT_ROLE_ID: + required: true + VAULT_SECRET_ID: + required: true + +jobs: + Deploy_HDS_Auth_Gateway_With_Token_Authenticator_Image: + runs-on: [self-hosted, research] + steps: + - name: Import Secrets + id: secrets + uses: hashicorp/vault-action@v2.3.1 + with: + url: ${{ secrets.VAULT_HOST }} + method: approle + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + exportEnv: true + secrets: | + devops/data/github/users/sal-devops token | GITHUB_TOKEN ; + + - uses: convictional/trigger-workflow-and-wait@v1.6.1 + with: + owner: philips-internal + repo: hds-auth-gateway + github_token: ${{ env.GITHUB_TOKEN }} + client_payload: '{"oauth2proxytag": "${{ inputs.OAUTH2_PROXY_IMAGE }}"}' + workflow_file_name: ci.yaml + ref: release-version \ No newline at end of file diff --git a/.github/workflows/update-oauth2-proxy-version-at-api-gw.yaml b/.github/workflows/update-oauth2-proxy-version-at-api-gw.yaml new file mode 100644 index 00000000..8d0aa7f8 --- /dev/null +++ b/.github/workflows/update-oauth2-proxy-version-at-api-gw.yaml @@ -0,0 +1,40 @@ +name: Update OAuth2 Proxy version at API-GW + +on: + workflow_call: + inputs: + OAUTH2_PROXY_IMAGE: + type: string + required: true + secrets: + VAULT_HOST: + required: true + VAULT_ROLE_ID: + required: true + VAULT_SECRET_ID: + required: true + +jobs: + Deploy: + runs-on: [self-hosted, research] + steps: + - name: Import Secrets + id: secrets + uses: hashicorp/vault-action@v2.3.1 + with: + url: ${{ secrets.VAULT_HOST }} + method: approle + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + exportEnv: true + secrets: | + devops/data/github/users/sal-devops token | GITHUB_TOKEN ; + + - uses: convictional/trigger-workflow-and-wait@v1.6.1 + with: + owner: philips-internal + repo: terraform-api-gateway + github_token: ${{ env.GITHUB_TOKEN }} + client_payload: '{"oauth2proxytag": "${{ inputs.OAUTH2_PROXY_IMAGE }}"}' + workflow_file_name: cd-integrated.yml + ref: release-version \ No newline at end of file diff --git a/.github/workflows/workflow-call-ci-gated.yml b/.github/workflows/workflow-call-ci-gated.yml deleted file mode 100644 index 4acfaa37..00000000 --- a/.github/workflows/workflow-call-ci-gated.yml +++ /dev/null @@ -1,144 +0,0 @@ -name: Deploy CI - -on: - workflow_call: - secrets: - INNER_SOURCE_ACTIONS_APP_ID: - required: true - INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64: - required: true - GH_PAT_TOKEN: - required: true - HSDP_DOCKER_USER: - required: true - HSDP_DOCKER_PASSWORD: - required: true - CODESCENE_CI_CD_GITHUB_TOKEN: - required: true - ARM_CLIENT_ID: - required: true - ARM_CLIENT_SECRET: - required: true - -env: - TF_IN_AUTOMATION: true - ARM_SUBSCRIPTION_ID: 74d03f75-4bdb-4666-8095-500178a40764 - ARM_TENANT_ID: 1a407a2d-7675-4d17-8692-b3ac285306e4 -jobs: - terragrunt-workflow-core: - name: Terragrunt - core - runs-on: ubuntu-20.04 - container: alpine/terragrunt:1.0.1 - outputs: - core: ${{ steps.tf_output.outputs.core }} - env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - defaults: - run: - working-directory: ./deploy/ci-gated/core - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v1 - - id: inner-source-action - uses: ./.github/workflows/innersource-action - with: - GH_PAT_TOKEN: ${{ secrets.GH_PAT_TOKEN }} - INNER_SOURCE_ACTIONS_APP_ID: ${{ secrets.INNER_SOURCE_ACTIONS_APP_ID }} - INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64: ${{ secrets.INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64 }} - - - id: plan - uses: ./../.actions/terragrunt-plan-action - with: - working-directory: ./deploy/ci-gated/core - key: client-test-core-plan - - - id: apply - uses: ./../.actions/terragrunt-apply-action - with: - working-directory: ./deploy/ci-gated/core - key: client-test-core-plan - - - id: output - uses: ./.github/workflows/terragrunt-output-action - with: - working-directory: ./deploy/ci-gated/core - key: client-test-core-output - - terragrunt-workflow-cloudfoundry: - name: Terragrunt - cloudfoundry - runs-on: ubuntu-20.04 - needs: [terragrunt-workflow-core] - container: alpine/terragrunt:1.0.1 - env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - defaults: - run: - working-directory: ./deploy/ci-gated/cloudfoundry - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v1 - - id: inner-source-action - uses: ./.github/workflows/innersource-action - with: - GH_PAT_TOKEN: ${{ secrets.GH_PAT_TOKEN }} - INNER_SOURCE_ACTIONS_APP_ID: ${{ secrets.INNER_SOURCE_ACTIONS_APP_ID }} - INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64: ${{ secrets.INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64 }} - - - id: plan - uses: ./../.actions/terragrunt-plan-action - with: - working-directory: ./deploy/ci-gated/cloudfoundry - key: client-test-cloudfoundry-plan - - - id: apply - uses: ./../.actions/terragrunt-apply-action - with: - working-directory: ./deploy/ci-gated/cloudfoundry - key: client-test-cloudfoundry-plan - - terragrunt-workflow-api-gateway: - name: Terragrunt - api-gateway - runs-on: ubuntu-20.04 - needs: [terragrunt-workflow-cloudfoundry] - container: alpine/terragrunt:1.0.1 - env: - ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }} - ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }} - CONFIG: ./envoyconfig_without_multitenancy.yml - SOURCE: url - defaults: - run: - working-directory: ./deploy/ci-gated/api-gateway - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v1 - - id: inner-source-action - uses: ./.github/workflows/innersource-action - with: - GH_PAT_TOKEN: ${{ secrets.GH_PAT_TOKEN }} - INNER_SOURCE_ACTIONS_APP_ID: ${{ secrets.INNER_SOURCE_ACTIONS_APP_ID }} - INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64: ${{ secrets.INNER_SOURCE_ACTIONS_APP_PRIVATE_KEY_BASE64 }} - - - - id: plan - uses: ./../.actions/terragrunt-plan-action - with: - working-directory: ./deploy/ci-gated/api-gateway - key: client-test-api-gateway-plan - - - id: apply - uses: ./../.actions/terragrunt-apply-action - with: - working-directory: ./deploy/ci-gated/api-gateway - key: client-test-api-gateway-plan - - - id: output - uses: ./.github/workflows/terragrunt-output-action - with: - working-directory: ./deploy/ci-gated/api-gateway - key: client-test-api-gateway-output \ No newline at end of file