Installasi Jenkins dengan Docker

Cara Installasi Jenkins menggunakan Docker – Pertama-tama yang kalian butuhkan adalah install docker di PC. Untuk Installasi Docker bisa dibuka di dokumentasinya https://docs.docker.com/get-docker/. Setelah itu jalankan

docker --version

Jika berhasil, maka akan tampil keluaran version docker yang kalian install.

Installasi Jenkins

Kalian bisa buka lengkap panduanya di https://www.jenkins.io/doc/book/installing/. Langkah langkah yang kalian butuhkan adalah:

Create network jenkins

docker network create jenkins

Kemudian Create volume untuk certs dan data

docker volume create jenkins-docker-certs
docker volume create jenkins-data

Kemudian membuat container untuk node jenkins

docker container run \
  --name jenkins-docker \
  --rm \
  --detach \
  --privileged \
  --network jenkins \
  --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind

Setelah itu install jenkinsci sendiri dalam container terpisah

docker container run \
  --name jenkins-blueocean \
  --rm \
  --detach \
  --network jenkins \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
  --publish 50000:50000 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  jenkinsci/blueocean

Setelah berhasil terinstall, kalian bisa buka di browser anda http://localhost:8080/. Setelah berhasil menginstall, maka akan tampil seperti gambar berikut:

Jika kalian menemui halaman seperti ini setelah installasi

docker exec -it jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword

Kemudian itu salin ke Form Administrator Password di atas.

Setelah itu kalian hanya tinggal pilih plugin yang diinstall dan isi username dan password untuk login.

Baca juga Skill Set jika ingin menjadi fullstack enginer zaman now

Deployment Aplikasi Laravel di Server Testing & Production dengan gitlab-ci

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

Baca juga Cara Installasi Jenkins menggunakan Docker