GitHub eylemlerini kullanarak App Service özel kapsayıcı dağıtma
GitHub eylemleri , otomatik yazılım geliştirme iş akışı oluşturma esnekliği sağlar. Azure Web dağıtımı eylemiyle, GitHub eylemlerini kullanarak App Service için özel kapsayıcılar dağıtmak üzere iş akışınızı otomatik hale getirebilirsiniz.
Bir iş akışı, deponuzdaki yoldaki bir YAML (. yıml) dosyası tarafından tanımlanır /.github/workflows/ . Bu tanım, iş akışındaki çeşitli adımları ve parametreleri içerir.
Azure App Service kapsayıcı iş akışı için, dosyanın üç bölümü vardır:
| Section | Görevler |
|---|---|
| Kimlik Doğrulaması | 1. bir hizmet sorumlusu alın veya profili yayımlayın. 2. GitHub gizli dizisi oluşturun. |
| Derleme | 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 hesap oluşturun
- GitHub hesabı. Bir hesabınız yoksa ücretsizkaydolun. Azure App Service dağıtmak için bir GitHub deposunda kodunuz olması gerekir.
- Kapsayıcılar için çalışan bir kapsayıcı kayıt defteri ve Azure App Service uygulaması. Bu örnek Azure Container Registry kullanır. Kapsayıcılar için Azure App Service için tam dağıtımı tamamladığınızdan emin olun. Normal web uygulamalarından farklı olarak, kapsayıcılar için Web Apps varsayılan bir giriş sayfasına sahip değildir. Kapsayıcıyı çalışan bir örneğe sahip olacak şekilde yayımlayın.
Dağıtım kimlik bilgileri oluştur
GitHub eylemleri için Azure App Services ile kimlik doğrulamak için önerilen yol, bir yayımlama profiliyle birlikte bulunur. Hizmet sorumlusu ile de kimlik doğrulaması yapabilirsiniz ancak işlem daha fazla adım gerektirir.
Yayımlama profili kimlik bilgilerinizi veya hizmet sorumlunuzu Azure ile kimlik doğrulamak için GitHub gizli anahtarı olarak kaydedin. Gizli anahtar, iş akışınız dahilinde.
Yayımlama profili, uygulama düzeyinde bir kimlik bilgileridir. Yayımlama profilinizi GitHub gizli anahtarı olarak ayarlayın.
Azure portal App Service 'e gidin.
Genel bakış sayfasında, Yayımlama profili al' ı seçin.
Not
2020 Ekim itibariyle Linux Web Apps,
WEBSITE_WEBDEPLOY_USE_SCMtruedosyanın indirilmeden önce uygulama ayarının ayarlanmış olması gerekir. Bu gereksinim gelecekte kaldırılacak. Ortak Web uygulaması ayarlarını yapılandırma hakkında bilgi edinmek için Azure portal App Service uygulama yapılandırmakonusuna bakın.İndirdiğiniz dosyayı kaydedin. Dosyanın içeriğini bir GitHub parolası oluşturmak için kullanacaksınız.
Kimlik doğrulaması için GitHub gizliliğini yapılandırma
GitHub'da deponuza gözatıp Ayarlar > gizlilikler ' ı seçin > yeni bir gizli dizi ekleyin.
Uygulama düzeyi kimlik bilgilerinikullanmak için, indirilen yayımlama profili dosyasının içeriğini gizli dizinin değer alanına yapıştırın. Parolayı adlandırın AZURE_WEBAPP_PUBLISH_PROFILE .
GitHub iş akışınızı yapılandırırken, AZURE_WEBAPP_PUBLISH_PROFILE Azure Web uygulaması dağıtma eyleminde öğesini kullanırsınız. Örnek:
- 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 belgedeki örnek, kapsayıcı kayıt defteri için Azure Container Registry kullanır.
Azure portal veya Docker 'daki kapsayıcınıza gidin ve Kullanıcı adını ve parolayı kopyalayın. Azure Container Registry Kullanıcı adı ve parolayı, > kayıt defteriniz için ayarlar erişim tuşları altında Azure Portal bulabilirsiniz.
Adlı kayıt defteri Kullanıcı adı için yeni bir gizli dizi tanımlayın
REGISTRY_USERNAME.Adlı kayıt defteri parolası için yeni bir gizli dizi tanımlayın
REGISTRY_PASSWORD.
Kapsayıcı görüntüsünü oluşturma
Aşağıdaki örnek, Node.JS bir Docker görüntüsü oluşturan iş akışının bir parçasını gösterir. Bir özel kapsayıcı kayıt defterinde oturum açmak için Docker oturum açma kullanın. Bu örnek Azure Container Registry kullanır, ancak aynı eylem diğer kayıt defterleri için de geçerlidir.
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 defterlerine oturum açmak için Docker oturum açma bilgilerini de kullanabilirsiniz. Bu örnek, docker.io ile kimlik doğrulaması için iki yeni GitHub parolası içerir. Örnek, kayıt defterinin kök düzeyinde bir Dockerfile olduğunu varsayar.
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 }}
App Service kapsayıcısına dağıtma
Görüntünüzü App Service özel bir kapsayıcıya dağıtmak için azure/webapps-deploy@v2 eylemini kullanın. Bu eylem yedi parametreye sahiptir:
| Parametre | Açıklama |
|---|---|
| uygulama adı | Istenir App Service uygulamasının adı |
| Yayımlama profili | Seçim Web Apps (Windows ve Linux) ve Web uygulaması kapsayıcıları (Linux) için geçerlidir. Çoklu kapsayıcı senaryosu desteklenmiyor. *Web dağıtımı gizli dizileri ile profil (. publishsettings) dosya içeriğini yayımlama |
| yuva adı | Seçim Üretim yuvası dışında mevcut bir yuva girin |
| leyebilir | Seçim Yalnızca Web uygulaması için geçerlidir: paket veya klasör yolu. *. zip, * . war, * . jar veya dağıtılacak bir klasör |
| yansımasını | Istenir Yalnızca Web uygulaması kapsayıcıları için geçerlidir: tamamen nitelenmiş kapsayıcı görüntüsü adını belirtin. Örneğin, ' myregistry.azurecr.io/nginx:latest ' veya ' Python: 3.7.2-alçam/'. Çok kapsayıcılı bir uygulama için birden çok kapsayıcı görüntüsü adı sağlanmış olabilir (çok satırlı ayrılmış) |
| yapılandırma-dosya | Seçim Yalnızca Web uygulaması kapsayıcıları için geçerlidir: Docker-Compose dosyanın yolu. Tam olarak nitelenmiş bir yol olmalıdır veya varsayılan çalışma dizinine göre değişir. Çok Kapsayıcılı uygulamalar için gereklidir. |
| başlangıç-komut | Seçim Başlangıç komutunu girin. For ex. 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 }}'
Sonraki adımlar
GitHub 'daki farklı depolarda gruplanmış eylem listemizi, her biri, CI/CD için GitHub kullanmanıza ve uygulamalarınızı Azure 'a dağıtmanıza yardımcı olacak belgeler ve örnekler içeren bir şekilde bulabilirsiniz.