Alıştırma - Uygulama görüntüsünü oluşturma
Bu ünitede, uygulama görüntüsünü oluşturup Azure Container Registry'ye göndererek GitHub Actions hazırlama işlem hattınızı oluşturacaksınız.
Aşağıdaki görüntüde, tasarladığınız CI/CD işlem hattı gösterilmektedir:
Bu alıştırmada, aşağıdaki adımları uygulayarak hazırlama işlem hattını oluşturacaksınız:
- GitHub Actions iş akışını oluşturun.
- Tetikleyiciyi
on push
oluşturun. - Uygulama görüntüsünü derleyin ve gönderebilirsiniz.
- Gizli dizileri ayarlayın.
- İşi çalıştırın.
GitHub Actions iş akışını oluşturma
GitHub iş akışları işlere, işler de adımlara ayrılır. Her adımın birden çok komutu olabilir ve yürütmek için birden çok eylem kullanabilirsiniz.
İşlem hattınızı oluşturmaya başlamak için GitHub web sitesindeki örnek depo çatalınıza gidin.
Eylemler sekmesini seçin.
Bir iş akışını kendiniz ayarlamak için bağlantıyı seçin.
Bu noktada işlem hattı yalnızca deponuzdaki .github/workflows dizinindeki boş bir dosyadır. GitHub, çoğu işlem hattını oluşturmak için ihtiyacınız olan önceden oluşturulmuş bileşenleri sağlar. Başlamak için aşağıdaki kodu kopyalayıp Yeni dosyayı düzenle bölmesine yapıştırın:
# This is a basic workflow to help you get started with Actions name: CI # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the main branch on: push: branches: [ main ] pull_request: branches: [ main ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project.
Yeni dosyayı düzenle bölmesinin üst tarafından main.yml dosyasının adını build-staging.yml olarak değiştirin.
anahtarını olarak
name
CI
Build and push the latest build to staging
değiştirin.# This is a basic workflow to help you get started with Actions name: Build and push the latest build to staging
'Açık' tetikleyicisini değiştirme
Temel iş akışı şablonu iki tetikleyiciyle birlikte gelir:
- Ana dala yapılan tüm gönderimler.
- Ana dalındaki tüm çekme istekleri.
İşlem hattının çekme isteğinde çalışması gerekmez, bu nedenle anahtardaki on
tetikleyicileri değiştirerek yalnızca anında iletme tetikleyicisini tutacak şekilde değiştirin. İkinci tetikleyiciyi kaldırın ve yalnızca push
etiketlerini bırakın.
name: Build and push the latest build to staging
on:
push:
branches: [ main ]
Kullanıma alma adımını yapılandırma
Ardından, iş adımları üzerinde çalışmaya başlayın. Bu süreçte, işlem hattı tasarım diyagramınızda hem derleme görevlerini hem de dağıtım görevlerini uygularsınız.
altında
jobs
anahtarı olarakbuild_push_image
yeniden adlandırınbuild
.Bu iş akışının Ubuntu 20.04'te çalışmasını istediğiniz için anahtarı olarak
ubuntu-latest
ubuntu-20.04
değiştirinruns-on
.Yalnızca şablona örnek olarak anahtardaki
steps
son iki komutu silin.Açıklamalar olmadan dosyanız şu örnekteki gibi görünmelidir:
name: Build and push the latest build to staging on: push: branches: [ main ] jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2
Artık eylemi kullanan bir adıma checkout
sahipsiniz. Bu eylem, depoyu iş ortamına kopyalar. Bu adım, işlem hattı tasarım diyagramındaki ilk eylem olan Depoyu kopyala eylemiyle eşdeğerdir.
Docker adımları ekleme
Ardından, Docker görüntünüzü oluşturmak için eylemler ekleyin. Bu eylemler için kullanımı ayarlayabilirsiniz. Bu örnekte, kullanılabilir parametrelerin yalnızca birkaçı kullanılır. Daha fazla bilgi için bkz. GitHub derleme-gönderme-eylem belgeleri.
Sağ paneldeki Market sekmesinde docker oturum açma bilgilerini arayın ve docker tarafından yayımlanan ilk sonucu seçin.
Not
2. sürümden önceki Docker eylemlerinde oturum açma akışı yerleşikti, ancak 2. ve üzeri sürümlerde bu eylemler birbirinden ayrılır, bu nedenle iş akışını doğru ayarlamak için iki eyleme ihtiyacınız vardır.
Yükleme'nin altında kopyalama simgesini seçerek kullanım YAML'sini kopyalayın.
Kopyalanan YAML'yi eylemin altına yapıştırın
actions/checkout@v2
.Önemli
YAML kullanırken girintilere dikkat edin.
name
anahtarı, yukarıdakiuses
anahtarıyla aynı hizada olmalıdır.,
username
vepassword
anahtarlarına aşağıdaki değerleriregistry
ekleyin:registry
:${{ secrets.ACR_NAME }}
username
:${{ secrets.ACR_LOGIN }}
password
:${{ secrets.ACR_PASSWORD }}
Bu alıştırmada kullanılmadıkları için diğer anahtarları silin.
Market'in altındaki sağ panelde derleme ve gönderme docker görüntüleri için arama yapın ve docker tarafından yayımlanan ilk sonucu seçin.
Yükleme'nin altında kopyalama simgesini seçerek kullanım YAML'sini kopyalayın.
Kopyalanan YAML'yi, daha önce kopyalanan
docker-login
eylemdeki son anahtarın altına yapıştırın.anahtarı olarak
name
Build and push Docker images
Build and push staging images
yeniden adlandırın.,
push
vetags
anahtarlarına aşağıdaki değerlericontext
ekleyin:context
:.
push
:true
tags
:${{secrets.ACR_NAME}}/contoso-website:latest
Bu alıştırmada kullanılmadıkları için diğer anahtarları silin.
Docker'ın kullanması için derleme altyapısını ayarlamak için kullanıma alma eylemiyle oturum açma eylemi arasında adlı
docker/setup-buildx-action
başka bir eylem ekleyin. Aşağıdaki kod parçacığını kopyalayın ve velogin
eylemleri arasınacheckout
yapıştırın.- name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0
Açıklamalar olmadan son dosyanız aşağıdaki örnekteki gibi görünmelidir:
name: Build and push the latest build to staging on: push: branches: [ main ] jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0 - name: Docker Login uses: docker/login-action@v3.0.0 with: registry: ${{ secrets.ACR_NAME }} username: ${{ secrets.ACR_LOGIN }} password: ${{ secrets.ACR_PASSWORD }} - name: Build and push staging images uses: docker/build-push-action@v5.0.0 with: context: . push: true tags: ${{secrets.ACR_NAME}}/contoso-website:latest
Değişiklikleri işleme
Değişikliklerinizi işlemek için sağ üst köşede bulunan Değişiklikleri işle düğmesini seçin. Değişiklikleri işle ekranında işleme için bir açıklama girin ve Değişiklikleri işle'yi seçin.
Değişiklikleri işle'nin seçilmesi yeni bir derlemeyi tetikler, ancak gizli dizileri henüz ayarlamadığınız için bu derleme başarısız olur.
Gizli dizileri ayarlama
Gizli dizileri ayarlamak için GitHub depo sayfanızda Ayarlar sekmesini ve ardından sol menüden Gizli Diziler ve değişkenler>Eylemler'i seçin. İş akışınızın kullandığı aşağıdaki gizli dizileri tanımlayın:
ACR_NAME
ACR_Name
: Kurulum betiği tarafından döndürülen değerACR_LOGIN
ACR Login Username
: Kurulum betiği tarafından döndürülen değerACR_PASSWORD
ACR Login Password
: Kurulum betiği tarafından döndürülen değerRESOURCE_GROUP
Resource Group Name
: Kurulum betiği tarafından döndürülen değerCLUSTER_NAME
: contoso-video
Her gizli diziyi tanımlamak için:
- Yeni depo gizli dizisi'ni seçin.
- Ad olarak, önceki listeden gizli dizi adını girin.
- Gizli Dizi için kurulum betiğinden kaydettiğiniz değeri girin veya değeri almak için bir Cloud Shell sorgusu çalıştırın.
- Add secret (Gizli dizi ekle) öğesini seçin.
Gizli dizi değerlerini almak için isteğe bağlı sorgular çalıştırma
Kurulum betiğinin döndürduğu değerlere sahip değilseniz, bilgileri almak için Azure Cloud Shell'de aşağıdaki komutları çalıştırabilirsiniz:
ACR_NAME
:az acr list --query "[?contains(resourceGroup, 'mslearn-gh-pipelines')].loginServer" -o table
ACR_LOGIN
:az acr credential show --name <ACR_NAME> --query "username" -o table
ACR_PASSWORD
:az acr credential show --name <ACR_NAME> --query "passwords[0].value" -o table
RESOURCE_GROUP
:az aks list -o tsv --query "[?name=='contoso-video'].resourceGroup"
İşi çalıştırma
Eylemler sekmesini seçin.
Listedeki tek yürütmeyi, başarısız build-staging.yml işini seçin.
Sağ üst köşede İşleri yeniden çalıştır Tüm işleri> yeniden çalıştır'ı seçin ve Tüm işleri yeniden çalıştır ekranında İşleri yeniden çalıştır'ı seçin.
Derleme tamamlandığında Cloud Shell'deçalıştırarak
az acr repository list --name <ACR_NAME> -o table
Container Registry deposununcontoso-website
sonuçlarda göründüğünü doğrulayın.
Üretim iş akışınızı oluşturmak için sonraki üniteye geçin.