Alıştırma - Üretim uygulama görüntüsünü oluşturma
Önceki alıştırmada, uygulama görüntüsünü oluşturmak ve yayımlamak için hazırlama iş akışını oluşturmuştsunuz. Bu ünitede etiketli sürüm tetikleyicisini kullanan bir üretim iş akışı oluşturacaksınız.
Bu alıştırmada şunları yapın:
- Eylemler iş akışını oluşturun.
- Tetikleyiciyi
on tag
oluşturun. - Üretim görüntüsünü derleyin ve gönderme.
- Kişisel erişim belirteci (PAT) oluşturma.
- Etiket olayını tetikleyin.
GitHub Actions iş akışını oluşturma
İşlem hattını oluşturmaya başlamak için GitHub web sitesindeki örnek depo çatalınıza gidin ve Eylemler sekmesini seçin.
Sol bölmede Yeni iş akışı'nı seçin.
İş akışı seçin sayfasında, iş akışını kendiniz ayarlayın'ı seçin.
Temel iş akışını kopyalayıp düzenleme 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.
Düzenleme bölmesinin üzerinde dosyasını olarak
main.yml
build-production.yml
yeniden adlandırın.anahtarını olarak
name
CI
Build and push the tagged build to production
değiştirin.
'Açık' etiket tetikleyicisini oluşturma
on
anahtarındaki varsayılan tetikleyicileri değiştirin.
İkinci tetikleyiciyi kaldırın ve yalnızca
push
etiketlerini bırakın.branches
anahtarını aşağıdakitags
anahtarla değiştirin. Bu anahtar, iş akışının yalnızca belirli etiketlerde çalıştığı anlamına gelir. Bu durumda iş akışı yalnızca etiketi içeren desenev*
v1.0.0
uyarsa çalışır.name: Build and push the tagged build to production on: push: tags: - 'v*'
Kullanıma alma adımını yapılandırma
Önceki alıştırmada olduğu gibi:
- anahtarını olarak
jobs
ubuntu-latest
ubuntu-20.04
değiştirin. build
anahtarının adınıbuild_push_image
olarak değiştirin.- anahtarında
steps
, şablondan son iki örnek adımı silin ve seçeneğini koruyuncheckout
.
- anahtarını olarak
Gerekli sürüm bilgilerini toplayan yeni bir adım oluşturun. Bu adımı oluşturmak için iç komutunu kullanırsınız
::set-output
. Kullanıma alma eyleminin altına aşağıdaki satırları ekleyin:- name: Fetch latest version id: fetch_version run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
YAML dosyanız açıklamalar olmadan aşağıdaki örnekteki gibi görünmelidir:
name: Build and push the tagged build to production on: push: tags: - 'v*' jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Fetch latest version id: fetch_version run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
Docker adımları ekleme
Hazırlama iş akışıyla aynı şekilde ve Build and push Docker images
adımlarını Docker Login
ekleyin.
Sağ panelde Docker Oturum Açma araması yapın. İlk sıradaki Docker tarafından yayımlanmış olan sonucu seçin.
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
Fetch latest version
.,
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 production 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,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}
Anahtarın değerinin
tags
hazırlama iş akışından nasıl farklılık gösterdiğine dikkat edin. YAML'de kullanmaksteps.
, işlem hattındaki önceki adımlara başvurmak için yaygın bir uygulamadır. adımındafetch_version
kullandığınızdaset-output
, adımın çıkışını değişkenininGITHUB_REF
değerine ayarlarsınız. Bu çıkış artık nesnenin içindeki işlem hattındasteps
kullanılabilir.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
YAML dosyanız açıklamalar olmadan aşağıdaki örnekteki gibi görünmelidir:
name: Build and push the tagged build to production on: push: tags: - 'v*' jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Fetch latest version id: fetch_version run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/} - 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 production images uses: docker/build-push-action@v5.0.0 with: context: . tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }} push: true
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. İşleme için bir açıklama girin ve Değişiklikleri işle'yi seçin.
Bu kez, yeni bir etiket göndermediğiniz için üretim eylemi tetiklenmez, ancak önceki hazırlama eylemi tetikler ve yeni latest
bir görüntü oluşturur.
Kişisel erişim belirteci oluşturma (PAT)
Sonraki adımda etiketlerinizi göndermek ve dağıtım betiğini sonraki bir ünitede çalıştırmak için bir PAT gerekir.
GitHub web sitesindeki örnek deponun çatalını bulun. Sağ üst köşedeki profil fotoğrafınızı ve ardından Ayarlar seçin.
Sol menünün alt kısmındaki Geliştirici ayarları'nı seçin.
Açılan listeden Kişisel erişim belirteçleri>Belirteçleri (klasik) öğesini seçin.
Kişisel erişim belirteci oluştur'a tıklayın.
Not altında PAT'niz için myPersonalAccessTokenLM gibi bir ad girin.
Kapsamları seçin altında, iş akışının yanındaki onay kutusunu seçin.
Not
İş Akışı kapsamı, Github eylemlerine yönetici deposu erişimi verir. Sonraki adımda etiketlerinizi göndermek ve dağıtım betiğini sonraki bir ünitede çalıştırmak için bu erişime ihtiyacınız vardır.
Sayfanın alt kısmındaki Belirteç oluştur'a tıklayın.
PAT'nizi kopyalamak için kopyala simgesini seçin. Sonraki adımlarda kullanmak için PAT'yi kaydedin.
Etiket olayını tetikleme
Azure Cloud Shell'de kopyalanan deponuza gidin ve komutunu çalıştırın
git pull
.Şu komutu çalıştırın:
git tag -a v2.0.0 -m 'My first tag'
Aşağıdaki komutu çalıştırın. İstendiğinde parola olarak PAT'nizi sağlayın.
git push --tags
Önemli
Özgün depo v1.0.0 kullanır, bu nedenle yinelenenler mevcut olmadığından farklı bir etiket göndermeniz gerekir.
Eylemler sekmesini seçin ve çalışan işlemi inceleyin.
İşlem tamamlandığında Cloud Shell'de aşağıdaki komutu çalıştırın ve değerini sizin
ACR_NAME
ile değiştirerek<ACR_NAME>
sonuçlarda iki etiketin listelendiğini onaylayın.az acr repository show-tags --repository contoso-website --name <ACR_NAME> -o table
İşlem hattınızı otomatikleştirmek için Kubernetes uygulamalarına yönelik bir paketleme aracı olan Helm'i kullanma hakkında bilgi edinmek için bir sonraki üniteye geçin.