Self-hosted runner trong Github Action, tạo workflow tự động build và deploy image lên Dockerhub

Cũng giống với Jenkins, Github Action(mình viết tắt là GA nhá) là một công cụ CI/CD rất là tuyệt vời của Github, đặc biệt là nó miễn phí tuy có những hạn chế nhưng nó gần như là quá đủ với đa số. Vậy nếu bạn có 1 con server bất kì mà muốn thì nghịch thì có thể thay nó cho runner mặc định của GA.

1. CHUẨN BỊ

  • Tài khoản github
  • 1 con server (window, macOs,linux) (nếu bạn chạy sefl-hosted thì hãy cài sẵn docker lên con server luôn nhé, bạn dùng mặc định của GA thì khỏi cần gì cả!)
  • 1 repo mẫu (mình dùng project .net làm ví dụ)

2. TẠO RUNNER

  • Tạo và liên kết server của bạn với GA (các bạn có thể bỏ qua bước tạo Runner này nếu chỉ dụng mặc định)
  • Đầu tiên hãy vào repo trên github của bạn chọn qua Settings -> Actions -> Runners -> New self-hosted runner (hình 1)

  • Chọn Runner image và Architecture của image (hình 2). Hãy giữ nguyên màn hình đó mà mở server của bạn lên ở đây mình có tạo 1 con EC2 chạy ubuntu 22.04. (mình đã cài sẵn docker)

  • Copy từng lệnh từ trên xuống paste vào server của bạn (hình 3)

  • Mình sẽ không run trực tiếp ./run.sh mà sẽ start nó dưới dạng service trong server (hình 4)

  • Quay lại github bạn sẽ thấy runner mà mình đã tạo thành công (hình 5)

3. TẠO WORKFLOW VỚI 1 JOB "BUILD"

  • Mở source code của bạn lên và tạo folder .github/workflows và tạo 1 file deploy.yml để soạn script sau đó commit code ròi push lên github (hình 6)

  • Mở tab Action lên vào xem commit của bạn mới push lên đã được trigger và run hay chưa nếu tích xanh là đã ngon cơm (hình 7)

4. CUSTOME WORKFLOW JOB "DEPLOY"

  • Quay lại file deploy.yml thêm 1 job tên là deploy. Ở job này mình sẽ thực hiện build và push image lên DockerHub 1 cách tự động (hình 8)

Giải thích:

- username: ${{ secrets.DOCKER_USERNAME }} // tài khoản Dockerhub 
- password: ${{ secrets.DOCKER_PASSWORD }} // mật khẩu

Đây là 2 secrets được lưu trong github nếu chưa có hãy tạo mới 2 secret DOCKER_USERNAME, DOCKER_PASSWORD (hình 9, 10)



  • Commit code ròi push lên để GA thực hiện các jobs trong workflow (hình 11). Xanh như hình là workflow của bạn đã thực hiện ngon lành

  • Giờ hãy qua Dockerhub xem image đã được push lên hay chưa (hình 12). vậy là image cũng đã được push lên Dockerhub ngon cơm. QUÁ ĐÃ !!

=> Mình đã giới thiệu cho các bạn về Github Action, theo mình thì cái GA này rất là tiện, dễ học và có thể run được ngay không cần config gì nhiều. Tiện lợi hơn so với jenkins nếu bạn sử dụng Github để quản lý source code.

Cảm ơn các bạn đọc, Hy vọng với những chia sẻ của mình sẽ giúp các bạn đọc trong quá trình học tập. Nếu có thắc mắc gì về nội dung bài viết, đừng ngần ngại comment bên dưới để mình trao đổi thêm nhé.

Chúc các bạn thành công!

Đăng nhận xét

Mới hơn Cũ hơn

Biểu mẫu liên hệ