Tentang BlabakHubungi Blabak Login
Kategori
ActionAnother actionSomething else hereSeparated link
Submit
Oleh Yusuf - 19 Juni 2020
Hook dapat berjalan menggunakan Laravel, pastikan laravel sudah terinstall d server Anda dan dapat diakses menggunakan URL server hook Anda. contoh hook.blabak.com
. Setelah itu, untuk menambahkan Hook di Laravel project Anda, gunakan command berikut:
composer require bryanjack/git
Install database git hook dengan menggunakan command berikut:
php artisan migrate
Setelah Anda menjalankan command diatas, di database akan ada table baru bernama repos
. Table tersebut memiliki kolom:
Secret token digunakan sebagai unique key bahwa request ke Hook datang dari sumber yang valid. Buat secret toket sesuai keinginan Anda dengan menambahkan line berikut di file .env
pada Laravel:
secret_token='super_awesome'
Server Hook juga dapat mengirimkan notifikasi ke telegram dengan menambahkan config berikut di file .env
:
bot_api_key='123123123:AABBCCPFkc6w3RNpYH0wiYkGJPFkc6w3RNp'
bot_username='HOOKBOT'
chat_id='-123123123'
Agar server Hook dapat melakukan pull d server lain, diperlukan credential oleh server hook untuk mengakses server tersebut.
Buat ssh key yang akan digunakan oleh server Hook dengan menggunakan command berikut:
ssh-keygen -t rsa -b 4096 -C "bryan_awesome_satrion"
copy ssh key yg telah dibuat ke directory apache
sudo cp -R ~/.ssh /usr/share/httpd/.ssh
sudo chown -R apache.apache /usr/share/httpd/.ssh
Menggunakan user apmin
, buat file initial_server.sh dengan isi sebagai berikut:
Ganti hook.satrion.com
menjadi nama domain hook Anda.
ssh-copy-id $1@$2
cat ~/.ssh/id_rsa.pub | ssh $1@$2 "cat >> ~/.ssh/id_rsa.pub"
cat ~/.ssh/id_rsa | ssh $1@$2 "cat >> ~/.ssh/id_rsa"
ssh $1@$2 "chmod -R 700 ~/.ssh && ssh-keyscan hook.satrion.com >> ~/.ssh/known_hosts"
Untuk pertama kali akses ke server target, jalankan command berikut dengan mengganti 10.100.10.10
dengan IP target Anda.
sudo -u apache ./initial_server.sh apmin 10.100.10.10
Agar setiap project yang dipush atau merge dapat diupdate ke server, diperlukan triger dari GitLab/GitHub ke server Hook yang disebut sebagai Webhooks.
Untuk menambahkan Webhooks, buka project Anda di GitLab, lalu pilih setting -> Webhooks. Isikan URL menggunakan domain server Hook Anda ditambah URL suffix berikut:
https://hook.satrion.com/git/hook.php
Dan juga isikan secret token yang telah kita buat sebelumnya di kolom secret token pada GitLab.
Tambahkan project test
beserta ip, user, dan path untuk colom master di database Anda.
Anda dapat mencoba apakah instalasi hook Anda sudah sukses atau belum, dengan menggunakan Postman
untuk mengirimkan contoh request berikut:
Header:
X-Gitlab-Token: super_awesome
Body:
{
"object_kind": "push",
"event_name": "push",
"before": "95790bf891e76fee5e1747ab589903a6a1f80f22",
"after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"ref": "refs/heads/master",
"checkout_sha": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"message": "Hello World",
"user_id": 4,
"user_name": "John Smith",
"user_email": "john@example.com",
"user_avatar": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",
"project_id": 15,
"project": {
"id": 15,
"name": "test",
"description": "",
"web_url": "https://test.example.com/gitlab/gitlab",
"avatar_url": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80",
"git_ssh_url": "git@test.example.com:gitlab/gitlab.git",
"git_http_url": "https://test.example.com/gitlab/gitlab.git",
"namespace": "gitlab",
"visibility_level": 0,
"path_with_namespace": "gitlab/gitlab",
"default_branch": "master"
},
"commits": [
{
"id": "c5feabde2d8cd023215af4d2ceeb7a64839fc428",
"message": "Add simple search to projects in public area\n\ncommit message body",
"title": "Add simple search to projects in public area",
"timestamp": "2013-05-13T18:18:08+00:00",
"url": "https://test.example.com/gitlab/gitlab/-/commit/c5feabde2d8cd023215af4d2ceeb7a64839fc428",
"author": {
"name": "Test User",
"email": "test@example.com"
}
}
],
"total_commits_count": 1,
"push_options": {
"ci": {
"skip": true
}
}
}
Slow
Aplikasi