Deployment Aplikasi Laravel di Server Testing & Production dengan gitlab-ci – Pertama kita siapkan terlebih dahulu project laravel kosongan.
composer create-project --prefer-dist laravel/laravel laravel-gitlab-ci
Masuk ke directory laravel-gitlab-ci
cd laravel-gitlab-ci
Kemudian buat database dengan nama laravel-gitlab-ci anda dan sesuaikan koneksi database pada file .env anda
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel-gitlab-ci
DB_USERNAME=root
DB_PASSWORD=
Kemudian jalankan migration
php artisan migrate
Jika anda menggunakan mysql, di lokal ada kemungkinan error SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users
add unique users_email_unique
(email
))
Ubah sedikit di migration anda, pada file /database/migrations/2014_10_12_000000_create_users_table.php dari
$table->string('email')->unique();
menjadi
$table->string('email', 100)->unique();
Juga pada file 2014_10_12_100000_create_password_resets_table.php, menjadi
$table->string('email', 100)->index();
Setelah migation berhasil jalankan
php artisan serve
Maka akan berjalan applikasi laravel baru dengan database berjalan pada port 8000, anda bisa akses di lokal dengan mengunjungi http://127.0.0.1:8000.
Kemudian kita tambahkan Auth user, fitur bawaan dari laravel dengan langkah berikut.
composer require laravel/ui
php artisan ui vue --auth
npm install && npm run dev
Ketika kita Reload browser, maka akan muncul Menu Login & Register di atas.
Setelah itu, buat project di gitlab anda

Kemudian jalankan :
git init
git remote add origin https://gitlab.com/agung3wi/laravel-gitlab-ci.git
git add .
git commit -m "Initial commit"
git push -u origin master
Setelah itu ssh ke server, lalu siapkan private key dan public key di server.
ssh-keygen -t rsa -f pttas
cat pttas.pub >> ~/.ssh/authorized_keys
Setelah itu kalian jalankan setting Environment Variable di gitlab. Masuk ke Setting => CI/CD. tambahkan berikut:

ROOT_DIR merupakan document Root, dimana letak project laravel di server agar dapat diakses public.
SERVER_HOSTNAME adalah Host dari server
SSH_PRIVATE_KEY didapat dengan
cat pttas
USERNAME_SERVER adalah username yang digunakan untuk koneksi ssh ke server.
Setelah itu tambahkan file .gitlab-ci.yml di root project dan isikan berikut:
dependency:
image: composer
stage: build
script:
- composer install
artifacts:
paths:
- /builds/agung3wi/laravel-gitlab-ci
deploy-ke-server-testing:
stage: deploy
image: debian:latest
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y && apt-get install rsync -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && ssh-keyscan -H "$SERVER_HOSTNAME" > ~/.ssh/known_hosts'
script:
- ssh $USERNAME_SERVER@$SERVER_HOSTNAME 'cd $ROOT_DIR && php artisan down'
- rsync -avz /builds/agung3wi/laravel-gitlab-ci/ $USERNAME_SERVER@$SERVER_HOSTNAME:$ROOT_DIR/ --exclude=storage/*.key --exclude=.env --delete
- ssh $USERNAME_SERVER@$SERVER_HOSTNAME 'cd $ROOT_DIR && php artisan up'
Lalu commit and push codingan anda. Selanjutnya jika anda melakukan perubahan dan membuat script migration, kemudian push ke repository akan automatis deploy