Menyebarkan kontainer kustom ke App Service menggunakan GitHub Actions
GitHub Actions memberi Anda fleksibilitas untuk membangun alur kerja pengembangan perangkat lunak otomatis. Dengan tindakan Azure Web Deploy, Anda dapat mengotomatiskan alur kerja Anda untuk menyebarkan kontainer kustom ke App Service menggunakan GitHub Actions.
Sebuah alur kerja ditentukan oleh file YAML (.yml) pada jalur /.github/workflows/
di dalam repositori Anda. Definisi ini berisi beragam langkah dan parameter yang ada di alur kerja.
Pada alur kerja kontainer Azure App Service, filenya memiliki tiga bagian:
Bagian | Tugas |
---|---|
Autentikasi | 1. Ambil kembali perwakilan layanan atau profil penerbitan. 2. Buat rahasia GitHub. |
Build | 1. Buat lingkungan. 2. Buat citra kontainer. |
Sebarkan | 1. Sebarkan gambar kontainer. |
Prasyarat
- Akun Azure dengan langganan aktif. Membuat akun secara gratis
- Akun GitHub. Jika Anda belum memilikinya, daftar gratis. Anda harus memiliki kode dalam repositori GitHub untuk disebarkan ke Azure App Service.
- Registri kontainer yang berfungsi dan aplikasi Azure App Service untuk kontainer. Contoh ini menggunakan Azure Container Registry. Pastikan untuk menyelesaikan penyebaran penuh ke Azure App Service untuk kontainer. Tidak seperti aplikasi web biasa, aplikasi web untuk kontainer tidak memiliki halaman arahan default. Terbitkan kontainer agar memiliki contoh yang berfungsi.
Membuat info masuk penyebaran
Cara yang disarankan untuk mengautentikasi dengan Azure App Services untuk GitHub Actions adalah dengan profil penerbitan. Anda juga dapat mengautentikasi dengan perwakilan layanan atau Open ID Connect, tetapi prosesnya memerlukan lebih banyak langkah.
Simpan info masuk profil penerbitan atau perwakilan layanan Anda sebagai rahasia GitHub untuk mengautentikasi dengan Azure. Anda akan mengakses rahasia dalam alur kerja Anda.
Profil penerbitan adalah info masuk tingkat aplikasi. Siapkan profil penerbitan Anda sebagai rahasia GitHub.
Buka layanan aplikasi Anda di portal Microsoft Azure.
Pada halaman Ringkasan, pilih Dapatkan profil Penerbitan.
Catatan
Mulai Oktober 2020, aplikasi web Linux akan memerlukan pengaturan aplikasi
WEBSITE_WEBDEPLOY_USE_SCM
untuk diatur ketrue
sebelum mengunduh file. Persyaratan ini akan dihapus di masa mendatang. Lihat Mengonfigurasi aplikasi App Service di portal Microsoft Azure, untuk mempelajari cara mengonfigurasi pengaturan aplikasi web umum.Simpan file yang diunduh. Anda akan menggunakan isi file tersebut untuk membuat rahasia GitHub.
Mengonfigurasi rahasia GitHub untuk autentikasi
Di GitHub, telusuri repositori Anda. Pilih Pengaturan > Rahasia Keamanan > dan variabel > Tindakan > Rahasia repositori baru.
Untuk menggunakan info masuk tingkat aplikasi, tempelkan isi file profil penerbitan yang diunduh ke bidang nilai rahasia. Beri nama rahasia AZURE_WEBAPP_PUBLISH_PROFILE
.
Ketika mengonfigurasi alur kerja GitHub, Anda menggunakan AZURE_WEBAPP_PUBLISH_PROFILE
pada tindakan sebarkan Azure Web App. Contohnya:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Mengonfigurasi rahasia GitHub untuk registri Anda
Tetapkan rahasia untuk digunakan dengan tindakan Docker Login. Contoh dalam dokumen ini menggunakan Azure Container Registry untuk registri kontainer.
Buka kontainer Anda di portal Microsoft Azure atau Docker dan salin nama pengguna dan kata sandi. Anda dapat menemukan nama pengguna dan kata sandi Azure Container Registry di portal Microsoft Azure pada Pengaturan>Kunci akses untuk registri Anda.
Tentukan rahasia baru untuk nama pengguna registri bernama
REGISTRY_USERNAME
.Tentukan rahasia baru untuk kata sandi registri bernama
REGISTRY_PASSWORD
.
Bangun citra Kontainer
Contoh berikut menunjukkan bagian dari alur kerja yang menyusun Node.JS Docker. Gunakan Docker Login untuk masuk ke registri kontainer pribadi. Contoh ini menggunakan Azure Container Registry tetapi tindakan yang sama berfungsi untuk registri lain.
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 }}
Anda juga dapat menggunakan masuk Docker untuk masuk ke beberapa registri kontainer secara bersamaan. Contoh ini mencakup dua rahasia GitHub baru untuk autentikasi dengan docker.io. Contoh mengasumsikan bahwa ada Dockerfile di tingkat akar registri.
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 }}
Sebarkan ke kontainer App Service
Untuk menyebarkan gambar Anda ke kontainer kustom di App Service, gunakan tindakan azure/webapps-deploy@v2
. Tindakan ini memiliki tujuh parameter:
Parameter | Penjelasan |
---|---|
app-name | (Wajib) Nama aplikasi App Service |
publish-profile | (Opsional) Berlaku untuk Web Apps (Windows dan Linux) dan Web App Containers(linux). Skenario multi kontainer tidak didukung. Menerbitkan konten file profil (*.publishsettings) dengan rahasia Web Deploy |
slot-name | (Opsional) Masukkan Slot yang ada selain slot Produksi |
package | (Opsional) Hanya berlaku untuk Web App: Jalur ke paket atau folder. *.zip, *.war, *.jar atau folder untuk disebarkan |
gambar | (Diperlukan) Berlaku hanya untuk Kontainer Web App: Tentukan nama gambar kontainer yang sepenuhnya memenuhi syarat. Contohnya, 'myregistry.azurecr.io/nginx:latest' atau 'python:3.7.2-alpine/'. Untuk aplikasi multi-kontainer, beberapa nama gambar kontainer dapat disediakan (dipisahkan multi-baris) |
configuration-file | (Opsional) Berlaku hanya untuk Kontainer Web App: Jalur file Docker-Compose. Harus menjadi jalur yang sepenuhnya memenuhi syarat atau relatif terhadap direktori kerja default. Diperlukan untuk aplikasi multi-kontainer. |
startup-command | (Opsional) Masukkan perintah start-up. Misalnya dotnet run atau 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 }}'
Langkah berikutnya
Anda dapat menemukan set Tindakan yang dikelompokkan ke berbagai repositori pada GitHub, masing-masing berisi dokumentasi dan contoh untuk membantu Anda menggunakan GitHub untuk CI/CD dan menyebarkan aplikasi ke Azure.