GitHub Actions dağıtımı, varsayılan uygulama oluşturma sihirbazıyla tümleşiktir. Yalnızca Dağıtım sekmesinde Sürekli dağıtımı Etkinleştir olarak ayarlamanız ve istediğiniz kuruluşu, depoyu ve dalı yapılandırmanız yeterlidir.
Sürekli dağıtımı etkinleştirdiğinizde, uygulama oluşturma sihirbazı temel kimlik doğrulama seçimine göre kimlik doğrulama yöntemini otomatik olarak seçer ve uygulamanızı ve GitHub deponuzu buna göre yapılandırılır:
Mevcut bir uygulama için App Service Dağıtım Merkezi'ni kullanarak GitHub Actions ile hızlı bir şekilde çalışmaya başlayabilirsiniz. Bu anahtar teslim yöntemi, uygulama yığınınızı temel alan bir GitHub Actions iş akışı dosyasını otomatik olarak oluşturur ve GitHub deponuza işler.
Dağıtım Merkezi, kullanıcı tarafından atanan kimlik seçeneğiyle daha güvenli OpenID Connect kimlik doğrulamasını kolayca yapılandırmanıza da olanak tanır.
GitHub Actions için Azure Uygulaması Services ile kimlik doğrulaması yapmak için önerilen yol OpenID Connect'tir. Bu, kısa süreli belirteçler kullanan bir kimlik doğrulama yöntemidir. GitHub Actions ile OpenID Connect'i ayarlamak daha karmaşıktır ancak sağlamlaştırılmış güvenlik sunar.
Alternatif olarak, Kullanıcı Tarafından Atanan Yönetilen Kimlik, hizmet sorumlusu veya yayımlama profili ile kimlik doğrulaması yapabilirsiniz.
Aşağıda, Azure CLI deyimlerini kullanarak active directory uygulaması, hizmet sorumlusu ve federasyon kimlik bilgileri oluşturma adımları boyunca size yol gösterilir. Azure portalında active directory uygulaması, hizmet sorumlusu ve federasyon kimlik bilgileri oluşturmayı öğrenmek için bkz . GitHub ve Azure'a bağlanma.
Mevcut bir uygulamanız yoksa, kaynaklara erişebilen yeni bir Active Directory uygulaması ve hizmet sorumlusu kaydedin. Active Directory uygulamasını oluşturun.
az ad app create --display-name myApp
Bu komut, sizin olan bir appId JSON çıkışı oluşturur client-id. GitHub gizli dizisi olarak AZURE_CLIENT_ID kullanılacak değeri daha sonra kaydedin.
Graph API ile federasyon kimlik bilgileri oluştururken değerini kullanacaksınız objectId ve buna olarak APPLICATION-OBJECT-IDbaşvuracaksınız.
Hizmet sorumlusu oluşturma. değerini $appID JSON çıkışınızdaki appId değeriyle değiştirin.
Bu komut farklı objectId bir JSON çıkışı oluşturur ve sonraki adımda kullanılacaktır. Yeni objectId , şeklindedir assignee-object-id.
appOwnerTenantId daha sonra kullanmak üzere öğesini GitHub gizli dizisi AZURE_TENANT_ID olarak kopyalayın.
az ad sp create --id $appId
Aboneliğe ve nesneye göre yeni bir rol ataması oluşturun. Varsayılan olarak, rol ataması varsayılan aboneliğinize bağlıdır. değerini abonelik kimliğiniz, $resourceGroupName kaynak grubu adınız, $webappName web uygulamanızın adı ve $assigneeObjectId oluşturulan idile değiştirin$subscriptionId. Azure CLI ile Azure aboneliklerini yönetmeyi öğrenin.
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
değerini Active Directory uygulamanız için appId (uygulama oluşturulurken oluşturulur) ile değiştirinAPPLICATION-OBJECT-ID.
Daha sonra başvurmak için için CREDENTIAL-NAME bir değer ayarlayın.
öğesini subjectayarlayın. Değeri, iş akışınıza bağlı olarak GitHub tarafından tanımlanır:
GitHub Actions ortamınızdaki işler: repo:< Organization/Repository >:environment:< Name >
Bir ortama bağlı olmayan işler için, iş akışını tetiklerken kullanılan başvuru yolunu temel alan dal/etiket için başvuru yolunu ekleyin: repo:< Organization/Repository >:ref:< ref path>. Örneğin, repo:n-username/ node_express:ref:refs/heads/my-branch veya repo:n-username/ node_express:ref:refs/tags/my-tag.
Çekme isteği olayı tarafından tetiklenen iş akışları için: 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"
]
}
Yayımlama profili, uygulama düzeyinde bir kimlik bilgisidir. Yayımlama profilinizi GitHub gizli dizisi olarak ayarlayın.
Azure portalında uygulama hizmetinize gidin.
Genel Bakış sayfasında Yayımlama profilini al'ı seçin.
İndirilen dosyayı kaydedin. GitHub gizli dizisi oluşturmak için dosyanın içeriğini kullanacaksınız.
Not
Ekim 2020 itibarıyla Linux web uygulamalarının yayımlama profilini indirmeden önce uygulama ayarının WEBSITE_WEBDEPLOY_USE_SCM olarak ayarlanması truegerekir. Bu gereksinim gelecekte kaldırılacaktır.
Azure CLI'da az ad sp create-for-rbac komutuyla bir hizmet sorumlusu oluşturabilirsiniz. Azure portalında veya Deneyin düğmesini seçerek bu komutu Azure Cloud Shell ile çalıştırın.
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
Önceki örnekte yer tutucuları abonelik kimliğiniz, kaynak grubu adınız ve uygulama adınızla değiştirin. Çıktı, aşağıdaki JSON kod parçacığına benzer şekilde App Service uygulamanıza erişim sağlayan rol atama kimlik bilgilerine sahip bir JSON nesnesidir. Bu JSON nesnesini daha sonra için kopyalayın.
Minimum erişim vermek her zaman iyi bir uygulamadır. Önceki örnekteki kapsam, kaynak grubunun tamamıyla değil, belirli App Service uygulamasıyla sınırlıdır.
Azure/oturum açma eylemine uygulamanızın İstemci Kimliğini, Kiracı Kimliğini ve Abonelik Kimliğinisağlamanız gerekir. Bu değerler doğrudan iş akışında sağlanabilir veya GitHub gizli dizilerinde depolanabilir ve iş akışınızda başvurulabilir. Değerleri GitHub gizli dizileri olarak kaydetmek daha güvenli bir seçenektir.
GitHub deponuzu açın ve Ayarlar > Güvenlik Gizli Dizileri ve değişkenler > Eylemler > Yeni depo gizli dizisi'ne > gidin.
, AZURE_TENANT_IDve AZURE_SUBSCRIPTION_IDiçin AZURE_CLIENT_IDgizli diziler oluşturun. GitHub gizli dizileriniz için Active Directory uygulamanızdaki şu değerleri kullanın:
GitHub Gizli Dizisi
Active Directory Uygulaması
AZURE_CLIENT_ID
Uygulama (istemci) kimliği
AZURE_TENANT_ID
Dizin (kiracı) kimliği
AZURE_SUBSCRIPTION_ID
Subscription ID
Gizli dizi ekle'yi seçerek her gizli diziyi kaydedin.
GitHub'da deponuza göz atın. Ayarlar > Güvenlik Gizli Dizileri ve değişkenler > Eylemler > Yeni depo gizli dizisi'ni seçin>.
Uygulama düzeyinde kimlik bilgilerini kullanmak için indirilen yayımlama profili dosyasının içeriğini gizli dizinin değer alanına yapıştırın. Gizli diziyi AZURE_WEBAPP_PUBLISH_PROFILEolarak adlandırın.
GitHub iş akışı dosyasını daha sonra yapılandırdığınızda Azure Web App'i dağıtma eyleminde öğesini kullanırsınız AZURE_WEBAPP_PUBLISH_PROFILE . Örneğin:
GitHub'da deponuza göz atın. Ayarlar > Güvenlik Gizli Dizileri ve değişkenler > Eylemler > Yeni depo gizli dizisi'ni seçin>.
Kullanıcı düzeyinde kimlik bilgilerini kullanmak için Azure CLI komutundaki JSON çıkışının tamamını gizli dizinin değer alanına yapıştırın. Gizli diziyi AZURE_CREDENTIALSolarak adlandırın.
İş akışı, GitHub deponuzdaki yoldaki /.github/workflows/ bir YAML (.yml) dosyası tarafından tanımlanır. Bu tanım, iş akışını oluşturan çeşitli adımları ve parametreleri içerir.
İş akışı dosyasında en azından aşağıdaki ayrı adımlar bulunur:
Oluşturduğunuz GitHub gizli dizisini kullanarak App Service ile kimlik doğrulaması yapın.
Web uygulamasını oluşturun.
Web uygulamasını dağıtın.
Kodunuzu bir App Service uygulamasına dağıtmak için azure/webapps-deploy@v3 eylemini kullanırsınız. Eylem, içindeki app-name web uygulamanızın adını ve dil yığınınıza bağlı olarak içinde dağıtılacak package*.zip, *.war, *.jar veya klasörün yolunu gerektirir. Eylem için olası girişlerin tam listesi için azure/webapps-deploy@v3 action.yml tanımına bakın.
Aşağıdaki örnekler, iş akışının web uygulamasını oluşturan bölümünü desteklenen farklı dillerde gösterir.
Yapılandırdığınız yönetilen kimliği kullanarak OpenID Connect ile dağıtmak için , ve anahtarlarıyla client-ideylemi kullanın azure/login@v1 ve subscription-id daha önce oluşturduğunuz GitHub gizli dizilerine başvurun. tenant-id
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 hizmet sorumlusu kullanarak bir ASP.NET MVC uygulaması derleyin ve Azure'a dağıtın. Örnekte , tenant-idve subscription-id değerleri için client-idGitHub gizli dizileri kullanılmaktadır. Bu değerleri doğrudan oturum açma eyleminde de geçirebilirsiniz.
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 hizmet sorumlusu kullanarak Bir Java Spring uygulaması derleyin ve Azure'a dağıtın. Örnekte , tenant-idve subscription-id değerleri için client-idGitHub gizli dizileri kullanılmaktadır. Bu değerleri doğrudan oturum açma eyleminde de geçirebilirsiniz.
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
Giriş, publish-profile daha önce oluşturduğunuz GitHub gizli dizisine başvurmalıdırAZURE_WEBAPP_PUBLISH_PROFILE.
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 kullanan ve kimlik doğrulaması için bir ASP.NET MVC uygulaması derleyin ve publish-profile dağıtın.
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 yayımlama profili kullanarak Bir Java Spring uygulaması derleyin ve Azure'a dağıtın. Giriş, publish-profile daha önce oluşturduğunuz gizli diziye AZURE_WEBAPP_PUBLISH_PROFILE başvurur.
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
yerine bir warjardağıtmak için değerini değiştirin package .
Bir Azure yayımlama profili kullanarak Bir Tomcat uygulaması derleyin ve Azure'a dağıtın. Giriş, publish-profile daha önce oluşturduğunuz gizli diziye AZURE_WEBAPP_PUBLISH_PROFILE başvurur.
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'
Uygulamanın yayımlama profilini kullanarak bir Node.js uygulaması derleyin ve Azure'a dağıtın. Giriş, publish-profile daha önce oluşturduğunuz gizli diziye AZURE_WEBAPP_PUBLISH_PROFILE başvurur.
# 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 }}
Uygulamanın yayımlama profilini kullanarak Bir Python uygulaması oluşturun ve Azure'a dağıtın. Girişin publish-profile daha önce oluşturduğunuz gizli diziye AZURE_WEBAPP_PUBLISH_PROFILE nasıl başvurduğunu unutmayın.
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 }}
Yapılandırdığınız hizmet sorumlusuyla dağıtmak için anahtarıyla eylemini kullanın azure/login@v1 ve daha önce oluşturduğunuz gizli diziye AZURE_CREDENTIALS başvurun.creds
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 hizmet sorumlusu kullanarak bir ASP.NET MVC uygulaması derleyin ve Azure'a dağıtın. Girişin creds daha önce oluşturduğunuz gizli diziye AZURE_CREDENTIALS nasıl başvurduğunu unutmayın.
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 hizmet sorumlusu kullanarak Bir Java Spring uygulaması derleyin ve Azure'a dağıtın. Girişin creds daha önce oluşturduğunuz gizli diziye AZURE_CREDENTIALS nasıl başvurduğunu unutmayın.
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
Bir Azure hizmet sorumlusu kullanarak Bir Tomcat uygulaması derleyin ve Azure'a dağıtın. Girişin creds daha önce oluşturduğunuz gizli diziye AZURE_CREDENTIALS nasıl başvurduğunu unutmayın.
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 hizmet sorumlusu kullanarak bir Node.js uygulaması derleyin ve Azure'a dağıtın. Girişin creds daha önce oluşturduğunuz gizli diziye AZURE_CREDENTIALS nasıl başvurduğunu unutmayın.
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 hizmet sorumlusu kullanarak Bir Python uygulaması derleyin ve Azure'a dağıtın. Girişin creds daha önce oluşturduğunuz gizli diziye AZURE_CREDENTIALS nasıl başvurduğunu unutmayın.
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
Maven eklentisi ve nasıl kullanılacağı ve yapılandırılacağı hakkında daha fazla bilgi için Azure Uygulaması Hizmeti için Maven eklenti wiki'sinde bulunabilir.
Az CLI aracılığıyla bir WAR dosyası dağıtmak Nasıl yaparım??
App Service'e dağıtmak için Azure CLI'yı tercih ediyorsanız, Azure CLI için GitHub Eylemi'ni kullanabilirsiniz.
CLI için GitHub Eylemi ve nasıl kullanılacağı ve yapılandırılacağı hakkında daha fazla bilgi için Azure CLI GitHub eyleminde bulunabilir.
az webapp deploy komutu, nasıl kullanılacağı ve parametre ayrıntıları hakkında daha fazla bilgi az webapp deploy belgelerinde bulunabilir.
Azure Web Dağıtımı eylemiyle, GitHub Actions'ı kullanarak app service'e özel kapsayıcılar dağıtmak için iş akışınızı otomatikleştirebilirsiniz. GitHub Actions kullanarak dağıtma adımlarıyla ilgili ayrıntılı bilgileri Kapsayıcıya Dağıtma bölümünde bulabilirsiniz.
Dağıtımdan sonra Tomcat yapılandırmasını Nasıl yaparım? güncelleştirin?
Dağıtımdan sonra web uygulaması ayarlarınızı güncelleştirmek isterseniz App Service Ayarları eylemini kullanabilirsiniz.
- 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
Bu eylem ve nasıl kullanılacağı ve yapılandırılacağı hakkında daha fazla bilgi App Service Ayarları deposunda bulunabilir.
Sonraki adımlar
Azure GitHub Actions ve iş akışlarıyla ilgili başvurulara göz atın: