Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat menggunakan GitHub Actions untuk membangun alur kerja pengembangan perangkat lunak otomatis. Anda dapat menggunakan tindakan Azure Web Deploy untuk mengotomatiskan alur kerja Anda dan menyebarkan kontainer kustom ke Azure App Service.
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.
Untuk alur kerja kontainer App Service, file 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. Buat 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.
- Selesaikan tugas-tugas ini: Pelajari cara membuat aplikasi Node.js dalam kontainer dengan menggunakan Docker, mendorong gambar kontainer ke registri, lalu menyebarkan gambar ke Azure App Service.
Membuat info masuk penyebaran
Kami merekomendasikan agar Anda melakukan autentikasi dengan Azure App Services menggunakan OpenID Connect untuk GitHub Actions. Anda juga dapat mengautentikasi dengan perwakilan layanan atau profil penerbitan.
Untuk mengautentikasi dengan Azure, simpan kredensial profil publikasi atau perwakilan layanan Anda sebagai rahasia GitHub. Anda mengakses rahasia dalam alur kerja Anda.
Profil penerbitan adalah info masuk tingkat aplikasi. Siapkan profil penerbitan Anda sebagai rahasia GitHub.
Buka App Service di portal Microsoft Azure.
Pada panel Gambaran Umum, pilih Dapatkan profil Publikasi.
Catatan
Mulai Oktober 2020, pengguna harus mengatur pengaturan aplikasi untuk aplikasi
WEBSITE_WEBDEPLOY_USE_SCMweb Linux sebelumtruemereka mengunduh file. Untuk mempelajari cara mengonfigurasi pengaturan aplikasi web umum, buka Mengonfigurasi aplikasi App Service di portal Microsoft Azure.Simpan file yang diunduh. Anda menggunakan konten file untuk membuat rahasia GitHub.
Mengonfigurasi rahasia GitHub untuk autentikasi
Di GitHub, telusuri repositori Anda. Pilih Pengaturan>Keamanan>Rahasia 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.
Saat Anda mengonfigurasi alur kerja GitHub, gunakan rahasia AZURE_WEBAPP_PUBLISH_PROFILE dalam aksi penyebaran 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 artikel 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.
Buat citra kontainer
Contoh berikut menunjukkan bagian dari alur kerja yang membangun gambar Docker Node.js. Gunakan Docker Login untuk masuk ke registri kontainer privat. 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 }}
Contoh berikut menunjukkan bagian dari alur kerja yang membangun gambar Windows Docker. Gunakan Docker Login untuk masuk ke registri kontainer privat. Contoh ini menggunakan Azure Container Registry tetapi tindakan yang sama berfungsi untuk registri lain.
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 }}
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: 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 }}
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 |
(Diperlukan) Nama aplikasi App Service. |
publish-profile |
(Opsional) Digunakan dengan aplikasi web (Windows dan Linux) dan kontainer aplikasi web (Linux). Skenario multi-kontainer tidak didukung. Terbitkan konten file profil \*.publishsettings dengan rahasia Web Deploy. |
slot-name |
(Opsional) Masukkan slot yang sudah ada, kecuali slot produksi. |
package |
(Opsional) Hanya digunakan dengan aplikasi web: Jalur ke paket atau folder.
\*.zip, \*.war, \*.jar, atau folder yang akan disebarkan. |
images |
(Diperlukan) Digunakan hanya dengan kontainer aplikasi web: Tentukan nama gambar kontainer yang sepenuhnya memenuhi syarat. Misalnya, myregistry.azurecr.io/nginx:latest atau python:3.12.12-alpine/. Untuk aplikasi multi-kontainer, beberapa nama gambar kontainer dapat disediakan (dipisahkan multibaris). |
configuration-file |
(Opsional) Hanya digunakan dengan kontainer aplikasi web: 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 startup. Sebagai contoh: 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 }}'
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 }}'
Konten terkait
Anda dapat menemukan serangkaian tindakan kami yang dikelompokkan ke dalam repositori yang berbeda di GitHub. Setiap repositori berisi dokumentasi dan contoh untuk membantu Anda menggunakan GitHub untuk CI/CD dan menyebarkan aplikasi Anda ke Azure.