Giới thiệu
Xin chào các bạn! Mình đã trở lại sau một thời gian dài và rất mong muốn chia sẻ với mọi người một chủ đề thú vị. Chắc hẳn nhiều bạn đã nghe đến Github Actions nhưng chưa biết cách ứng dụng nó một cách hiệu quả. Bài viết này sẽ giúp bạn hiểu rõ hơn về việc tự động hóa việc cập nhật badge (huy hiệu) trên trang Github cá nhân của mình thông qua việc sử dụng Github Actions.
Tại sao cần cập nhật badge tự động?
Mình có một bộ sưu tập các badge từ Credly và Credential.net, và mong muốn này đã dẫn mình đến việc tìm kiếm giải pháp tự động để cập nhật chúng trên trang Github cá nhân. Badge không chỉ thể hiện thành tựu cá nhân mà còn là cách để gây ấn tượng với tuyển dụng viên hoặc cộng đồng trong lĩnh vực công nghệ.
Tình huống hiện tại
Mình hiện có 34 cái badge, bao gồm badge từ Credly và Credential.net, nhưng việc cập nhật thủ công rất tốn thời gian. Do đó, mình quyết định sử dụng Github Actions để thực hiện việc này tự động và hiệu quả hơn.
Tổng quan về CI/CD
CI/CD (Continuous Integration / Continuous Deployment) là quy trình giúp tự động hóa việc kiểm tra, xây dựng và triển khai ứng dụng. Quá trình này bao gồm:
- Commit code: Khi bạn đưa mã nguồn lên Github, nó sẽ kích hoạt quá trình CI.
- Test: Mã nguồn sẽ được kiểm tra để đảm bảo chất lượng.
- Deploy: Nếu không có vấn đề gì xảy ra, mã nguồn sẽ được triển khai lên môi trường sản phẩm.
Github Actions là gì?
Github Actions cho phép bạn thiết lập các workflows (luồng công việc) để tự động hóa các tác vụ, chẳng hạn như build, test, và deploy. Để tạo một workflow mới, bạn chỉ cần tạo một thư mục .github/workflows/
và thêm một tệp .yml
.
Ví dụ về Workflow
Dưới đây là một ví dụ đơn giản về một workflow cơ bản:
yaml
name: hello-world
on: push
jobs:
my-job:
runs-on: ubuntu-latest
steps:
- name: my-step
run: echo "Hello World!"
Trong đó:
name
: Tên của workflow.on
: Loại sự kiện kích hoạt workflow (ví dụ:push
,pull_request
, ...).jobs
: Danh sách các công việc sẽ thực hiện trong workflow.
Hướng dẫn thực hành
Bước 1: Khởi tạo trang Github cá nhân
Để bắt đầu, bạn cần tạo một repository trên Github với tên là username của mình, ví dụ: https://github.com/BlazingRockStorm/BlazingRockStorm
. Sau đó, hãy chỉnh sửa tệp README.md để tạo một hồ sơ cá nhân.
Bước 2: Chọn Github Action
Mình đã chọn action pemtajo/badge-readme
, giúp tự động lấy badge từ Credly theo thứ tự thời gian.
Bước 3: Viết workflow cho Github Action
Dưới đây là workflow mình viết để tự động cập nhật badge:
yaml
name: Update badges
on:
schedule:
- cron: "0 2 * * *"
jobs:
update-readme:
name: Update Readme with badges
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Badges - Readme
uses: pemtajo/badge-readme@main
with:
CREDLY_USER: duc-quan-hoang
CREDLY_SORT: RECENT
BADGE_SIZE: 110
Trong đó, mình đã thiết lập để trigger theo lịch trình với cron job. Hãy thêm đoạn mã sau vào tệp README.md, giữa hai comment magic:
html
<!--START_SECTION:badges-->
<!--END_SECTION:badges-->
Đây là nơi mà các badge sẽ được tự động cập nhật.
Bước 4: Thêm badge từ Credential.net
Mình cũng đã thêm hai badge từ Credential.net ngay dưới các badge từ Credly. Dưới đây là cách mình thêm chúng:
html
[](http://www.credly.com/badges/8ae1b9c5-8d6a-40d6-8aff-c25b3b52c951 "AWS Industry Quest: Healthcare")
[](http://www.credly.com/badges/b55ffd5f-b377-4724-aca7-d94bd8f267e5 "AWS Industry Quest: Financial Services")
Và cũng thêm badge Ruby mà mình đã download sẵn:
html
[<img src="https://badges.images.credential.net/1495071229333.png" width="110">](https://www.credential.net/d6b90bcc-0a14-4039-94ba-5443ea9dd343 "Ruby Certified Ruby Examination Silver")
[<img src="https://templates.images.credential.net/16599277022875216138354534652590.png" width="110">](https://www.credential.net/3c8a0b29-cc9d-4249-a148-ddf1800e53d9 "Ruby Certified Ruby Examination Gold Ver 3")
Kết quả
Sau khi thực hiện đầy đủ các bước, bạn có thể xem trang Github cá nhân của mình tại đây. Hy vọng bài viết này sẽ mang lại giá trị cho bạn trong việc quản lý badge trên trang cá nhân một cách tự động và hiệu quả hơn. Cảm ơn các bạn đã theo dõi! Mình sẽ cố gắng cải thiện hơn trong các bài viết sau.
source: viblo