-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: setup sun ci #1
base: main
Are you sure you want to change the base?
Conversation
55efaff
to
0aee2bc
Compare
0aee2bc
to
d925383
Compare
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
.sun-ci.yml
Outdated
COMPOSER_ALLOW_SUPERUSER: "1" | ||
script: | ||
- php artisan migrate | ||
- XDEBUG_MODE=coverage php -dzend_extension=xdebug.so ./vendor/bin/pest --coverage-clover ./coverage.xml --ci |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Để tăng tốc thì chỗ này nên dùng Parallel Testing, tức là chạy các test cases song song
https://pestphp.com/docs/optimizing-tests#content-parallel-testing
https://laravel.com/docs/11.x/testing#running-tests-in-parallel
E thử apply xem được ko?
@@ -0,0 +1,12 @@ | |||
APP_NAME="App in testing" | |||
APP_ENV=local |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
để value ở đây là testing
được ko nhỉ?
- composer install | ||
- php artisan key:generate | ||
- php artisan migrate | ||
- php artisan route:cache |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
chơi hẳn lệnh optimize đi cho máu :v
- php artisan route:cache | |
- php artisan optimize |
paths: | ||
- vendor | ||
script: | ||
- cp .env.testing.example .env |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.sun-ci.yml
Outdated
- name: Build Laravel | ||
stage: build | ||
image: ghcr.io/avengerscodelovers/php:8.2-ci | ||
services: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
services: | |
services: &commonServices |
Thử xem có tận dụng lại được block giống nhau bên trong file yml xem seo
https://gist.github.com/vitaLee/7803420
.sun-ci.yml
Outdated
- image: mysql:8.0 | ||
name: mysql | ||
environment: | ||
MYSQL_DATABASE: app_db | ||
MYSQL_USER: app_user | ||
MYSQL_PASSWORD: secret | ||
MYSQL_ROOT_PASSWORD: root |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- image: mysql:8.0 | |
name: mysql | |
environment: | |
MYSQL_DATABASE: app_db | |
MYSQL_USER: app_user | |
MYSQL_PASSWORD: secret | |
MYSQL_ROOT_PASSWORD: root | |
<<: *commonServices |
Thử xem có tận dụng lại được block giống nhau bên trong file yml xem seo
https://gist.github.com/vitaLee/7803420
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cái này hay đấy https://joshdevlin.com/blog/yaml-repeating-sections/
41620fc
to
432102a
Compare
432102a
to
7f02816
Compare
Luồng hoạt động
build
chạy xong thì stagecheck
mới được chạystage
thì được chạy song song => tách nhỏ các job ko liên quan đến nhau để tăng tốcChi tiết
Chỉ định:
workspace: shared
để share files/folder cho tất cả cácjobs
. Điều này có nghĩa là tất cả cácjobs
sẽ chia sẻ cùng một thư mục làm việc. Ở đây, khi job build chạy, nó sẽ chạy các bước cần thiết như tạo file.env
, cài đặtcomposer
dependencies,... do dùng chung thư mục làm việc nên các jobs ở stagecheck
chạy sau sẽ không cần chạy lại các bước trên.1. Job Build Laravel
build
nên được chạy đầu tiên của quá trình CImysql:8.0
, phục vụ cho việc chạy test với database.APP_ENV
,COMPOSER_MEMORY_LIMIT
, vàCOMPOSER_ALLOW_SUPERUSER
.APP_ENV
được đặt làtesting
để chỉ định rằng ứng dụng đang chạy trong môi trường testing.COMPOSER_MEMORY_LIMIT
được đặt là2G
để giới hạn bộ nhớ mà Composer có thể sử dụng.COMPOSER_ALLOW_SUPERUSER
được đặt là1
để cho phép Composer chạy với quyềnsuperuser
do chạy composer bên trong docker containercache
cho thư mụcvendor
với key làcomposer_vendor_$CI_BRANCH
. Thư mụcvendor
chứa các thư viện PHP mà ứng dụng Laravel cần để chạy. Việc sử dụngcache
giúp tăng tốc độ build bằng cách tái sử dụng các thư viện đã được tải về từ lần build trước..env.testing.example
thành file.env
.composer install
để cài đặt cácdependencies
.php artisan key:generate
để tạokey
cho ứng dụng. Cần generate key để support chạy test.php artisan migrate
để thực hiện cácmigration
cho cơ sở dữ liệu.php artisan route:cache
đểcache
cácroute
của ứng dụng. Việc này giúp tăng tốc độ xử lý request của ứng dụng, cũng như đảm bảo việc cache route hoạt động mà không xảy ra lỗi gì (ví dụ nếu có 2 route trùng route name thì sẽ có lỗi khi chạyroute:cache
).Sau khi công việc
Build Laravel
hoàn thành, quy trình CI sẽ tiếp tục với các công việc khác trong stagecheck
Tiếp theo các job thuộc stage
check
sẽ chạy song song:Check GKC Hashcode
,Static Code Analysis
,PHP Coding Convention
,PHP Test Coverage and Codecov
2. Job Static Code Analysis
timeout
cho quá trình Composer là 600 giây, vì lệnh này thường chạy lâu.3. PHP Coding Convention
4. Job PHP Test Coverage and Codecov
check
.test
vàtạo coverage
, tạo coverage lên Sun*CodeCov (Athena)5. Job check GKC Hashcode
workspace: false
: Job check GKC này không sử dụngworkspace
chung đã được định nghĩa ởdefault
dojob
chỉ thực hiện một tác vụ độc lập là kiểm traGKC hashcode
và không cần đến bất kỳ dữ liệu nào từ các job khác.gkc_util_hashcode_script.sh
cài đặt tại https://github.com/framgia/gkc_utils/pull/19.