diff --git a/.github/workflows/CI-CD_XM_Cloud.yml b/.github/workflows/CI-CD_XM_Cloud.yml index 19aae292..9bbbc8f1 100644 --- a/.github/workflows/CI-CD_XM_Cloud.yml +++ b/.github/workflows/CI-CD_XM_Cloud.yml @@ -42,12 +42,13 @@ jobs: XM_CLOUD_CLIENT_SECRET: ${{ secrets.XM_CLOUD_CLIENT_SECRET }} XM_CLOUD_ENVIRONMENT_ID: ${{ secrets.STAGING_XM_CLOUD_ENVIRONMENT_ID }} - deploy-prod: + promote-to-prod: if: github.ref == 'refs/heads/main' needs: deploy-staging - uses: ./.github/workflows/deploy_xmCloud.yml + uses: ./.github/workflows/promote_xmCloud.yml with: environmentName: Production + deploymentId: ${{ needs.deploy-staging.outputs.completedDeploymentId }} secrets: XM_CLOUD_CLIENT_ID: ${{ secrets.XM_CLOUD_CLIENT_ID }} XM_CLOUD_CLIENT_SECRET: ${{ secrets.XM_CLOUD_CLIENT_SECRET }} diff --git a/.github/workflows/deploy_xmCloud.yml b/.github/workflows/deploy_xmCloud.yml index eb21d26b..931105d8 100644 --- a/.github/workflows/deploy_xmCloud.yml +++ b/.github/workflows/deploy_xmCloud.yml @@ -6,6 +6,9 @@ on: environmentName: required: true type: string + outputs: + completedDeploymentId: + value: '${{ jobs.deploy.outputs.completedDeploymentId }}' secrets: XM_CLOUD_CLIENT_ID: required: true @@ -19,6 +22,8 @@ jobs: deploy: name: Deploy the XM Cloud ${{ inputs.environmentName }} Site runs-on: ubuntu-latest + outputs: + completedDeploymentId: ${{ steps.run-deployment.outputs.completedDeploymentId }} steps: - uses: actions/checkout@v3 - uses: actions/setup-dotnet@v2 @@ -29,6 +34,7 @@ jobs: - name: Authenticate CLI with XM Cloud run: dotnet sitecore cloud login --client-credentials --client-id ${{ secrets.XM_CLOUD_CLIENT_ID }} --client-secret ${{ secrets.XM_CLOUD_CLIENT_SECRET }} --allow-write - name: Deploy the CM assets to XM Cloud + id: run-deployment run: | result=$(dotnet sitecore cloud deployment create --environment-id ${{ secrets.XM_CLOUD_ENVIRONMENT_ID }} --upload --json) echo $result @@ -44,4 +50,5 @@ jobs: echo "Operation Failed." exit -1 fi - echo "Deployment Completed" \ No newline at end of file + echo "Deployment Completed" + echo "completedDeploymentId=$deploymentId" >> "$GITHUB_OUTPUT" \ No newline at end of file diff --git a/.github/workflows/promote_xmCloud.yml b/.github/workflows/promote_xmCloud.yml new file mode 100644 index 00000000..5b21f3e9 --- /dev/null +++ b/.github/workflows/promote_xmCloud.yml @@ -0,0 +1,50 @@ +name: Promote an XM Cloud deployment to a different environment. + +on: + workflow_call: + inputs: + environmentName: + required: true + type: string + deploymentId: + required: true + type: string + secrets: + XM_CLOUD_CLIENT_ID: + required: true + XM_CLOUD_CLIENT_SECRET: + required: true + XM_CLOUD_ENVIRONMENT_ID: + required: true + +jobs: + + deploy: + name: Promoting XM Cloud Deployment ${{ inputs.deploymentId }} to ${{ inputs.environmentName }} Site + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v2 + with: + dotnet-version: '6.0.x' + - run: dotnet tool restore + - run: dotnet sitecore --help + - name: Authenticate CLI with XM Cloud + run: dotnet sitecore cloud login --client-credentials --client-id ${{ secrets.XM_CLOUD_CLIENT_ID }} --client-secret ${{ secrets.XM_CLOUD_CLIENT_SECRET }} --allow-write + - name: Deploy the CM assets to XM Cloud + run: | + result=$(dotnet sitecore cloud environment promote --environment-id ${{ secrets.XM_CLOUD_ENVIRONMENT_ID }} --source-id ${{ inputs.deploymentId }} --json) + echo $result + isTimedOut=$(echo $result | jq ' .IsTimedOut') + isCompleted=$(echo $result | jq ' .IsCompleted') + if [ $isTimedOut = true ] + then + echo "Operation Timed Out." + exit -1 + fi + if ! [ $isCompleted = true ] + then + echo "Operation Failed." + exit -1 + fi + echo "Deployment Completed" \ No newline at end of file