Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Otomatik yazılım geliştirme iş akışı oluşturmak için GitHub Actions'ı kullanabilirsiniz. İş akışınızı otomatikleştirmek ve Azure App Service'e özel kapsayıcılar dağıtmak için Azure Web Dağıtımı eylemini kullanabilirsiniz.
İş akışı, deponuzdaki yoldaki /.github/workflows/ bir YAML (.yml) dosyası tarafından tanımlanır. Bu tanım, iş akışındaki çeşitli adımları ve parametreleri içerir.
App Service kapsayıcı iş akışı için dosyanın üç bölümü vardır:
| Section | Görevler |
|---|---|
| Kimlik Doğrulaması | 1. Hizmet sorumlusu alın veya profili yayımlayın. 2. GitHub gizli dizisi oluşturun. |
| Yapı | 1. Ortamı oluşturun. 2. Kapsayıcı görüntüsünü oluşturun. |
| Dağıtma | 1. Kapsayıcı görüntüsünü dağıtın. |
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
- Bir GitHub hesabı. Hesabınız yoksa ücretsiz olarak kaydolun. Azure Uygulaması Service'e dağıtmak için GitHub deposunda kodunuz olması gerekir.
- Kapsayıcılar için çalışan bir kapsayıcı kayıt defteri ve Azure Uygulaması Hizmeti uygulaması. Bu örnekte Azure Container Registry kullanılır. Kapsayıcılar için Azure App Service'e dağıtımın tamamını tamamladığından emin olun. Normal web uygulamalarından farklı olarak kapsayıcılar için web uygulamalarının varsayılan giriş sayfası yoktur. Çalışan bir örneği olması için kapsayıcıyı yayımlayın.
- Şu görevleri tamamlayın: Docker kullanarak kapsayıcılı Node.js uygulaması oluşturmayı, kapsayıcı görüntüsünü bir kayıt defterine göndermeyi ve ardından görüntüyü Azure App Service'e dağıtmayı öğrenin.
Dağıtım kimlik bilgileri oluşturma
OpenID Connect kullanarak GitHub Actions için Azure App Services ile kimlik doğrulaması yapmanızı öneririz. Ayrıca bir hizmet sorumlusu veya yayımlama profiliyle de kimlik doğrulaması yapabilirsiniz.
Azure ile kimlik doğrulaması yapmak için yayımlama profili kimlik bilgilerinizi veya hizmet sorumlunuzu GitHub gizli dizisi olarak kaydedin. iş akışınızdaki gizli bilgiye erişin.
Yayımlama profili, uygulama düzeyinde bir kimlik bilgisidir. Yayımlama profilinizi GitHub gizli dizisi olarak ayarlayın.
Azure portalında App Service'e gidin.
Genel Bakış bölmesinde Yayımlama profilini al'ı seçin.
Not
Ekim 2020 itibarıyla kullanıcıların
WEBSITE_WEBDEPLOY_USE_SCMLinux web uygulamalarıtrueiçin uygulama ayarını olarak ayarlamaları gerekir. Yaygın web uygulaması ayarlarını yapılandırmayı öğrenmek için Azure portalında App Service uygulaması yapılandırma bölümüne gidin.İndirilen dosyayı kaydedin. GitHub sırrını oluştururken dosyanın içeriğini kullanırsınız.
GitHub gizli dizisini kimlik doğrulaması için yapılandırma
GitHub'da deponuza göz atın. Ayarlar
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ışınızı yapılandırırken Azure Web App'i dağıtma eylemindeki gizli diziyi AZURE_WEBAPP_PUBLISH_PROFILE kullanın. Örneğin:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Kayıt defteriniz için GitHub gizli dizilerini yapılandırma
Docker Oturum Açma eylemiyle kullanılacak gizli dizileri tanımlayın. Bu makaledeki örnek, kapsayıcı kayıt defteri için Azure Container Registry'yi kullanır.
Azure portalında veya Docker'da kapsayıcınıza gidin ve kullanıcı adı ile parolayı kopyalayın. Azure Container Registry kullanıcı adını ve parolasını Azure portalında kayıt defterinizin Ayarlarbulabilirsiniz.
adlı
REGISTRY_USERNAMEkayıt defteri kullanıcı adı için yeni bir gizli dizi tanımlayın.adlı kayıt defteri parolası için yeni bir gizli dizi
REGISTRY_PASSWORDtanımlayın.
Kapsayıcı görüntüsünü oluşturma
Aşağıdaki örnekte, Node.js Docker görüntüsü oluşturan iş akışının bir bölümü gösterilmektedir. Docker Login'i kullanarak özel kapsayıcı kayıt defterinde oturum açın. Bu örnekte Azure Container Registry kullanılır ancak aynı eylem diğer kayıt defterleri için de çalışır.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Aynı anda birden çok kapsayıcı kayıt defterine oturum açmak için Docker oturum açma özelliğini de kullanabilirsiniz. Bu örnek, docker.io ile kimlik doğrulaması için iki yeni GitHub gizli dizisini içerir. Örnekte, kayıt defterinin kök düzeyinde bir Dockerfile olduğu varsayılır.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Aşağıdaki örnekte, bir Windows Docker görüntüsü oluşturan iş akışının bir bölümü gösterilmektedir. Docker Login'i kullanarak özel kapsayıcı kayıt defterinde oturum açın. Bu örnekte Azure Container Registry kullanılır ancak aynı eylem diğer kayıt defterleri için de çalışır.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Aynı anda birden çok kapsayıcı kayıt defterine oturum açmak için Docker oturum açma özelliğini de kullanabilirsiniz. Bu örnek, docker.io ile kimlik doğrulaması için iki yeni GitHub gizli dizisini içerir. Örnekte, kayıt defterinin kök düzeyinde bir Dockerfile olduğu varsayılır.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
App Service kapsayıcısına dağıtma
Görüntünüzü App Service'teki özel bir kapsayıcıya dağıtmak için eylemi kullanın azure/webapps-deploy@v2 . Bu eylemin yedi parametresi vardır:
| Parametre | Açıklama |
|---|---|
app-name |
(Gerekli) App Service uygulamasının adı. |
publish-profile |
(İsteğe bağlı) Web uygulamaları (Windows ve Linux) ve web uygulaması kapsayıcıları (Linux) ile kullanılır. Çoklu konteyner senaryosu desteklenmiyor. Web Deploy gizli bilgileriyle profil \*.publishsettings dosyası içeriğini yayımla. |
slot-name |
(İsteğe bağlı) Üretim alanı dışında mevcut bir alanı girin. |
package |
(İsteğe bağlı) Yalnızca web uygulamalarıyla kullanılır: Paket veya klasör yolu.
\*.zip, \*.war, \*.jarveya dağıtılacak bir klasör. |
images |
(Gerekli) Yalnızca web uygulaması kapsayıcılarıyla kullanılır: Tam kapsayıcı görüntüsü adını belirtin. Örneğin, myregistry.azurecr.io/nginx:latest veya python:3.12.12-alpine/. Birden fazla kapsayıcıya sahip bir uygulama için birden fazla kapsayıcı görüntü adı sağlanabilir (satır satır belirtilmiş). |
configuration-file |
(İsteğe bağlı) Yalnızca web uygulaması kapsayıcıları ile birlikte kullanılır: Docker Compose dosyasının yolu. Tam yol veya varsayılan çalışma dizinine göre olmalıdır. Çok kapsayıcılı uygulamalar için gereklidir. |
startup-command |
(İsteğe bağlı) Başlangıç komutunu girin. Örneğin: dotnet run veya dotnet filename.dll. |
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
name: Windows_Container_Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
İlgili içerik
GitHub'da farklı depolar halinde gruplandırılmış eylem kümemizi bulabilirsiniz. Her depo, CI/CD için GitHub'ı kullanmanıza ve uygulamalarınızı Azure'a dağıtmanıza yardımcı olacak belgeler ve örnekler içerir.