+1

[Circle CI] Automatic web application deployment on Heroku

Bài viết lần trước có hướng dẫn qua cách build projects với CircleCI. Tuy nhiên CircleCI còn một ưu điểm nữa là tự động hóa việc deploy ứng dụng sau khi build và chạy tests xong. Phần này chúng ta cùng xem cấu hình để nó tự động deploying nhé. Cũng đơn giản thôi 😄

Let's practice!!!!!

1. Deploy ứng dụng lên Heroku

Tất nhiên, để deploy được 1 cách tự động thì bạn phải deploy thủ công đã phải không nào. Về cơ bản, bạn chỉ cần remote vào heroku remote và push lên nhánh master

$ heroku git:remote -a first-cd
$ git push heroku master

Chi tiết tham khảo tại bài viết

2. Cấu hình CI cho ứng dụng

Bài trước mình đã hướng dẫn cách cấu hình trên CircleCI 2.0. Phần này mình không nhắc lại nữa mà tập trung cấu hình phần auto deploy trên Heroku

2.1. Thêm biến môi trường

Đầu tiên bạn cần thêm các biến từ ứng dụng Heroku như những biến môi trường. Chúng ta cần thêm 2 biến HEROKU_APP_NAMEHEROKU_API_KEY để có thể tự động deploy Refs: https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project

  • Bước 1: Vào ứng dụng Circle, chọn project (Nhấn JOBS) bạn muốn auto deploy. Nhấn vào icon Setting bên phải của project

  • Bước 2: Trong phần Build Setting, click Environment Variables

  • Bước 3: Import biến từ project khác bằng cách nhấn vào button Import Variable(s) hoặc thêm các biến mới bằng cách nhấn vào button** Add Variable** (Lưu ý rằng Import Variables(s) không khả dụng trên CircleCI được cài đặt private)

  • Bước 4: Sử dụng các biến này trong file .circleci/config.yml thôi.

2.2. Chỉnh sửa config

File .circleci/config.yml:

version: 2
jobs:
  build:
    ...
  deploy:
    docker:
      - image: buildpack-deps:trusty
    steps:
      - checkout
      - run:
          name: Deploy Master to Heroku
          command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

workflows:
  version: 2
  build-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

Mình chỉ thử nghiệm tự động deploy, không tiến hành build và tests nên nó sẽ đơn giản như sau:

version: 2
jobs:
  build:
    docker:
      - image: circleci/php:7.1-apache
    steps:
      - checkout
      - run:
          name: Deploy Master to Heroku
          command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

Ngon rồi, vậy là từ giờ mỗi lần bạn commit code lên nhánh master, project sẽ tự động được build, check các thứ bạn đã cấu hình (trong build jobs) và tự động deploy lên Heroku qua lệnh

git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master

Đây là kết quả chi tiết Deploy

Đơn giản vậy thôi. Tuy nhiên đây mới chỉ là mức đơn giản nhất (hello world) cho việc tự động deploy ứng dụng, các phần khác bạn có thể tìm hiểu thêm trên trang chủ CircleCI để cấu hình

Tài liệu tham khảo


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.