ci/cd menggunakan bitbucket pipelines
halo sobat sekolahlinux, kali ini saya akan coba memberikan sedikit penjelasan tentang bagaimana cara menggunakan tutorial bitbucket pipeline indonesia, sebelumnya kamu harus punya account bitbucket, jika sudah punya account bitbucket selanjutnya buat project, lalu didalam projetnya buat file dengan nama bitbucket-pipelines.yml
seperti dibawah ini
lalu didalam file bitbucket-pipelines.yml
isinya seperti dibawah ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | image: atlassian/default–image:2 definitions: services: redis: image: redis:3.2 dbmysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: $rootmysql pipelines: default: – step: name: step–1 deployment: test image: arey/mysql–client services: – dbmysql script: – sleep 5s – cat index.html – echo “<h2>sekolahlinux</h2>” >> index.html – cat index.html – mkdir salin – cp index.html salin/ – mysql —host=‘127.0.0.1’ –uroot –p$rootmysql –e “use mysql; show tables” – ls artifacts: – salin/* – step: name: step–2 image: docker services: – docker script: – export IMAGE_NAME=sekolahlinux/akbar–belajar:$(echo $BITBUCKET_COMMIT| cut –c1–7) – docker build –t $IMAGE_NAME . – docker login —username $DOCKER_HUB_USERNAME —password $DOCKER_HUB_PASSWORD – docker push $IMAGE_NAME trigger: manual – step: name: step–3 script: – apt update && apt install –y openssh–client – scp index.html root@sekolahlinux.com:/root trigger: manual |
jika sudah mari kita buat env variable untuk var dibawah ini
- DOCKER_HUB_USERNAME => username docker hub
- DOCKER_HUB_PASSWORD => password docker hub
- rootmysql => password user root services mysql
contohnya seperti dibawah ini
lalu selanjutnya masukan SSH Keys seperti dibawah ini masukan private key dan juga pubkey, juga ip/host tujuan
oke selanjuntnya kita akan membahas isi dari bitbucket-pipelines.yml
kita akan membagi memecahnya menjadi beberapa bagian untuk menjelaskan isi dari bitbucket-pipelines.yml
, bagian pertama yaitu seperti dibawah ini
1 | image: atlassian/default–image:2 |
image: atlassian/default-image:2 => ini digunakan untuk menentukan base image default yang akan kita gunakan, pada baris ini base image default yg kita gunakan adalah atlassian/default-image:2
1 2 3 4 5 6 7 8 | definitions: services: redis: image: redis:3.2 dbmysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: $rootmysql |
definitions:
=> baris ini digunakan untuk mendefinisikan suatu services name ataupun cache, baik itu service yang sudah ada ataupun custom services
services:
=> baris ini digunakan untuk mendefine service apa saja yg akan digunakan dalam proses build yang akan dilakukan
redis:
=> baris ini digunakan sebagai nama dari service yang akan kita gunakan, nama ini nantinya akan bisa dipanggil pada step:
didalam pipelines:
image: redis:3.2
=> baris ini digunakan untuk menentukan image yang digunakan dari services, misal disini saya ingin membuat services redis, maka saya harus menggunakan image redis:3.2
atau image redis dengan tag lainnya
dbmysql:
=> baris ini digunakan sebagai nama dari service yang akan kita gunakan, nama ini nantinya akan bisa dipanggil pada step:
didalam pipelines:
image: mysql:5.7
=> baris ini digunakan untuk menentukan image yang digunakan dari services, misal disini saya ingin membuat services mysql, maka saya harus menggunakan image mysql:5.7
atau image mysql dengan tag lainnya
environment:
=> baris ini digunakan untuk menentukan env variable yang nantinya akan digunakan kedalam service yang kita buat, misal pada service ini saya menggunakan env variable untuk services dbmysql
MYSQL_ROOT_PASSWORD: $rootmysql
=> baris ini digunakan untuk set root password service mysql yang akan kita pakai, untuk detail env variable apa saja yang bisa digunakan atau di set, kamu bisa langsung lihat di https://hub.docker.com/_/mysql/
detailnya lainnya kamu bisa baca disini untuk cara penggunaan service yang akan digunakan pada proses pipeline https://confluence.atlassian.com/bitbucket/test-with-databases-in-bitbucket-pipelines-856697462.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | pipelines: default: – step: name: step–1 deployment: test image: arey/mysql–client services: – dbmysql script: – sleep 5s – cat index.html – echo “<h2>sekolahlinux</h2>” >> index.html – cat index.html – mkdir salin – cp index.html salin/ – mysql —host=‘127.0.0.1’ –uroot –p$rootmysql –e “use mysql; show tables” – ls artifacts: – salin/* – step: name: step–2 image: docker services: – docker script: – export IMAGE_NAME=sekolahlinux/akbar–belajar:$(echo $BITBUCKET_COMMIT| cut –c1–7) – docker build –t $IMAGE_NAME . – docker login —username $DOCKER_HUB_USERNAME —password $DOCKER_HUB_PASSWORD – docker push $IMAGE_NAME trigger: manual – step: name: step–3 script: – apt update && apt install –y openssh–client – scp index.html root@sekolahlinux.com:/root trigger: manual |
pipelines:
=> baris ini digunakan untuk memulai task-task pipeline yang akan kita buat
default:
=> baris ini digunakan untuk menandakan pipeline akan dijalankan setiap ada push kedalam project/repo git terkait
- step:
=> baris ini digunakan untuk memulai sebuah step yang berisi task yang akan dijalankan
name:
=> baris ini digunakan untuk memberi nama pada step yang akan dijalankan, karena biasanya dalam sebuah pipeline ada lebih dari 2 step
deployment:
=> baris ini digunakan untuk set pada env apa - step:
ini berada, secara default valid values yang bisa digunakan adalah test
, staging
atau production
image:
=> baris ini digunakan untuk spesifik set base image apa yg akan digunakan pada - step:
itu diproses
services:
=> baris ini digunakan untuk menghidupkan / memanggil services yang sebelumnya sudah set pada definitions:
atau service yg by default sudah di sediakan oleh bitbucket , values nya sendiri adalah nama dari services yg sudah diberikan pada step definitions:
yaitu redis
& dbmysql
, perlu di perhatikan, service sendiri butuh waktu untuk up dan bisa digunakan didalam sebuah - step:
maka baiknya pada task yang kita berikan di script:
ada jeda misal saya menambahkan - sleep 5s
pada script:
agar servicenya up, dan satu lagi host/address yang bisa digunakan untuk menghubungi services tersebut adalah 127.0.0.1
jadi kita tidak bisa menggunakan host/address localhost
script:
=> baris ini digunakan untuk memberikan list-list task yang akan dijalankan, bahasa yang digunakan dalam tasknya adalah shell command linux
artifacts:
=> baris ini digunakan untuk melakukan artifak atau menyimpan file hasil compile yang mana nanti filenya akan di transfer ke - step:
selanjutnya, pada script yg saya buat file yg saya artifacts adalah file didalam folder - salin/*
trigger: manual
=> baris ini digunakan untuk menentukan apakah - step:
berjalan secara otomatis atau harus di triger manual, by default jika paramater ini tidak di tambahkan maka - step:
akan berjalan otomatis
untuk tampilan pipelinenya kurang lebih akan seperti gambar dibawah:
sekiat tutorial sederhana kali ini, semoga bermanfaat ? jika ada pertanyaan silahkan bertanya di kolom comment ataupun kirim pesan ke linkedin saya ?
oh iya untuk referensi lainnya kalian bisa melihat di doc official bitbucket
- https://confluence.atlassian.com/bitbucket/configure-bitbucket-pipelines-yml-792298910.html
Referensi :