Akun GitHub. Jika Anda belum memilikinya, daftar gratis.
Menyiapkan penyebaran GitHub Actions saat membuat aplikasi
Penyebaran GitHub Actions diintegrasikan ke dalam wizard pembuatan aplikasi default. Anda hanya perlu mengatur Penyebaran berkelanjutan ke Aktifkan di tab Penyebaran, dan mengonfigurasi organisasi, repositori, dan cabang yang Anda inginkan.
Saat Anda mengaktifkan penyebaran berkelanjutan, wizard pembuatan aplikasi secara otomatis memilih metode autentikasi berdasarkan pilihan autentikasi dasar dan mengonfigurasi aplikasi Anda dan repositori GitHub Yang sesuai:
Menyiapkan penyebaran GitHub Actions dari Pusat Penyebaran
Untuk aplikasi yang sudah ada, Anda dapat memulai dengan cepat dengan GitHub Actions dengan menggunakan Pusat Penyebaran App Service. Metode turn-key ini secara otomatis menghasilkan file alur kerja GitHub Actions berdasarkan tumpukan aplikasi Anda dan menerapkannya ke repositori GitHub Anda.
Pusat Penyebaran juga memungkinkan Anda dengan mudah mengonfigurasi autentikasi OpenID Connect yang lebih aman dengan opsi identitas yang ditetapkan pengguna.
Jika akun Azure Anda memiliki izin yang diperlukan, Anda dapat memilih untuk membuat identitas yang ditetapkan pengguna. Jika tidak, Anda dapat memilih identitas terkelola yang ditetapkan pengguna yang ada di menu dropdown Identitas . Anda dapat bekerja dengan administrator Azure Anda untuk membuat identitas terkelola yang ditetapkan pengguna dengan peran Kontributor Situs Web.
Cara yang disarankan untuk mengautentikasi dengan Azure App Services untuk GitHub Actions adalah dengan OpenID Connect. Ini adalah metode autentikasi yang menggunakan token berumur pendek. Menyiapkan OpenID Connect dengan GitHub Actions lebih kompleks tetapi menawarkan keamanan yang diperkuat.
Atau, Anda dapat mengautentikasi dengan Identitas Terkelola yang ditetapkan pengguna, perwakilan layanan, atau profil penerbitan.
Di bawah ini menjalankan Anda melalui langkah-langkah untuk membuat aplikasi direktori aktif, perwakilan layanan, dan kredensial federasi menggunakan pernyataan Azure CLI. Untuk mempelajari cara membuat aplikasi direktori aktif, perwakilan layanan, dan kredensial federasi di portal Azure, lihat Menyambungkan GitHub dan Azure.
Perintah ini menghasilkan JSON dengan appId yang merupakan .client-id Simpan nilai untuk digunakan sebagai AZURE_CLIENT_ID GitHub rahasia di kemudian hari.
Anda akan menggunakan nilai objectId saat membuat info masuk federasi dengan Graph API dan mereferensikannya sebagai APPLICATION-OBJECT-ID.
Membuat perwakilan layanan. Ganti $appID dengan appId dari output JSON Anda.
Perintah ini menghasilkan output JSON dengan objectId yang berbeda dan akan digunakan dalam langkah berikutnya. objectId yang baru adalah assignee-object-id.
Salin appOwnerTenantId untuk digunakan sebagai GitHub rahasia untuk AZURE_TENANT_ID nanti.
az ad sp create --id $appId
Membuat penetapan peran baru berdasarkan langganan dan objek. Secara default, penetapan peran terkait dengan langganan default Anda. Ganti $subscriptionId dengan ID langganan Anda, $resourceGroupName dengan nama grup sumber daya Anda, $webappName dengan nama aplikasi web Anda, dan $assigneeObjectId dengan yang dihasilkan id. Pelajari cara mengelola langganan Azure dengan Azure CLI.
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
Ganti APPLICATION-OBJECT-ID dengan appId (dihasilkan saat membuat aplikasi) untuk aplikasi Direktori Aktif Anda.
Tetapkan nilai untuk CREDENTIAL-NAME untuk referensi nanti.
Set subject. Nilainya didefinisikan oleh GitHub tergantung pada alur kerja Anda:
Pekerjaan dalam lingkungan GitHub Actions Anda: repo:< Organization/Repository >:environment:< Name >
Untuk Pekerjaan yang tidak terikat dengan lingkungan, sertakan jalur referensi untuk cabang/tag berdasarkan jalur referensi yang digunakan untuk memicu alur kerja: repo:< Organization/Repository >:ref:< ref path>. Misalnya, repo:n-username/ node_express:ref:refs/heads/my-branch atau repo:n-username/ node_express:ref:refs/tags/my-tag.
Untuk alur kerja yang dipicu oleh peristiwa permintaan tarik: 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"
]
}
Catatan
Profil publikasi mengharuskan autentikasi dasar diaktifkan.
Profil penerbitan adalah info masuk tingkat aplikasi. Siapkan profil penerbitan Anda sebagai rahasia GitHub.
Buka layanan aplikasi Anda di portal Microsoft Azure.
Pada halaman Ringkasan, pilih Dapatkan profil Penerbitan.
Simpan file yang diunduh. Anda akan menggunakan isi file tersebut untuk membuat rahasia GitHub.
Catatan
Mulai Oktober 2020, aplikasi web Linux memerlukan pengaturan WEBSITE_WEBDEPLOY_USE_SCM aplikasi yang diatur ke truesebelum mengunduh profil penerbitan. Persyaratan ini akan dihapus di masa mendatang.
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
Dalam contoh sebelumnya, ganti tempat penampung dengan ID langganan, nama grup sumber daya, dan nama aplikasi Anda. Output adalah objek JSON dengan kredensial penetapan peran yang menyediakan akses ke aplikasi App Service Anda yang mirip dengan cuplikan JSON berikut. Salin objek JSON ini untuk nanti.
Memberikan akses minimum selalu merupakan praktik yang baik. Cakupan dalam contoh sebelumnya terbatas pada aplikasi App Service tertentu dan bukan seluruh grup sumber daya.
Anda perlu memberikan ID Klien, ID Penyewa, dan ID Langganan aplikasi Anda ke tindakan Azure/login. Nilai ini bisa disediakan secara langsung di alur kerja atau bisa disimpan di rahasia GitHub dan direferensikan dalam alur kerja Anda. Menyimpan nilai sebagai GitHub rahasia adalah opsi yang lebih aman.
Buka repositori GitHub Anda dan buka Pengaturan Rahasia Keamanan > dan variabel > Tindakan > rahasia repositori baru.>
Membuat rahasia untuk AZURE_CLIENT_ID, AZURE_TENANT_ID, dan AZURE_SUBSCRIPTION_ID. Gunakan nilai-nilai ini dari aplikasi Active Directory Domain Services Anda untuk GitHub rahasia Anda:
GitHub Rahasia
Aplikasi Active Directory Domain Services
AZURE_CLIENT_ID
Aplikasi (ID klien)
AZURE_TENANT_ID
ID (tenant) direktori
AZURE_SUBSCRIPTION_ID
ID Langganan
Simpan setiap rahasia dengan memilih Tambahkan rahasia.
Di GitHub, telusuri repositori Anda. Pilih Pengaturan > Rahasia Keamanan > dan variabel > Tindakan > Rahasia repositori baru.
Untuk menggunakan info masuk tingkat aplikasi, tempelkan isi file profil penerbitan yang diunduh ke bidang nilai rahasia. Beri nama rahasia AZURE_WEBAPP_PUBLISH_PROFILE.
Saat mengonfigurasi file alur kerja GitHub nanti, Anda menggunakan AZURE_WEBAPP_PUBLISH_PROFILE dalam tindakan sebarkan Azure Web App. Contohnya:
Di GitHub, telusuri repositori Anda. Pilih Pengaturan > Rahasia Keamanan > dan variabel > Tindakan > Rahasia repositori baru.
Untuk menggunakan info masuk tingkat pengguna, tempelkan seluruh output JSON dari perintah Azure CLI ke dalam bidang nilai rahasia. Beri nama rahasia AZURE_CREDENTIALS.
Saat mengonfigurasi file alur kerja GitHub nanti, Anda menggunakan rahasia untuk input credsAzure/login. Contohnya:
3. Tambahkan file alur kerja ke repositori GitHub Anda
Alur kerja ditentukan oleh file YAML (.yml) di /.github/workflows/ jalur di repositori GitHub Anda. Definisi ini berisi berbagai langkah dan parameter yang membentuk alur kerja.
Minimal, file alur kerja akan memiliki langkah-langkah berbeda berikut:
Autentikasi dengan App Service menggunakan rahasia GitHub yang Anda buat.
Buat aplikasi web.
Menyebarkan aplikasi web.
Untuk menyebarkan kode Anda ke aplikasi App Service, Anda menggunakan tindakan azure/webapps-deploy@v3 . Tindakan ini memerlukan nama aplikasi web Anda di app-name dan, tergantung pada tumpukan bahasa Anda, jalur *.zip, *.war, *.jar, atau folder untuk disebarkan di package. Untuk daftar lengkap kemungkinan input untuk tindakan, azure/webapps-deploy@v3 lihat definisi action.yml .
Contoh berikut memperlihatkan bagian alur kerja yang membangun aplikasi web dalam berbagai dukungan bahasa.
Untuk menyebarkan dengan OpenID Connect menggunakan identitas terkelola yang Anda konfigurasikan, gunakan tindakan dengan client-idkunci , , tenant-iddan subscription-id dan referensikan rahasia GitHub yang Anda buat sebelumnya.azure/login@v1
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
Bangun dan sebarkan aplikasi ASP.NET MVC ke Azure menggunakan prinsipal layanan Azure. Contoh ini menggunakan rahasia GitHub untuk nilai-nilai client-id, tenant-id, dan subscription-id. Anda juga dapat meneruskan nilai-nilai ini langsung dalam tindakan login.
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
Bangun dan sebarkan aplikasi Java Spring ke Azure menggunakan prinsipal layanan Azure. Contoh ini menggunakan rahasia GitHub untuk nilai-nilai client-id, tenant-id, dan subscription-id. Anda juga dapat meneruskan nilai-nilai ini langsung dalam tindakan login.
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'
Anda juga dapat menemukan contoh lengkap ini menggunakan beberapa pekerjaan untuk membangun dan menyebarkan di sini .
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
Input publish-profile harus mereferensikan AZURE_WEBAPP_PUBLISH_PROFILE rahasia GitHub yang Anda buat sebelumnya.
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'
Bangun dan sebarkan aplikasi ASP.NET MVC yang menggunakan NuGet dan publish-profile untuk autentikasi.
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/'
Bangun dan sebarkan aplikasi Java Spring ke Azure menggunakan profil penerbitan Azure. Input publish-profile mereferensikan rahasia AZURE_WEBAPP_PUBLISH_PROFILE yang Anda buat sebelumnya.
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
Untuk menyebarkan war alih-alih jar, ubah nilai package.
Buat dan sebarkan aplikasi Tomcat ke Azure menggunakan profil penerbitan Azure. Input publish-profile mereferensikan rahasia AZURE_WEBAPP_PUBLISH_PROFILE yang Anda buat sebelumnya.
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'
Anda juga dapat menemukan contoh lengkap ini menggunakan beberapa pekerjaan untuk membangun dan menyebarkan di sini .
Bangun dan sebarkan aplikasi Node.js ke Azure menggunakan profil penerbitan aplikasi. Input publish-profile mereferensikan rahasia AZURE_WEBAPP_PUBLISH_PROFILE yang Anda buat sebelumnya.
# 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 }}
Bangun dan sebarkan aplikasi Python ke Azure menggunakan profil penerbitan aplikasi. Perhatikan bagaimana input publish-profile mereferensikan rahasia AZURE_WEBAPP_PUBLISH_PROFILE yang Anda buat sebelumnya.
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 }}
Untuk menyebarkan dengan perwakilan layanan yang Anda konfigurasi, gunakan azure/login@v1 tindakan dengan creds kunci dan referensikan AZURE_CREDENTIALS rahasia yang Anda buat sebelumnya.
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
Bangun dan sebarkan aplikasi ASP.NET MVC ke Azure menggunakan prinsipal layanan Azure. Perhatikan bagaimana input creds mereferensikan rahasia AZURE_CREDENTIALS yang Anda buat sebelumnya.
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
Bangun dan sebarkan aplikasi Java Spring ke Azure menggunakan prinsipal layanan Azure. Perhatikan bagaimana input creds mereferensikan rahasia AZURE_CREDENTIALS yang Anda buat sebelumnya.
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
Buat dan sebarkan aplikasi Tomcat ke Azure menggunakan perwakilan layanan Azure. Perhatikan bagaimana input creds mereferensikan rahasia AZURE_CREDENTIALS yang Anda buat sebelumnya.
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'
Anda juga dapat menemukan contoh lengkap ini menggunakan beberapa pekerjaan untuk membangun dan menyebarkan di sini .
Bangun dan sebarkan aplikasi Node.js ke Azure menggunakan prinsipal layanan Azure. Perhatikan bagaimana input creds mereferensikan rahasia AZURE_CREDENTIALS yang Anda buat sebelumnya.
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
Bangun dan sebarkan aplikasi Python ke Azure menggunakan prinsipal layanan Azure. Perhatikan bagaimana input creds mereferensikan rahasia AZURE_CREDENTIALS yang Anda buat sebelumnya.
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
Bagaimana cara menyebarkan file WAR melalui plugin Maven dan OpenID Connect
Jika Anda mengonfigurasi proyek Java Tomcat dengan plugin Maven, Anda juga dapat menyebarkan ke Azure App Service melalui plugin ini. Jika Anda menggunakan tindakan GitHub Azure CLI, tindakan tersebut akan menggunakan kredensial masuk Azure Anda.
Informasi selengkapnya tentang GitHub Action untuk CLI dan cara menggunakan dan mengonfigurasinya dapat ditemukan di tindakan GitHub Azure CLI.
Informasi selengkapnya tentang perintah az webapp deploy, cara menggunakan dan detail parameter dapat ditemukan dalam dokumentasi penyebaran az webapp.
Bagaimana cara menyebarkan ke Kontainer
Dengan tindakan Azure Web Deploy, Anda dapat mengotomatiskan alur kerja Anda untuk menyebarkan kontainer kustom ke App Service menggunakan GitHub Actions. Informasi terperinci tentang langkah-langkah untuk menyebarkan menggunakan GitHub Actions, dapat ditemukan di Menyebarkan ke Kontainer.
Bagaimana cara memperbarui konfigurasi Tomcat setelah penyebaran
Jika Anda ingin memperbarui salah satu pengaturan aplikasi web setelah penyebaran, Anda dapat menggunakan tindakan Pengaturan App Service.
- 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
Informasi selengkapnya tentang tindakan ini dan cara menggunakan dan mengonfigurasinya dapat ditemukan di repositori Pengaturan App Service.
Langkah berikutnya
Lihat referensi tentang Tindakan dan alur kerja Azure GitHub: