CI/CD Menggunakan TravisCI, Docker Cloud dan AWS

Sudah lama banget ngak ngeshare, sebenernya banyak yang mau dishare cuma waktunya ngak ade :).
Kali saya mau share bagaimana CI/CD menggunakan TravisCI, Docker Cloud untuk deploy dan manage Dockerized applications, AWS sebagai Application Servers. TravisCI sebagai pengganti Jenkins berbasis Cloud jadi kita tidak perlu pusing dengan maintenis servicenya dan gratis :D. OK, bismillah, mari kita mulai:
Yang dibutuhkan:
1. Internet :D
2. github account
3. docker hub account
4. AWS / server apa saja yang bisa diakses

Berikut akan saya jabarkan langkah2nya:
1. Buat repository baru dan commit semua files di Github
2. Config TravisCI
3. Config Docker Cloud
4. Config AWS / servers kamu



heriyanto$ cd git/
heriyantos-MacBook-Pro:git heriyanto$ mkdir playtravis
heriyanto$ cd playtravis/
heriyanto$ echo "# cicd" >> README.md
heriyanto$ git init
heriyanto$ git add README.md
heriyanto$ git commit -m "first commit"
heriyanto$ git remote add origin git@github.com:unixhat/playtravis.git
heriyanto$ git push -u origin master


2. Go to https://travis-ci.org








3. Login with your GitHub Account


After login add your repository by clicking + symbol.
Choose your playtravis repository for travisci, then use toggle to activate.











heriyanto$ cat .travis.yml
sudo: required

services:
    - docker

env:
    global:
        - COMMIT=${TRAVIS_COMMIT::8}

script:
    - export REPO=heriyanto/cicd
    - docker images
    - docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
    - export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi`
    - docker build -t $REPO:$COMMIT .
    - docker tag $REPO:$COMMIT $REPO:$TAG
    - docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER
    - docker push $REPO
    - docker ps -a
    - docker logout

heriyanto$ git add .
heriyanto$ git commit -am "add travis file"
heriyanto$ git push -u origin master

Setelah setelah config dengan travis saatnya kita pindah ke docker cloud.

1. login di cloud.docker.com, gunakan account yg sama dengan login docker hub.



















2. Silahkan launch instance aws baru atau yang existing, setelah itu kita konfigur docker cloud biar bisa konek ke instance aws kita ke url https://cloud.docker.com/app/username/node. Pilih "Bring your own node"





3. Kitah akan dapet link, nah copy deh link itu ke console aws instance kitah















4. Setelah dipaste docker cloud akan memprovision sendiri semuah2nya kita tinggal terima mateng. setelah proses selesai semua docker akan terinstall berikut imagesnya







5. Setelah proses selesai kembali lagi ke dashboardnyah si docker cloud. Pastikan confignya sama dengan gambar tempel dibawah.

Nodes config:

Services config:


 6. Buat ngetesnye Clone aja file dari https://github.com/unixhat/playtravis atau mau pake code sendiri gpp. Coba abang kasih dikit perubahan di index.php nya terus di commit deh. Langsung arahin pandangan abang ke dashboardnya TravisCI akan ada progress, setelah selesai akan tampil beginih:





7. Nah udah gitu sesuai yg kita suruh dalam skrip .travis.yml tadih si travis ini bakal build and push images ke docker hub. kalo udah masup abang liat dah di dashboard si docker hub, gambar tempelnya begini:


8. Nah kalo udah nonggol, kita cek di dashboard docker hub apakah ada pergerakan.. biasanya otomatis langsung deploy image docker kita kalo sesuai ama setingan ane, nah kalo udah, langsung aja ke url yg di kasih sama si docker hub, abang bisa liat url di dalem setingan container. Ini hasil ane bang:


9. Nah alhamdulillah udahan semuanyah.. moga Allah kasih kemudahan ya belajarnya..