Hãy Từ Chối TypeScript
Cách này đang được team Deno sử dụng. Vậy team đó bad lắm hả ta?
Typescript chỉ là type-check thôi, dù nó có generic hay các feature khác thì nhìn bản chất cũng chỉ là type.
Cái chúng ta cần là code style chuẩn, Eslint + JSDocs + readme có thể làm điều đó. Câu này không đúng lắm
bác không viết hướng dẫn về gitlab với jenkins nên hơi khó khăn quá vì em chưa dùng 2 cái đó bao giờ, tự mò cũng mất 1 ngày, bạn nào muốn có thêm hướng dẫn cài gitlab với jenkins thì như ở dưới:
GitLab yêu cầu 4GB ram, Jenkins 3GB ram, bạn nên bật swap vì GitLab khá nặng
GitLab sẽ cài trên docker, Jenkins thì cài trực tiếp vì nó cần kết nối với k8s sử dụng kubectl và helm ( nếu muốn xài docker thì phải tự build image có thêm kubectl và helm )
Tạo 3 thư mục /srv/gitlab/logs/srv/gitlab/data/srv/gitlab/config xong chạy lệnh
export GITLAB_HOME=/srv/gitlab
Triển khai container gitlab
sudo docker run --detach \
--hostname gitlab.example.com \ #đổi thành hostname của bạn
--publish 443:443 --publish 80:80 --publish 22:22 \ #tốt nhất là bind port y hệt như thế này, vì thế gitlab nên cài trên 1 máy ảo riêng
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest #bạn nào muốn xài bản enterprise edition thì chuyển thành gitlab-ee, bản ce xài ít tài nguyên hơn
Xài watch -n 1 docker ps đợi đến khi nào container nó healthy là vào được
để lấy password root, lưu ý là kể từ lần đầu đăng nhập thì file này sẽ bị xoá sau 24h vì thế nên đổi mật khẩu, nếu như cần tạo lại container gitlab thì bạn cũng cần xoá luôn folder /srv/gitlab tạo lại vì nếu không thì sau 24h tạo container mới nó cũng không có file pass
Một số tweak mình đã test để giảm tài nguyên GitLab sử dụng:
Truy cập vào container bằng lệnh
docker exec -it gitlab bash
vào file /etc/gitlab/gitlab.rb để chỉnh sửa 1 số tham số sau ( sử dụng vi nhé )
puma['worker_processes'] = 0
sidekiq['max_concurrency'] = 10
prometheus_monitoring['enable'] = false
cái nào đánh # thì bỏ # đi là được
Tắt Prometheus Metrics: Chọn Search or go to., tìm Admin Area, chọn Settings > Metrics and profiling., chọn Expand Metrics - Prometheus., tắt Enable Prometheus Metrics., rồi Save . Ngoài ra còn 1 số tweak khác nữa nhưng khi mình sử dụng thì không tạo project được, sẽ bị lỗi 500, các bạn có thể tìm hiểu tại đây https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html
Kết nối tới Gitlab nên sử dụng ssh-agent nếu không nó khá lỗi, bật ssh-agent bằng
eval $(ssh-agent)
Thêm ForwardAgent yes vào file config của ssh tại ~/.ssh/config (không có thì tạo) như sau
Host gitlab.local.com #đổi bằng host gitlab của bạn
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_com_rsa #đây là private key nhé
ForwardAgent yes
Bạn cũng cần bật ForwardAgent trong /etc/ssh/sshd_config
AllowAgentForwarding Yes
Add public key của bạn vào ssh-agent bằng
ssh-add
xong bạn cũng add nội dung của public key đó lên Gitlab, bạn nên tạo 1 cặp ssh key mới sử dụng email và username của tài khoản gitlab ( lưu ý username của tài khoản root là Administrator, add tại Preferences -> SSH Key
Tạo 1 project blank trên Gitlab, không tích chọn tạo file readme, nó sẽ hiện các lệnh giúp bạn kết nối tới repo gitlab của mình, các tham số trên lệnh đã đúng nên không cần sửa gì, ngoại trừ cái cd thì các bạn cd vào folder mà mình sẽ up lên repo
Các bạn test thử xem push commit lên gitlab không là ok
Với Jenkins, nếu là bản mới nhất thì cần phải cài Java 17 trước
Vào file https://www.jenkins.io/doc/book/installing/linux/ và sửa biến môi trường JAVA_HOME sang đường dẫn ở trên, giờ thì có thể start jenkins rồi, nhớ cài đủ plugin như hướng dẫn của bác Việt
em chạy đến bước ./configure-vm.sh thì bị lỗi như này ạ "Nothing to do
: No such file or directory/etc/profile.d/bash_completion.sh
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
: No such file or directoryx/config
Failed to stop firewalld\x0d.service: Unit firewalld\x0d.service not loaded.
Failed to execute operation: No such file or directory
sysctl: setting key "net.ipv4.ip_forward": Invalid argument
net.ipv4.ip_forward = 1"
Hi bạn, cách này chỉ là 1 trick mình tham khảo được và viết lại bằng java để sử dụng cho đơn giản, chủ yếu để vọc vạch hoặc làm các dự án cá nhân thôi. Còn để áp dụng vào sản phẩm thật thì hơi khó vì cookie của google mình cũng không biết được bao lâu nó sẽ không hợp lệ nữa, có khi vài ngày, vài tuần, v.v...
bài này bác phải thêm mục "Liên kết private registry vào k8s" chứ
trò dùng file toml của containerd chỉ hoạt động với những phiên bản k8s không còn dùng docker thôi
hướng dẫn cho anh em:
Sau khi login vào private registry trên CICD, trong thư mục $HOME/.docker/ sẽ có 1 file docker.json với nội dung như thế này
{"auths":{"harbor.prod.longpq.com":{ #link private registry của bạn
"auth":"YWRtaW46MDk4cG9pQSM="}}}
Bạn sử dụng Cloud Function + Firestore đi mình gần 1 triệu người truy cập hàng tháng, 600k thành viên nhưng mỗi tháng chỉ mất có khoảng 600k với lương người truy cấp thấp gần như là miễn phí
bạn có thể lên medium để đọc các bài viết của chuyên gia nước ngoài, các bài viết về bug bounty hay chia sẻ về các kỹ thuật tấn công. Mình cũng hay lên đấy xem. Ở Việt Nam có anh @jang (testanull) cũng là một người mình theo dõi và đọc blog từ ảnh. Bạn có thể tham khảo
THẢO LUẬN
hay
bác không viết hướng dẫn về gitlab với jenkins nên hơi khó khăn quá vì em chưa dùng 2 cái đó bao giờ, tự mò cũng mất 1 ngày, bạn nào muốn có thêm hướng dẫn cài gitlab với jenkins thì như ở dưới:
/srv/gitlab/logs/srv/gitlab/data/srv/gitlab/configxong chạy lệnhwatch -n 1 docker psđợi đến khi nào container nó healthy là vào đượcđể lấy password root, lưu ý là kể từ lần đầu đăng nhập thì file này sẽ bị xoá sau 24h vì thế nên đổi mật khẩu, nếu như cần tạo lại container gitlab thì bạn cũng cần xoá luôn folder
/srv/gitlabtạo lại vì nếu không thì sau 24h tạo container mới nó cũng không có file passdocker exec -it gitlab bashvào file/etc/gitlab/gitlab.rbđể chỉnh sửa 1 số tham số sau ( sử dụngvinhé )cái nào đánh # thì bỏ # đi là được
Search or go to., tìmAdmin Area, chọnSettings > Metrics and profiling., chọnExpand Metrics - Prometheus., tắtEnable Prometheus Metrics., rồiSave. Ngoài ra còn 1 số tweak khác nữa nhưng khi mình sử dụng thì không tạo project được, sẽ bị lỗi 500, các bạn có thể tìm hiểu tại đây https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.htmlThêm
ForwardAgent yesvào file config của ssh tại~/.ssh/config(không có thì tạo) như sauBạn cũng cần bật ForwardAgent trong
/etc/ssh/sshd_configxong bạn cũng add nội dung của public key đó lên Gitlab, bạn nên tạo 1 cặp ssh key mới sử dụng email và username của tài khoản gitlab ( lưu ý username của tài khoản
rootlàAdministrator, add tại Preferences -> SSH Keycdthì các bạncdvào folder mà mình sẽ up lên reporồi phải tìm đường dẫn của nó, của mình là
/usr/lib/jvm/jdk-17-oracle-x64/, mặc định thì nó nằm trong/usr/lib/jvm/https://www.jenkins.io/doc/book/installing/linux/và sửa biến môi trườngJAVA_HOMEsang đường dẫn ở trên, giờ thì có thể start jenkins rồi, nhớ cài đủ plugin như hướng dẫn của bác Việtem chạy đến bước ./configure-vm.sh thì bị lỗi như này ạ "Nothing to do : No such file or directory/etc/profile.d/bash_completion.sh usage: setenforce [ Enforcing | Permissive | 1 | 0 ] : No such file or directoryx/config Failed to stop firewalld\x0d.service: Unit firewalld\x0d.service not loaded. Failed to execute operation: No such file or directory sysctl: setting key "net.ipv4.ip_forward": Invalid argument net.ipv4.ip_forward = 1"
Bài viết hay và chi tiết. Em cảm ơn tác giả nhiều
Anh cho e hỏi chút là giả dụ người khác muốn tải cái của mình về thì mình phải để project là public để cho người kia dùng bình thường phải không a?
có vẻ như bạn đang hiểu nhầm việc sử dụng unitOfWork thì phải, nó không phải sử dụng để giảm số lần gọi tới cơ sở dữ liệu
)
@conghdql4 Đúng rồi mình đang nói đến các private thôi. Cảm ơn bạn.
Hi bạn, cách này chỉ là 1 trick mình tham khảo được và viết lại bằng java để sử dụng cho đơn giản, chủ yếu để vọc vạch hoặc làm các dự án cá nhân thôi. Còn để áp dụng vào sản phẩm thật thì hơi khó vì cookie của google mình cũng không biết được bao lâu nó sẽ không hợp lệ nữa, có khi vài ngày, vài tuần, v.v...
bài này bác phải thêm mục "Liên kết private registry vào k8s" chứ trò dùng file toml của containerd chỉ hoạt động với những phiên bản k8s không còn dùng docker thôi hướng dẫn cho anh em:
lưu ý: tạo 1 secret key ở default namespace và tạo thêm ở các namespace khác mà deploy lên với cùng tên secret
cảm ơn thím
😍cám ơn e đã theo dõi 😍
mình rép bạn ở comment này rồi đó
:
https://viblo.asia/c/qPoL7apk4vk
Đỉnh quá thần đồng unittest ơi :vv
This post is very interesting . Thank author ! 💪
thank you, bro
hay quá thím ơi
Bạn sử dụng Cloud Function + Firestore đi mình gần 1 triệu người truy cập hàng tháng, 600k thành viên nhưng mỗi tháng chỉ mất có khoảng 600k với lương người truy cấp thấp gần như là miễn phí
bạn có thể lên medium để đọc các bài viết của chuyên gia nước ngoài, các bài viết về bug bounty hay chia sẻ về các kỹ thuật tấn công. Mình cũng hay lên đấy xem. Ở Việt Nam có anh @jang (testanull) cũng là một người mình theo dõi và đọc blog từ ảnh. Bạn có thể tham khảo
Bếch luôn làm PBI router