Halo, kalau kamu merasa tulisan saya ngebantu kamu, kamu bisa ucapkan terima kasih lewat saweria

If you feel this website help you, you can donate at saweria



Tutorial ini saya buat sehabis baca docs gitlab - laravel with gitlab & envoy.

Saya coba terapkan di aplikasi berbasis Code Igniter atau PHP Native, hasilnya sama. Berikut caranya:

  1. Di kasus kali ini, root aplikasi nya ada di /var/www/aplikasi. Clone aplikasi di folder tersebut

  2. Buat variabel di Gitlab CI/CD

    a. release_date, tanggal dan jam rilis aplikasi. Isikan dengan $(date '+%Y%m%d%H%M')

    b. releases_dir, isi dengan /var/www/aplikasi/releases

    c. repository, value git@gitlab.com:/namagrup/namaaplikasi.git

    d. server_private_key, value nya dengan id_rsa (RSA private key). Biasanya letaknya ada di ~/.ssh/id_rsa

    e. web_dir, value nya /var/www/aplikasi

    f. new_release_dir, direktori yang bakal menyimpan aplikasi versi terbaru, isikan dengan $releases_dir/$release_date

Membuat Variabel di Gitlab CI/CD

Membuat Variabel di Gitlab CI/CD

  1. Buat file baru dengan nama .gitlab-ci.yml, isinya
image: alpine:latest

before_script:
        - apk update
        - apk add git zip unzip
        - 'which ssh-agent || ( apk add openssh-client )'
        - mkdir -p ~/.ssh
        - eval $(ssh-agent -s)
        - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

stages:
        - deploy_production

deploy_production:
        stage: deploy_production
        script:
                - echo "$server_private_key" | tr -d '\r' | ssh-add - > /dev/null
                - ssh userprivatekey@ipserver
                   "echo 'Cloning new repo' &&
                   [ -d $releases_dir ] || mkdir $releases_dir &&
                   git clone --depth 1 $repository $new_release_dir &&
                   echo 'Cloning new repo was done' &&

                   echo 'link to uploads directory' &&
                   rm -rf $new_release_dir/uploads &&
                   ln -nfs $web_dir/uploads $new_release_dir/uploads &&
                   echo 'Link to uploads directory was done' &&

                   echo 'Link to current release' &&
                   ln -nfs $new_release_dir $web_dir/current &&
                   echo 'Link to current release was done'"

                - echo "deploy to production success, check at https://yourcoolwebsite;

        ##run manually just to make sure you dont mess up whole thing
        when: manual
  1. Commit & push ke repositori

  2. Masuk ke menu CI/CD-Pipelines, tekan tombol “play”

Membuat Variabel di Gitlab CI/CD

Membuat Variabel di Gitlab CI/CD

Pipeline Sukses! Silahkan Cek Hasilnya di Server

Pipeline Sukses! Silahkan Cek Hasilnya di Server

Referensi : Docs gitlab - laravel with gitlab & envoy