diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 0d55f03db4..61bebcd65f 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -2,7 +2,7 @@ name: Deploy to Azure Spring Cloud with Key Vault on: [push] env: - RESOURCE_GROUP: petclinic-demo # customize this + AZURE_SUBSCRIPTION: # customize this SPRING_CLOUD_SERVICE: petclinic-demo # customize this # ==== APPS ====: API_GATEWAY: api-gateway @@ -56,38 +56,73 @@ jobs: - name: maven build, clean run: | mvn clean package -DskipTests -Denv=cloud - - - name: Install ASC AZ extension - run: az extension add --name spring-cloud - - name: Deploy with AZ CLI commands - run: | - az configure --defaults group=$RESOURCE_GROUP - az configure --defaults spring-cloud=$SPRING_CLOUD_SERVICE - az spring-cloud app deploy --name $API_GATEWAY \ - --jar-path ${{ github.workspace }}/$API_GATEWAY_JAR \ - --jvm-options='-Xms2048m -Xmx2048m -Dspring.profiles.active=mysql' - az spring-cloud app deploy --name $ADMIN_SERVER \ - --jar-path ${{ github.workspace }}/$ADMIN_SERVER_JAR \ - --jvm-options='-Xms2048m -Xmx2048m -Dspring.profiles.active=mysql' - az spring-cloud app deploy --name $CUSTOMERS_SERVICE \ - --jar-path ${{ github.workspace }}/$CUSTOMERS_SERVICE_JAR \ - --jvm-options='-Xms2048m -Xmx2048m -Dspring.profiles.active=mysql' \ - --env MYSQL_SERVER_FULL_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-FULL-NAME }} \ - MYSQL_DATABASE_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-DATABASE-NAME }} \ - MYSQL_SERVER_ADMIN_LOGIN_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-LOGIN-NAME }} \ - MYSQL_SERVER_ADMIN_PASSWORD=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-PASSWORD }} - az spring-cloud app deploy --name $VETS_SERVICE \ - --jar-path ${{ github.workspace }}/$VETS_SERVICE_JAR \ - --jvm-options='-Xms2048m -Xmx2048m -Dspring.profiles.active=mysql' \ - --env MYSQL_SERVER_FULL_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-FULL-NAME }} \ - MYSQL_DATABASE_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-DATABASE-NAME }} \ - MYSQL_SERVER_ADMIN_LOGIN_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-LOGIN-NAME }} \ - MYSQL_SERVER_ADMIN_PASSWORD=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-PASSWORD }} - az spring-cloud app deploy --name $VISITS_SERVICE \ - --jar-path ${{ github.workspace }}/$VISITS_SERVICE_JAR \ - --jvm-options='-Xms2048m -Xmx2048m -Dspring.profiles.active=mysql' \ - --env MYSQL_SERVER_FULL_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-FULL-NAME }} \ - MYSQL_DATABASE_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-DATABASE-NAME }} \ - MYSQL_SERVER_ADMIN_LOGIN_NAME=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-LOGIN-NAME }} \ - MYSQL_SERVER_ADMIN_PASSWORD=${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-PASSWORD }} + - name: Deploy for app api-gateway + uses: Azure/spring-cloud-deploy@v1 + with: + azure-subscription: ${{ env.AZURE_SUBSCRIPTION }} + action: deploy + service-name: ${{ env.SPRING_CLOUD_SERVICE }} + app-name: ${{ env.API_GATEWAY }} + create-new-deployment: true + package: ${{ github.workspace }}/${{ env.API_GATEWAY_JAR }} + jvm-options: -Xms2048m -Xmx2048m -Dspring.profiles.active=mysql + + - name: Deploy for app admin-server + uses: Azure/spring-cloud-deploy@v1 + with: + azure-subscription: ${{ env.AZURE_SUBSCRIPTION }} + action: deploy + service-name: ${{ env.SPRING_CLOUD_SERVICE }} + app-name: ${{ env.ADMIN_SERVER }} + create-new-deployment: true + package: ${{ github.workspace }}/${{ env.ADMIN_SERVER_JAR }} + jvm-options: -Xms2048m -Xmx2048m -Dspring.profiles.active=mysql + + - name: Deploy for app customers-service + uses: Azure/spring-cloud-deploy@v1 + with: + azure-subscription: ${{ env.AZURE_SUBSCRIPTION }} + action: deploy + service-name: ${{ env.SPRING_CLOUD_SERVICE }} + app-name: ${{ env.CUSTOMERS_SERVICE }} + create-new-deployment: true + package: ${{ github.workspace }}/${{ env.CUSTOMERS_SERVICE_JAR }} + jvm-options: -Xms2048m -Xmx2048m -Dspring.profiles.active=mysql + # Environment variables to be entered using the syntax '-key value'. Values containing spaces should be enclosed in double quotes. + environment-variables: "-MYSQL_SERVER_FULL_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-FULL-NAME }} \ + -MYSQL_DATABASE_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-DATABASE-NAME }} \ + -MYSQL_SERVER_ADMIN_LOGIN_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-LOGIN-NAME }} \ + -MYSQL_SERVER_ADMIN_PASSWORD ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-PASSWORD }}" + + - name: Deploy for app vets-service + uses: Azure/spring-cloud-deploy@v1 + with: + azure-subscription: ${{ env.AZURE_SUBSCRIPTION }} + action: deploy + service-name: ${{ env.SPRING_CLOUD_SERVICE }} + app-name: ${{ env.VETS_SERVICE }} + create-new-deployment: true + package: ${{ github.workspace }}/{{ env.$VETS_SERVICE_JAR }} + jvm-options: -Xms2048m -Xmx2048m -Dspring.profiles.active=mysql + # Environment variables to be entered using the syntax '-key value'. Values containing spaces should be enclosed in double quotes. + environment-variables: "-MYSQL_SERVER_FULL_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-FULL-NAME }} \ + -MYSQL_DATABASE_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-DATABASE-NAME }} \ + -MYSQL_SERVER_ADMIN_LOGIN_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-LOGIN-NAME }} \ + -MYSQL_SERVER_ADMIN_PASSWORD ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-PASSWORD }}" + + - name: Deploy for app visits-service + uses: Azure/spring-cloud-deploy@v1 + with: + azure-subscription: ${{ env.AZURE_SUBSCRIPTION }} + action: deploy + service-name: ${{ env.SPRING_CLOUD_SERVICE }} + app-name: ${{ env.VISITS_SERVICE }} + create-new-deployment: true + package: ${{ github.workspace }}/${{ env.VISITS_SERVICE_JAR }} + jvm-options: -Xms2048m -Xmx2048m -Dspring.profiles.active=mysql + # Environment variables to be entered using the syntax '-key value'. Values containing spaces should be enclosed in double quotes. + environment-variables: "-MYSQL_SERVER_FULL_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-FULL-NAME }} \ + -MYSQL_DATABASE_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-DATABASE-NAME }} \ + -MYSQL_SERVER_ADMIN_LOGIN_NAME ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-LOGIN-NAME }} \ + -MYSQL_SERVER_ADMIN_PASSWORD ${{ steps.mysqlsecrets.outputs.MYSQL-SERVER-ADMIN-PASSWORD }}" diff --git a/README.md b/README.md index 18f2bfe585..1dd0d57e3a 100644 --- a/README.md +++ b/README.md @@ -599,10 +599,10 @@ Then, follow [the steps here](https://docs.microsoft.com/azure/spring-cloud/spri In the end, add this service principal as secrets named "AZURE_CREDENTIALS" in your forked GitHub repo following [the steps here](https://docs.microsoft.com/en-us/azure/spring-cloud/spring-cloud-github-actions-key-vault#add-access-policies-for-the-credential). ### Customize your workflow -Finally, edit the workfolw file `.github/workflows/action.yml` in your forked repo to fill in the names of resource group and the Azure Spring Cloud instance name that you just created: +Finally, edit the workfolw file `.github/workflows/action.yml` in your forked repo to fill in the azure subscription id and the Azure Spring Cloud instance name that you just created: ```yml env: - RESOURCE_GROUP: resource-group-name # customize this + AZURE_SUBSCRIPTION: azure-subscription-id # customize this SPRING_CLOUD_SERVICE: azure-spring-cloud-name # customize this ``` After you commited this change, you will see GitHub Actions triggered to build and deploy all the apps in the repo to your Azure Spring Cloud instance.