Tính năng Webhook Deploy

Hướng dẫn sử dụng tính năng Webhook Deploy

Tính năng này cho phép bạn triển khai phiên bản mới cho service bằng cách gửi một request với phương thức POST đến Webhook Deploy của service đó.

Kích hoạt tính năng Webhook Deploy

Để kích hoạt tính năng Webhook Deploy, bạn cần truy cập vào Service của bạn trên Bizfly App Engine và chọn Chi tiết.

image

Trong trang này sẽ chứa các thông tin về service của bạn, bao gồm Webhook Deploy. Bạn cần click vào nút bật trong mục Webhook Deploy để kích hoạt tính năng này. Mặc định tính năng này sẽ được tắt.

image

Sau khi kích hoạt tính năng Webhook Deploy, bạn sẽ nhận được một Webhook URL. Đây là URL mà bạn sẽ sử dụng để gửi request bằng phương thức POST đến để triển khai phiên bản mới cho service của bạn.

image

Hệ thống sẽ xác thực yêu cầu triển khai phiên bản mới bằng trường TOKEN được gắn trong request, chính vì thế bạn cần lưu ý không bao giờ chia sẻ Webhook URL này với bất kỳ ai.

Ngoài ra bạn có thể nhấn nút bên cạnh URL để tạo ra một token mới. Sau khi tạo token mới, bạn cần cập nhật lại token mới này vào các nơi sử dụng Webhook Deploy để có thể tiếp tục sử dụng.


Các trường có thể sử dụng trong Webhook Deploy

Nhằm mục đích tăng sự linh hoạt cho Webhook Deploy, App Engine hỗ trợ các trường bạn có thể truyền thêm vào trong yêu cầu gửi lên trong Webhook deploy.

  • commit_hash: trường này cho phép bạn triển khai phiên bản mới commit hash cụ thể. Commit hash bạn có thể sử dụng dạng đầy đủ (cb803e1b76141d2b418018e64ad8adc68be9e0bd) hoặc dạng rút gọn (cb803e1b). Trường này được sử dụng với các service đang triển khai sử dụng nguồn từ GIT, các nguồn khác sẽ không được hỗ trợ.

Ví dụ:

curl -X POST "https://manage.bizflycloud.vn/api/app-engine/v1/services/2763fc91-a8f7-4276-88a0-2b0d444f977e/hook?token=XXXXXXXX0ae1e33&commit_hash=cb803e1b76141d2b418018e64ad8adc68be9e0bd"
  • image_tag: trường này cho phép bạn triển khai phiên bản mới image tag cụ thể. Trường này được sử dụng với các service đang triển khai sử dụng nguồn từ IMAGE, các nguồn khác sẽ không được hỗ trợ.

Ví dụ:

curl -X POST "https://manage.bizflycloud.vn/api/app-engine/v1/services/2763fc91-a8f7-4276-88a0-2b0d444f977e/hook?token=XXXXXXXX0ae1e33&image_tag=production"
  • deploy_without_cache: trường này cho phép bạn triển khai có sử dụng cache hay không, với trường hợp không muốn sử dụng cache bạn cần để giá trị bằng true cho trường này và ngược lại khi bạn muốn sử dụng cache. Mặc định việc triển khai ứng dụng sẽ sử dụng cache để giảm thời gian xây dựng.

Ví dụ:

curl -X POST "https://manage.bizflycloud.vn/api/app-engine/v1/services/2763fc91-a8f7-4276-88a0-2b0d444f977e/hook?token=XXXXXXXX0ae1e33&deploy_without_cache=true"

Với trường hợp bạn muốn kết hợp gửi nhiều trường cùng một lúc thì cần liên kết các trường bằng ký tự &

Ví dụ:

curl -X POST "https://manage.bizflycloud.vn/api/app-engine/v1/services/2763fc91-a8f7-4276-88a0-2b0d444f977e/hook?token=XXXXXXXX0ae1e33&deploy_without_cache=true&commit_hash=cb803e1b76141d2b418018e64ad8adc68be9e0bd"

Ứng dụng của Webhook Deploy


Tích hợp tự động triển khai phiên bản mới

Tính năng Webhook Deploy có thể được ứng dụng trong nhiều trường hợp sử dụng khác nhau. Tuy nhiên một trường hợp sử dụng chính của Webhook Deploy là tích hợp vaò trong quá trình CD (Continuous Deployment).

Mục đích của việc tích hợp hợp Webhook Deploy vào quá trình CD sẽ giúp khi bạn thay đổi source code ứng dụng trên các nền tảng quản trị mã nguồn như GitHub, Gitlab thì Service của bạn trên Bizfly App Engine sẽ tự động được xây dựng lại với source code mới.

