Release Deployer Workflow Action adalah penyebaran rilis otomatis untuk integrasi kontinu / penyebaran kontinu (CI / CD). Ini dirancang untuk mengotomatiskan proses penyebaran aplikasi web Anda. Tindakan ini menangani pengaturan lingkungan, memasang dependensi, membangun proyek (paket build), menggunakannya ke server jarak jauh, dan mengirim pemberitahuan ke Slack.
| Masukan | Keterangan | Diperlukan | Bawaan |
|---|---|---|---|
| situs-url | URL situs penempatan | Ya | N/a |
| Github-Token | Token GitHub. Ini disediakan secara otomatis oleh GitHub. Gunakan nilai default $ {{secrets.github_token}}. Info lebih lanjut | Ya | N/a |
| Deploy-Path | Jalur di server jarak jauh tempat aplikasi akan digunakan. | Ya | N/a |
| Deploy-host | Nama host atau alamat IP dari server jarak jauh. | Ya | N/a |
| Deploy-port | Port SSH dari server jarak jauh (biasanya 22). | Ya | N/a |
| Deploy-User | Nama pengguna untuk akses SSH ke server jarak jauh. | Ya | N/a |
| Deploy-key | Kunci SSH pribadi untuk mengakses server jarak jauh. Menghasilkan kunci ssh | Ya | N/a |
| nama tag | Nama tag dari Release Build. | Ya | N/a |
| jalur | Jalan ke direktori build di github runner. | Ya | build/batang/ |
| sakelar | Sakelar rsync untuk penyebaran. Ini mengontrol perilaku proses sinkronisasi file. Dokumentasi RSYNC | TIDAK | -avzr --Exclude = "*. Env" --Exclude = "env" --Exclude = ". GitHub" --Exclude = ". Git" --Exclude = ". Gitignore" --Exclude = ". User.ini" |
| Slack-Webhook | Slack Webhook URL untuk pemberitahuan. Dapatkan ini dari pengaturan Slack Anda. Membuat Webhooks Slack | TIDAK | N/a |
| Slack-Channel | Saluran kendur untuk pemberitahuan. | TIDAK | umum |
| Slack-title | Judul untuk pemberitahuan Slack. | TIDAK | Aplikasi Web digunakan |
| pesan kendur | Badan Pesan untuk pemberitahuan Slack. | TIDAK | Proses penempatan selesai. Periksa log untuk detailnya. |
| slack-username | Nama pengguna yang akan muncul sebagai pengirim pemberitahuan Slack. | TIDAK | Webapp Menyebarkan bot |
| slack-footer | Teks footer untuk pemberitahuan Slack. | TIDAK | Status Pembaruan Aplikasi Web |
| PHP-versi | Versi PHP untuk diatur | TIDAK | 7.4 |
| PHP-Extensions | Ekstensi php untuk menginstal | TIDAK | PCOV |
| Node-Versi | Versi node.js untuk diatur | TIDAK | 16 |
| Penggunaan-PHP | Apakah akan menyiapkan php | TIDAK | BENAR |
| Node penggunaan | Apakah akan mengatur node.js | TIDAK | BENAR |
| Penggunaan-instal | Apakah akan menjalankan pemasangan/pembaruan SSH jarak jauh | TIDAK | PALSU |
| unggahan-pelepasan-aset | Apakah akan mengunggah aset rilis | TIDAK | BENAR |
| File Release | File untuk diunggah untuk dirilis | TIDAK | build.zip; changelog.md |
| Penggunaan cache | Apakah akan menggunakan caching untuk dependensi | TIDAK | PALSU |
| unggah-artefak | Apakah akan mengunggah artefak | TIDAK | PALSU |
| nama artefak | Nama artefak untuk diunggah | TIDAK | Build-Artifact |
| jalur artefak | Jalur artefak untuk mengunggah | TIDAK | build/batang/ |
Untuk menggunakan tindakan ini dalam alur kerja Anda, sertakan langkah -langkah berikut dalam file alur kerja tindakan GitHub Anda. Jika Anda baru dalam tindakan github, buat direktori .github/workflows di akar repositori Anda, dan tambahkan file YAML (misalnya, release-deployer.yml ) dengan konten berikut:
Contoh Dasar:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notificationsContoh dengan komentar untuk setiap parameter:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
# Required parameters
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
# Optional parameters with defaults
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
switches : ' -avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini" ' # Rsync switches for deployment (default: '-avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini"')
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications
slack-channel : general # Slack channel for notifications (default: general)
slack-title : " Web Application Deployed " # Title for the Slack notification (default: "Web Application Deployed")
slack-message : " Deployment process completed. " # Message body for the Slack notification (default: "Deployment process completed. Check logs for details.")
slack-username : " WebApp Deploy Bot " # Username that will appear as the sender of the Slack notification (default: "WebApp Deploy Bot")
slack-footer : " Web Application Update Status " # Footer text for the Slack notification (default: "Web Application Update Status")
# Optional setup parameters with defaults
php-version : ' 7.4 ' # PHP version to setup (default: '7.4')
php-extensions : ' pcov ' # PHP extensions to install (default: 'pcov')
node-version : ' 16 ' # Node.js version to setup (default: '16')
# Boolean flags
use-php : true # Whether to setup PHP (default: true)
use-node : true # Whether to setup Node.js (default: true)
use-remote-install : true # Whether to execute remote SSH updates (default: false)
upload-release-assets : true # Whether to upload release assets (default: true)
# Files to upload to release
release-files : ' build.zip;CHANGELOG.md ' # Files to upload to release (default: 'build.zip;CHANGELOG.md')
Dalam contoh ini, alur kerja memicu permintaan tarik tertutup dan juga dapat dipicu secara manual melalui tab Tindakan GitHub. Ini menggunakan googleapis/release-please-action untuk mengelola rilis dan kemudian menjalankan tindakan penyusutan khusus jika rilis dibuat.
Peringatan
Opsi --delete dalam switches bisa berbahaya karena dapat mengakibatkan penghapusan file atau konten penting di server.
Direktori Build : Input path (Default build/trunk/ ) menentukan direktori dari mana file akan disalin ke server jarak jauh menggunakan rsync . Pastikan proses build Anda mengeluarkan file yang diperlukan ke direktori ini, atau sesuaikan input path yang sesuai untuk mencocokkan lokasi output build Anda.
RSYNC -Opsi --delete : Opsi --delete dalam input switches digunakan untuk menjaga direktori jarak jauh tetap sinkron dengan direktori build lokal dengan menghapus file pada server jarak jauh yang tidak lagi ada secara lokal. Ini bisa berbahaya karena dapat mengakibatkan penghapusan file atau konten penting di server, seperti gambar yang diunggah pengguna atau aset lainnya. Gunakan opsi ini dengan hati -hati untuk menghindari kehilangan data yang tidak diinginkan. Pertimbangkan untuk mengecualikan direktori yang tidak boleh dihapus dengan menambahkannya ke daftar --exclude dalam input switches . Lihat: Opsi Hapus RSYNC
rsync dengan sakelar yang ditentukan.set -eo ), yang memastikan bahwa langkah -langkah selanjutnya tidak dieksekusi jika langkah sebelumnya gagal.| Rahasia | Keterangan |
|---|---|
GITHUB_TOKEN | Token GitHub untuk otentikasi (disediakan secara default dalam tindakan github) |
DEPLOY_PATH | Jalur Penyebaran Jarak Jauh |
DEPLOY_HOST | Host Remote Deploy |
DEPLOY_PORT | Port Penyebaran Jarak Jauh |
DEPLOY_USER | Pengguna Deploy Jarak Jauh |
DEPLOY_KEY | Kunci Penyebaran Jarak Jauh |
SLACK_WEBHOOK | URL webhook slack untuk pemberitahuan |
Untuk menambahkan rahasia ke repositori Anda:
CI/CD adalah metode untuk sering mengirimkan aplikasi kepada pelanggan dengan memperkenalkan otomatisasi ke dalam tahap pengembangan aplikasi. Konsep utama yang dikaitkan dengan CI/CD adalah integrasi kontinu, pengiriman berkelanjutan, dan penyebaran kontinu. Tindakan ini membantu mengimplementasikan CI/CD dengan mengotomatisasi proses penyebaran, memastikan bahwa aplikasi Anda
Selalu dalam keadaan yang dapat digunakan dan pembaruan dikirimkan kepada pengguna dengan cepat dan efisien.
Dengan memasukkan tindakan ini ke dalam alur kerja Anda, Anda dapat mencapai proses penyebaran yang lebih andal dan aman, meningkatkan alur kerja pengembangan Anda, dan memastikan bahwa aplikasi Anda digunakan secara konsisten dan dengan cepat.
Penting
GitHub menyediakan beberapa menit gratis setiap bulan, tergantung pada rencana Anda, yang bisa cukup untuk proyek kecil hingga menengah. Penggunaan Tindakan GitHub didasarkan pada waktu komputasi yang diperlukan untuk menjalankan alur kerja Anda, yang dapat bervariasi tergantung pada pelari yang digunakan dan total menit yang dikonsumsi. Untuk mengelola penggunaan secara efektif, optimalkan alur kerja Anda dan pertimbangkan untuk menggunakan pelari yang diselenggarakan sendiri untuk proyek yang lebih besar. Kalkulator harga.
Skrip dan dokumentasi dalam proyek ini dirilis di bawah lisensi MIT.