Otomatis Pull Git menggunakan Hook
Tentang BlabakHubungi Blabak Login
Daftar isi4 bagian
Kategori
ActionAnother actionSomething else hereSeparated link
Submit
Yusuf
133
Otomatis Pull Git menggunakan Hook
Oleh Yusuf - 19 Juni 2020
Install Web Hook
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/gitInstall database git hook dengan menggunakan command berikut:
php artisan migrateSetelah Anda menjalankan command diatas, di database akan ada table baru bernama repos. Table tersebut memiliki kolom:
id : nomor id secara urut
project : nama project di GitHub/GitLab
master_ip : IP Address untuk production
master_user : Username untuk melakukan update project di server
master_path : Path lokasi project disimpan e.g: /home/apmin/public_html/test Selain master, ada juga kolom untuk UAT, Dev, dan DRC.
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'Setting Server Hook
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/.sshMenggunakan 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.10Setting GitLab / GitHub Webhook
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.phpDan juga isikan secret token yang telah kita buat sebelumnya di kolom secret token pada GitLab.
Testing
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_awesomeBody:
{
"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
Kategori
Freelance
Entrepreneurship
Design
Sales & Marketing
Story
Tentang
Tentang Blabak
Bagaimana Cara Kerja
Berita
Keamanan
Kutipan
Peta Situs
Ketentuan
Disclaimaer Policy
Privasi Policy
Terms of Service