diff --git a/_posts/2019-05-26-dprd.md b/_posts/2019-05-26-dprd.md
index d728d0e1a1c972824bfdcdfc880f8f7e85f1d377..042678b321b738fcb7e0e2a9458dbb473483a46f 100644
--- a/_posts/2019-05-26-dprd.md
+++ b/_posts/2019-05-26-dprd.md
@@ -9,7 +9,7 @@ Pada blog terakhir, saya akan mengulang mengenai DPRD.
 
 <!--more-->
 
-Deployment, Persona, Refactoring, Docker, + Profiling
+Deployment, Persona, Refactoring, Docker.
 
 ### Persona
 ![ ](/assets/images/2019-05-02/login.png)
@@ -98,17 +98,207 @@ job:
 **services** = diunakan untuk menspesikasikan Docker image service, terhubung dengan sebuah base image yang dispesifikasikan di image.
 
 **before_script** = digunakan untuk mendefinisikan perintah yang seharusnya dijalankan sebelum semua job, termasuk job deploy. Dapat berupa sebuah array atau string multi-line
+```
+before_script:
+  - global before script
+```
 
-**after_script** = digunakan untuk mendefiniskan perintah yang akan dijalankan setelah semua job, termasuk yang gagal. Berbeda dengan before, after harus berupa sebuah array atau string multi-line
+**after_script** = digunakan untuk i perintah yang akan dijalankan setelah semua job, termasuk yang gagal. Berbeda dengan before, after harus berupa sebuah array atau string multi-line
+```
+job:
+  before_script:
+    - execute this instead of global before script
+  script:
+    - my command
+  after_script:
+    - execute this after my script
+```
 
 **stages** = digunakan untuk mendefinisikan stage yang dapat digunakan oleh job dan didefiniskan secara global.
+```
+stages:
+  - build
+  - test
+  - deploy
+```
 
-###Profiling
+**stage** = didefiniskan per job dan bergantung kepada stages yang didefiniskan secara global.
+```
+stages:
+  - build
+  - test
+  - deploy
+
+job 1:
+  stage: build
+  script: make build dependencies
+
+job 2:
+  stage: build
+  script: make build artifacts
+
+job 3:
+  stage: test
+  script: make test
 
-Proses optimisasi diawali dengan profiling app. Profiling dilakukan untuk menemukan bagian mana dari program yang memakan CPU time (atau memori, I/O) paling banyak, dan di mana letak kemungkinan hambatan performa berada. Paket software seringkali mencakup internal timing routines yang dapat digunakan, atau dapat menggunakan external profiler.
-Pemakaian sejumlah thread untuk memecahkan sebuah task dapat menyebabkan overhead. Sangat mungkin, bahwa ketika jumlah prosesor untuk menyelesaikan sebuah tugas digandakan, waktu yang dibutuhkan tidak berkurang setengahna. Pada kasus terburuk, waktunya bisa sama atau bahkan bertambah. Oleh sebab itu, sangat penting untuk mengetahui waktu eksekusi yaiitu scalability dari app. Scalability bergantung pada ukuran permasalahan. Jika total ukuran dari sistem tetap walaupun jumlah tasknya bervariasi, hal tersebut dapat dikatakan strong scalability. Begitu juga sebaliknya.
+job 4:
+  stage: deploy
+  script: make deploy
+```
 
-![ ](/assets/images/2019-05-02/perf.png)
+**tags** = digunakan untuk memilih Runners secara spesifik dari list yang diperbolehkan untuk dijalankan di project. Gitlab Runner adalah proyek open source yang digunakan untuk merun job dan mengirim balik hasilnya ke Gitlab.
+```
+job:
+  tags:
+    - ruby
+    - postgres
+```
 
+**allow_failure** = memperbolehkan sebuah job untuk gagal tanpa memengaruhi sisa dari CI suite.
+```
+job1:
+  stage: test
+  script:
+    - execute_script_that_will_fail
+  allow_failure: true
+
+job2:
+  stage: test
+  script:
+    - execute_script_that_will_succeed
+
+job3:
+  stage: deploy
+  script:
+    - deploy_to_staging
+```
+
+**when** = digunakan untuk mengimplementasi job yang berjalan walaupun gagal.
+```
+stages:
+  - build
+  - cleanup_build
+  - test
+  - deploy
+  - cleanup
+
+build_job:
+  stage: build
+  script:
+    - make build
+
+cleanup_build_job:
+  stage: cleanup_build
+  script:
+    - cleanup build when failed
+  when: on_failure
+
+test_job:
+  stage: test
+  script:
+    - make test
 
-![ ](/assets/images/2019-05-02/memory.png)
\ No newline at end of file
+deploy_job:
+  stage: deploy
+  script:
+    - make deploy
+  when: manual
+
+cleanup_job:
+  stage: cleanup
+  script:
+    - cleanup after jobs
+  when: always
+```
+
+**cache** = digunakan untuk menspesifikasikan list dari file dan direktori yang harus dicache di antara job.
+
+**artifacts** = digunakan untuk menspesifikasikan list dari file dan direktori yang harus dilampirkan ke job setelah sukses.
+
+**dependencies** = digunakan bersamaan dengan artifacts dan memperbolehkan kita untuk mendefinisikan artifak untuk dioper di antara job yang berbeda.
+```
+build:osx:
+  stage: build
+  script: make build:osx
+  artifacts:
+    paths:
+      - binaries/
+
+build:linux:
+  stage: build
+  script: make build:linux
+  artifacts:
+    paths:
+      - binaries/
+
+test:osx:
+  stage: test
+  script: make test:osx
+  dependencies:
+    - build:osx
+
+test:linux:
+  stage: test
+  script: make test:linux
+  dependencies:
+    - build:linux
+
+deploy:
+  stage: deploy
+  script: make deploy
+```
+
+**coverage** = memperbolehkan kita untuk mengkonfigurasi bagaimana code coverage akan diekstrak dari job output.
+```
+job1:
+  script: rspec
+  coverage: '/Code coverage: \d+\.\d+/'
+```
+
+**retry** = memperbolehkan kita untuk mengkonfigurasi berapa kali sebuah job boleh diulang jika gagal.
+```
+test:
+  script: rspec
+  retry: 2
+```
+
+**parallel** = memperbolehkan kita untuk mengkonfigurasi berapa banyak instance dari sebuah job untuk berjalan secara parallel.
+```
+test:
+  script: rspec
+  parallel: 5
+```
+
+**include** = dengan include, kita dapat memperbolehkan masuknya file yaml external.
+
+**extends** = mendefinisikan sebuah entri nama yang diinherit oleh job yang menggunakan extends
+```
+.tests:
+  script: rake test
+  stage: test
+  only:
+    refs:
+      - branches
+
+rspec:
+  extends: .tests
+  script: rake rspec
+  only:
+    variables:
+      - $RSPEC
+```
+
+**pages** = job spesial yang digunakan untuk mengupload konten static ke Gitlab
+```
+pages:
+  stage: deploy
+  script:
+    - mkdir .public
+    - cp -r * .public
+    - mv .public public
+  artifacts:
+    paths:
+      - public
+  only:
+    - master
+```
\ No newline at end of file