Gitlab-ci cho Rasa
Mình sẽ nói chủ yếu về Gitlab-CI/CD
.Trước tiên bạn cần phải biết cách sử dụng tạo Docker Image cho Rasa, bạn có thể đọc tại Deploy-with-docker
Gitlab Runner
GitLab Runner là một ứng dụng hoạt động với GitLab CI/CD để chạy các jobs
trong một pipeline
. Bạn có thể đọc tại document của Gitlab.
Trong ví dụ bên dưới mình sẽ dùng Runner executor
là Docker để chạy Docker-in-Docker(dind)
Configuration
Quá trình cài đặt file .gitlab-ci.yml
rất đơn giản. Nhưng ta có thể thêm những cài đặt cho quá trình thực hiện như ý muốn
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "master"
default:
tags:
- rasa
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip
-
workflow
dùng để định nghĩa khi nào ta sẽ chạy CI/CD, trong ví dụ trên ta chỉ bảo Runner chạy khi nó làpush
vàgit branch
là master -
tags
để định nghĩa Runner nào sẽ chạy file này -
Và 2 dòng cuối cùng giúp tăng tốc độ chạy
pipeline
vào những lần sau bằng cách lưu thông tin đã chạy vàocache
Stages
Về cơ bản mình sẽ có 2 bước để deploy Rasa lên server.
stages: # List of stages for jobs, and their order of execution
- build-docker
- deploy
bước build-docker
ta sẽ tạo image cho docker và bước deploy
dùng để sẽ chạy container lên server.
Build docker
Bước đầu để build docker rất đơn giản, phần lớn khó khăn đã nằm trong chính file docker đó.
build_rasa-server:
stage: build-docker
image: docker:20.10.17
before_script:
- cd ./'RASA test bot'
- docker info
script:
- docker build -f rasa-server.Dockerfile -t rasa-ailab .
build_action-server:
stage: build-docker
image: docker:20.10.17
before_script:
- cd ./'RASA test bot'
- docker info
script:
- docker build -f action-server.Dockerfile -t rasa_action-server .
-
Ta cần lưu ý nơi ta để file
.Dockerfile
so với nơi để filegitlab-ci.yml
. -
Sử dụng
image: docker:20.10.17
ta mới có thể sử dụng lệnhdocker build
❗Lưu ý: Ta nên đặt tag cho image thông qua flag -t
để dễ dạng định dạng cho bước xóa image cũ khi ta tạo image mới
Deployment
Ngoài deploy rasa server
và action server
ta cũng phải deploy thêm duckling
nếu cần thiết
deploy_rasa-server:
stage: deploy
needs: ["build_rasa-server"]
image: docker:20.10.17
before_script:
- docker ps -aq -f "name= rasa-server"| xargs docker stop | xargs docker rm || true
script:
- docker run -d --name rasa-server -p 8050:5005 rasa-ailab run --enable-api --port 5005 --cors "*"
deploy_action-server:
stage: deploy
needs: ["build_action-server"]
image: docker:20.10.17
before_script:
- docker ps -aq -f "name = rasa_action-server"| xargs docker stop | xargs docker rm || true
script:
- docker run -d --name rasa_action-server -p 8055:5055 rasa_action-server
deploy_rasa_duckling:
stage: deploy
image: docker:20.10.17
before_script:
- docker ps -aq -f "name = duckling"| xargs docker stop | xargs docker rm || true
script:
- docker run -d --name duckling -p 8020:8000 rasa/duckling
Ở đây ta cần lưu ý các flag trong before_script
và script
-
Điều đang xảy ra trong
before_script
là ta sẽ lấy những container nào cóname= rasa-server
, trùng với tên khi đặt trongdocker run
, ngưng container đó lại và xóa nó đi, lệnh|| true
để lệnh đó luôn chạy dù có lỗi. -
Sau đó ta sẽ chạy container mới có cùng tên với những flag cần thiết.
❓ Muốn biết thêm chi tiết hay có câu hỏi nào?
Hãy lên website của RASA hoặc RASA Community Forum