Release app Elixir với Travis CI and Github Release
CI
3
elixir
35
continuous intergration
4
White

Cẩm Huỳnh viết ngày 28/06/2017

Đây là một trong những bài thuộc series Ship your Elixir app with confidence của mình.

Các bài trong series:

  1. Deploy app Elixir với Distillery và Dicon.
  2. Release app Elixir với Travis CI và Github Release.

Mở bài

bài Deploy app Elixir với Distillery và Dicon, mình đã hướng dẫn cách compile và deploy một Elixir app với Dicon và Distillery.

Ở bài này mình sẽ hướng dẫn các bạn cách tạo release cho một Elixir app với Github Release và Travis CI.

Release là gì? Tại sao cần tạo release?

Release có bộ dạng giống vậy.

Github Release example

Chắc hẳn bạn sẽ đặt câu hỏi tạo release làm gì trong khi ta có thể deploy trơn tru với bài trước.

  1. Chuẩn hóa bản release. Giúp bạn tránh được chuyện nhập nhằng như chị A compile trên OTP 18 và deploy trên OTP 20 hay anh B compile trên MacOS mà deploy lên Ubuntu.
  2. Dễ dàng rollback. Giả sử như ở hình trên, ta deploy version v0.4.0 và phát hiện lỗi gì đó, lập tức bạn có thể download lại bản v0.3.1 và deploy lại.
  3. Portability (tạm dịch: quăng qua quăng lại được). Giả sử đồng nghiệp làm mobile hay tester muốn setup môi trường ảo để chạy thử API, ta có thể đưa link release cho họ một cách chuyên nghiệp thay vì bảo họ tự biên dịch lại từ source code. (Không liên quan lắm cơ mà mình có một bài quăng :shit: vào Vagrant viết thời trẻ trâu)

Release như thế nào?

Như các bạn đã biết ở bài trước, Distillery sẽ compile toàn bộ app trong ứng dụng cho bạn thành bytecode và kèm theo tất cả artifacts (vd erts, vv) cần thiết để chạy trong tarball. Bài viết sẽ hướng dẫn cách release tarball lên Github Release với Travis CI.

Generate access token

Trước tiên bạn cần một Github access token để Travis tương tác với Github release.

Vào Github > Settings > Personal access token > Generate new token.

Generate Github access token

Sau khi có access token, vào Travis CI > Settings và cấu hình biến môi trường cho Travis, tên là REL_TOKEN chẳng hạn.

Cấu hình .travis.yml

Giả sử app của chúng ta có tên là wat. Travis CI cung cấp provider releases để tương tác với Github Release.

dist: trusty
sudo: false

language: elixir

elixir:
  - 1.4.4

otp_release:
  - 19.3

script: mix test --no-start

before_deploy:
  - MIX_ENV=prod mix do compile, release
  - export REL_VSN=$(echo $TRAVIS_TAG | cut -c 2-)

deploy:
  on:
    tags: true
  skip_cleanup: true
  api_key: $REL_TOKEN
  provider: releases
  file: _build/prod/rel/wat/releases/$REL_VSN/wat.tar.gz

Các bạn có thể tham khảo thêm về các cấu hình khác của releases ở đây.

Tạo release

Sau khi cấu hình xong .travis.yml thì vạn sự đã xong chỉ chờ gió đông, ta có thể bắt đầu tạo release.

git tag -a v0.1.0 # tạo tag
git push --tags # push các tag

Theo đúng quy trình thì Travis sẽ compile và tạo release cho các bạn.

Kết bài

Kết bài? Không có cái kết bài nào cả.

Một lời hứa có thể không thành hiện thực là ở bài tiếp theo mình sẽ hướng dẫn cách cấu hình Travis với Dicon.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Cẩm Huỳnh

45 bài viết.
429 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
51 5
image cover]imgcover] “Make it work, make it right, make it fast.” Bạn vừa viết xong một ứng dụng web :tada:. Mọi thứ chạy ổn. Code cũng đã được...
Cẩm Huỳnh viết 24 ngày trước
51 5
White
43 9
(Ảnh) Vì sao lại là Bật Đèn? Ai từng đọc qua Tắt Đèn hẳn đã biết tác phẩm được kết thúc bằng tình huống: Buông tay, chị vội choàng dậy, mở cửa...
Cẩm Huỳnh viết hơn 1 năm trước
43 9
White
41 25
Vừa rồi mình vừa tiết kiệm được $5 mỗi tháng sau khi migrate cái (Link) từ Digital Ocean sang Heroku Free Dyno. (Ảnh) Kết quả thật mĩ mãn vì hầu ...
Cẩm Huỳnh viết hơn 1 năm trước
41 25
Bài viết liên quan
White
13 2
Xin chào các bạn. Chắc hẳn mỗi chúng ta đều đã từng phát triển app sử dụng API của bên thứ 3, và chắc mọi người đều biết là hầu hết các API service...
Hải Nguyễn viết gần 2 năm trước
13 2
White
8 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết 3 năm trước
8 6
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
45 bài viết.
429 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!