Pre-requisites:
- Make sure Java web app is setup in GitHub
- Azure subscription to create web app
What are we going to do in this lab?
1. Create a Web App in Azure Cloud
2. Configure WebApp to Deploy using gitHub Actions
3. Create workflow yaml
4. Add steps/tasks in the yaml file
5. Run the workflow yaml
6. Check if Java Web App is deployed in Azure App Service
How to Create WebApp in Azure Portal?
1. Login portal.azure.com
2. Click on App services
3.Click on + Add or click on Create app service
Click on Web App. Choose your Azure subscription, usually Pay as you Go or Free trial subscription
Create a new resource group or you can use existing resource group)
Java Web Server stack --> Tomcat 10.0
Operating System as Linux
Region as Central US or where ever you are based at
Operating System as Linux
Region as Central US or where ever you are based at
Enter LinuxPlan name
Choose pricing plan
Now go to Deployment tab:
Enable basic authentication
and enable Continuous Deployment
Click on GitHub account, Authorize.
Authorize AzureappService
now select organization, repo, branch
You can also click on preview file to get pipeline YAML code
Click on Review and Create
Create Web App
Now make sure AzureAppService_PublishProfile secret is automatically created in GitHub repo you selected.
Create GitHub Actions CICD workflow yaml:
name: Build and deploy WAR app to Azure Web App
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Maven
run: mvn clean install -f MyWebApp/pom.xml
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v3
with:
name: MyWebApp
path: '${{ github.workspace }}'
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v3
with:
name: MyWebApp
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: 'spingbootwebapp'
slot-name: 'Production'
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_76B948D486E54ED7B06775D572207D40 }}
package: '*.war'
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Maven
run: mvn clean install -f MyWebApp/pom.xml
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v3
with:
name: MyWebApp
path: '${{ github.workspace }}'
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v3
with:
name: MyWebApp
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: 'spingbootwebapp'
slot-name: 'Production'
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_76B948D486E54ED7B06775D572207D40 }}
package: '*.war'
Check the output after running the pipeline:
Verify if WebApp has been deployed into Azure App Service by browsing Web App url.
https://mysuperjavaapp.azurewebsites.net/MyWebApp/
No comments:
Post a Comment