Mô hình:

image

Tích hợp với Github sử dụng Github Action

Github Action là một công cụ giúp bạn tự động hóa các công việc trong quá trình phát triển phần mềm. Bạn có thể sử dụng Github Action để tự động triển khai phiên bản mới cho service của bạn trên Bizfly App Engine.

Bạn có thể tìm hiểu thêm về Github Action tại đây.

Bước 1: Để tích hợp Webhook Deploy cho repository của bạn trên Github, bạn cần tạo Secret trong repository để lưu trữ Webhook URL theo các bước như sau:

Trong repository của bạn chọn Settings -> Secrets and variables -> Actions -> New repository secret

image

Bước 2: Tạo Secret mới, đặt tên cho SecretWEBHOOK_URL và nhập giá trị là Webhook URL của service của bạn trên Bizfly App Engine, sau đó ấn Add Secret.

image

Bước 3: Tạo file .github/workflows/deploy.yml trong repository của bạn với nội dung như sau:

name: Sample Github CD for Bizfly App Engine

on:
  push:
    branches: [ "master" ]  # Sẽ kích hoạt jobs ở dưới khi có sự kiện push lên branch master

jobs:
  deploy:
    runs-on: ubuntu-latest  # Sử dụng runner chạy bằng ubuntu
    steps:
      - name: Trigger deploy in Bizfly App Engine
        run: curl -X POST ${{ secrets.WEBHOOK_URL }} # Thực hiện gửi request với phương thức POST bằng curl

File deploy.yaml bên trên có mục đích thực hiện gửi request với phương thức POST đến Webhook URL của service của bạn trên Bizfly App Engine khi có sự kiện push lên branch master. Sau khi cấu hình thanh công, bạn có thể thực hiện push code lên branch master để kiểm tra kết quả.

Tại mục Actions của repository của bạn, bạn sẽ thấy có một job được thực hiện là Sample Github CD for Bizfly App Engine như hình.

image

Vào xem chi tiết từng job, bạn sẽ thấy job deploy đã được thực hiện thành công như hình.

image

Quay trở lại trang quản trị service của bạn trên Bizfly App Engine, bạn sẽ thấy đã có một phiên bản mới được triển khai.

image

Như vậy là bạn đã hoàn thành việc tích hợp Webhook Deploy vào quá trình CD của ứng dụng của bạn sử dụng Github Actions.


Tích hợp với Gitlab sử dụng Gitlab CI

Tương tự Github Actions thì Gitlab CI cũng là một công cụ giúp bạn tự động hóa các công việc trong quá trình phát triển phần mềm. Bạn có thể sử dụng Gitlab CI để tự động triển khai phiên bản mới cho service của bạn trên Bizfly App Engine.

Bước 1: Tạo Secret trong repository của bạn trên Gitlab để lưu trữ Webhook URL theo các bước như sau:

Trong repository của bạn chọn Settings -> CI/CD -> Variables -> Add variable

image

Bước 2: Tạo Secret mới, đặt tên cho SecretWEBHOOK_URL và nhập giá trị là Webhook URL của service của bạn trên Bizfly App Engine, sau đó ấn Add variable.

image

Bước 3: Tạo file .gitlab-ci.yml trong repository của bạn với nội dung như sau:

stages:
  - deploy

deploy:
    stage: deploy
    image: alpine:latest
    script:
        - apk add curl
        - curl -X POST $WEBHOOK_URL
    only:
        - master

File .gitlab-ci.yml bên trên có mục đích thực hiện gửi request với phương thức POST đến Webhook URL của service của bạn trên Bizfly App Engine khi có sự kiện push lên branch master. Sau khi cấu hình thanh công, bạn có thể thực hiện push code lên branch master để kiểm tra kết quả.

Tại mục CI/CD của repository của bạn, bạn sẽ thấy có một job được thực hiện là deploy như hình.

image

Vào xem chi tiết từng job, bạn sẽ thấy job deploy đã được thực hiện thành công như hình.

image

Quay trở lại trang quản trị service của bạn trên Bizfly App Engine, bạn sẽ thấy đã có một phiên bản mới được triển khai.

image

Như vậy là bạn đã hoàn thành việc tích hợp Webhook Deploy vào quá trình CD của ứng dụng của bạn sử dụng Gitlab CI.

Nếu bạn cần thêm sự trợ giúp cho trường hợp của bản thân hoặc có thắc mắc gì về quá trình triển khai, bạn có thể liên hệ với chúng tôi tại đây: https://manage.bizflycloud.vn/ticket/