기존 앱의 경우 App Service 배포 센터를 사용하여 GitHub Actions를 빠르게 시작할 수 있습니다. 이 턴키 메서드는 애플리케이션 스택을 기반으로 GitHub Actions 워크플로 파일을 자동으로 생성하고 GitHub 리포지토리에 커밋합니다.
또한 배포 센터를 사용하면 사용자 할당 ID 옵션을 통해 보다 안전한 OpenID Connect 인증을 쉽게 구성할 수 있습니다.
Azure 계정에 필요한 권한이 있는 경우 사용자 할당 ID를 만들도록 선택할 수 있습니다. 그렇지 않으면 ID 드롭다운에서 기존 사용자 할당 관리 ID를 선택할 수 있습니다. Azure 관리자와 협력하여 웹 사이트 참가자 역할을 사용하여 사용자 할당 관리 ID를 만들 수 있습니다.
GitHub Actions용 Azure App Services로 인증하는 데 권장되는 방법은 OpenID Connect를 사용하는 것입니다. 단기 토큰을 사용하는 인증 방법입니다. GitHub Actions로 OpenID Connect를 설정하는 것은 더 복잡하지만 강화된 보안을 제공합니다.
또는 사용자 할당 관리 ID, 서비스 주체 또는 게시 프로필을 사용하여 인증할 수 있습니다.
아래에서는 Azure CLI 문을 사용하여 Active Directory 애플리케이션, 서비스 주체 및 페더레이션된 자격 증명을 만드는 단계를 안내합니다. Azure Portal에서 Active Directory 애플리케이션, 서비스 주체 및 페더레이션 자격 증명을 만드는 방법을 알아보려면 GitHub 및 Azure 연결을 참조하세요.
이 명령은 appId가 client-id인 JSON을 출력합니다. 이 값을 저장하여, 나중에 AZURE_CLIENT_ID GitHub 비밀로 사용합니다.
Graph API로 페더레이션 자격 증명을 생성할 때 objectId 값을 사용하고 이를 APPLICATION-OBJECT-ID로 참조합니다.
서비스 주체를 생성합니다. $appID를 JSON 출력의 appId로 대체합니다.
이 명령은 다른 objectId로 JSON 출력을 생성하며 다음 단계에서 사용됩니다. 새 objectId는 assignee-object-id입니다.
appOwnerTenantId를 복사하여 나중에 AZURE_TENANT_ID에 대한 GitHub 비밀로 사용합니다.
az ad sp create --id $appId
구독 및 개체별 새 역할 할당을 만듭니다. 기본적으로 역할 할당은 기본 구독에 연결됩니다. $subscriptionId를 구독 ID로 바꾸고, $resourceGroupName을 리소스 그룹 이름으로, $webappName을 웹앱 이름으로, $assigneeObjectId를 생성된 id로 바꿉니다. Azure CLI를 사용하여 Azure 구독을 관리하는 방법을 알아보세요.
az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id $assigneeObjectId --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$webappName --assignee-principal-type ServicePrincipal
APPLICATION-OBJECT-ID를 Active Directory 애플리케이션의 appId(앱 만들 때 만들어짐)로 바꿉니다.
CREDENTIAL-NAME의 값을 나중에 참조하도록 설정합니다.
subject를 설정합니다. 해당 값은 워크플로에 따라 GitHub에 의해 정의됩니다.
GitHub Actions 환경의 작업: repo:< Organization/Repository >:environment:< Name >
환경에 연결되지 않은 작업의 경우 워크플로를 트리거하는 데 사용되는 참조 경로를 기반으로 분기/태그에 대한 참조 경로(repo:< Organization/Repository >:ref:< ref path>)를 포함합니다. 예를 들어 repo:n-username/ node_express:ref:refs/heads/my-branch 또는 repo:n-username/ node_express:ref:refs/tags/my-tag입니다.
끌어오기 요청 이벤트에 의해 트리거된 워크플로의 경우: repo:< Organization/Repository >:pull_request
az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
("credential.json" contains the following content)
{
"name": "<CREDENTIAL-NAME>",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:organization/repository:ref:refs/heads/main",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
az ad sp create-for-rbac --name "myApp" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
이전 예제에서 자리 표시자를 구독 ID, 리소스 그룹 이름 및 앱 이름으로 바꿉니다. 출력은 다음 JSON 코드 조각과 비슷한 App Service 앱에 대한 액세스를 제공하는 역할 할당 자격 증명이 있는 JSON 개체입니다. 나중에 사용할 수 있도록 이 JSON 개체를 복사합니다.
Azure/login 작업에 애플리케이션의 클라이언트 ID, 테넌트 ID 및 구독 ID를 제공해야 합니다. 이러한 값은 워크플로에서 직접 제공하거나 GitHub 비밀에 저장하고 워크플로에서 참조할 수 있습니다. 값을 GitHub 비밀로 저장하는 것이 더 안전한 옵션입니다.
GitHub 리포지토리를 열고 설정 > 보안 > 비밀 및 변수 > 작업 > 새 리포지토리 비밀로 이동합니다.
AZURE_CLIENT_ID, AZURE_TENANT_ID 및 AZURE_SUBSCRIPTION_ID에 대한 비밀을 만듭니다. GitHub 비밀에 Active Directory 애플리케이션의 다음 값을 사용합니다.
GitHub 비밀
Active Directory 애플리케이션
AZURE_CLIENT_ID
애플리케이션(클라이언트) ID
AZURE_TENANT_ID
디렉터리(테넌트) ID
AZURE_SUBSCRIPTION_ID
구독 ID
비밀 추가를 선택하여 각 비밀을 저장합니다.
GitHub에서 리포지토리를 찾습니다. 설정 > 보안 > 비밀 및 변수 > 작업 > 새 리포지토리 비밀을 선택합니다.
앱 수준 자격 증명을 사용하려면 다운로드한 게시 프로필 파일의 내용을 비밀의 값 필드에 붙여넣습니다. 비밀 AZURE_WEBAPP_PUBLISH_PROFILE의 이름을 지정합니다.
나중에 GitHub 워크플로 파일을 구성할 때 Azure 웹앱 배포 작업에서 AZURE_WEBAPP_PUBLISH_PROFILE을 사용합니다. 예시:
워크플로는 GitHub 리포지토리의 /.github/workflows/ 경로에 있는 YAML(.yml) 파일에서 정의됩니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.
최소한 워크플로 파일에는 다음과 같은 고유한 단계가 있습니다.
사용자가 만든 GitHub 비밀을 사용하여 App Service로 인증합니다.
웹앱을 빌드합니다.
웹앱을 배포합니다.
App Service 앱에 코드를 배포하려면 azure/webapps-deploy@v3 작업을 사용합니다. 작업을 수행하려면 app-name에 있는 웹앱의 이름이 필요하며 언어 스택에 따라 package에서 배포할 *.zip, *.war, *.jar 또는 폴더의 경로가 필요합니다. azure/webapps-deploy@v3 작업에 사용할 수 있는 입력의 전체 목록은 action.yml 정의를 참조하세요.
다음 예제에서는 지원되는 다양한 언어로 웹앱을 빌드하는 워크플로의 일부를 확인할 수 있습니다.
name: .NET Core
on: [push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
Azure 서비스 주체를 사용하여 ASP.NET MVC 앱을 빌드하고 Azure에 배포합니다. 이 예제에서는 client-id, tenant-id 및 subscription-id 값에 GitHub 비밀을 사용합니다. 로그인 작업에서 이러한 값을 직접 전달할 수도 있습니다.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
# checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
Azure 서비스 주체를 사용하여 Java Spring 앱을 빌드하고 Azure에 배포합니다. 이 예제에서는 client-id, tenant-id 및 subscription-id 값에 GitHub 비밀을 사용합니다. 로그인 작업에서 이러한 값을 직접 전달할 수도 있습니다.
name: Build and deploy WAR app to Azure Web App using OpenID Connect
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
name: JavaScript CI
on: [push]
permissions:
id-token: write
contents: read
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
name: Python application
on:
[push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
publish-profile 입력은 이전에 만든AZURE_WEBAPP_PUBLISH_PROFILE GitHub 비밀을 참조해야 합니다.
name: .NET Core CI
on: [push]
env:
AZURE_WEBAPP_NAME: my-app-name # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the repo
- uses: actions/checkout@main
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Define secret variable in repository settings as per action documentation
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
인증에 NuGet과 publish-profile을 사용하는 ASP.NET MVC 앱을 빌드하고 배포합니다.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
- uses: actions/checkout@main
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Define secret variable in repository settings as per action documentation
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
Azure 게시 프로필을 사용하여 Java Spring 앱을 빌드하고 Azure에 배포합니다. publish-profile 입력은 이전에 만든 AZURE_WEBAPP_PUBLISH_PROFILE 암호를 참조합니다.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: my-app-path
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: my/target/*.jar
Azure 게시 프로필을 사용하여 Tomcat 앱을 빌드하고 Azure에 배포합니다. publish-profile 입력은 이전에 만든 AZURE_WEBAPP_PUBLISH_PROFILE 암호를 참조합니다.
name: Build and deploy WAR app to Azure Web App using publish profile
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: '*.war'
앱의 게시 프로필을 사용하여 Node.js 앱을 빌드하고 Azure에 배포합니다. publish-profile 입력은 이전에 만든 AZURE_WEBAPP_PUBLISH_PROFILE 암호를 참조합니다.
# File: .github/workflows/workflow.yml
name: JavaScript CI
on: [push]
env:
AZURE_WEBAPP_NAME: my-app-name # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: npm install, build, and test
run: |
# Build and test the project, then
# deploy to Azure Web App.
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
- name: 'Deploy to Azure WebApp'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
앱의 게시 프로필을 사용하여 Python 앱을 빌드하고 Azure에 배포합니다. publish-profile 입력은 이전에 만든 AZURE_WEBAPP_PUBLISH_PROFILE 비밀을 참조한다는 점에 주목하세요.
name: Python CI
on:
[push]
env:
AZURE_WEBAPP_NAME: my-web-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Building web app
uses: azure/appservice-build@v2
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
구성한 서비스 주체를 사용하여 배포하려면 creds 키와 함께 azure/login@v1 작업을 사용하고 이전에 생성한 AZURE_CREDENTIALS 비밀을 참조합니다.
name: .NET Core
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
Azure 서비스 주체를 사용하여 ASP.NET MVC 앱을 빌드하고 Azure에 배포합니다. creds 입력은 이전에 만든 AZURE_CREDENTIALS 비밀을 참조한다는 점에 주목하세요.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
# checkout the repo
- uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
Azure 서비스 주체를 사용하여 Java Spring 앱을 빌드하고 Azure에 배포합니다. creds 입력은 이전에 만든 AZURE_CREDENTIALS 비밀을 참조한다는 점에 주목하세요.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: complete
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
package: my/target/*.jar
# Azure logout
- name: logout
run: |
az logout
Azure 서비스 주체를 사용하여 Tomcat 앱을 빌드하고 Azure에 배포합니다. creds 입력은 이전에 만든 AZURE_CREDENTIALS 비밀을 참조한다는 점에 주목하세요.
name: Build and deploy WAR app to Azure Web App using Service Principal Connect
env:
JAVA_VERSION: '11' # set this to the Java version to use
DISTRIBUTION: microsoft # set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # set this to the name of your web app
on: [push]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
Azure 서비스 주체를 사용하여 Node.js 앱을 빌드하고 Azure에 배포합니다. creds 입력은 이전에 만든 AZURE_CREDENTIALS 비밀을 참조한다는 점에 주목하세요.
name: JavaScript CI
on: [push]
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
Azure 서비스 주체를 사용하여 Python 앱을 빌드하고 Azure에 배포합니다. creds 입력은 이전에 만든 AZURE_CREDENTIALS 비밀을 참조한다는 점에 주목하세요.
name: Python application
on:
[push]
env:
AZURE_WEBAPP_NAME: my-app # set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
CLI용 GitHub 작업과 이를 사용 및 구성하는 방법에 대한 자세한 내용은 Azure CLI GitHub 작업에서 확인할 수 있습니다.
az webapp deploy 명령, 사용 방법 및 매개 변수 세부 정보에 대한 자세한 내용은 az webapp deploy 설명서에서 확인할 수 있습니다.
- uses: azure/appservice-settings@v1
with:
app-name: 'my-app'
slot-name: 'staging' # Optional and needed only if the settings have to be configured on the specific deployment slot
app-settings-json: '[{ "name": "CATALINA_OPTS", "value": "-Dfoo=bar" }]'
connection-strings-json: '${{ secrets.CONNECTION_STRINGS }}'
general-settings-json: '{"alwaysOn": "false", "webSocketsEnabled": "true"}' #'General configuration settings as Key Value pairs'
id: settings
이 작업에 대한 자세한 내용과 사용 및 구성 방법은 App Service 설정 리포지토리에서 확인할 수 있습니다.