Fakultas Ilmu Komputer UI
Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
pplc7
blog
Commits
4440d24b
Commit
4440d24b
authored
Mar 21, 2019
by
Fata Nugraha
Browse files
Add post about automation
parent
08dfb906
Pipeline
#9903
passed with stage
in 3 minutes and 10 seconds
Changes
10
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
_posts/2019-03-21-portainer-deployer.md
0 → 100644
View file @
4440d24b
---
layout
:
post
title
:
GitlabCI + Portainer
date
:
2019-03-21 01:44:07 +0700
author
:
fata
---
Semua bermula pada saat saya tidak dapat menemukan webhook yang didemonstrasikan
oleh pembicara tamu (Kurnia D Win) untuk mengupdate containernya dan semakin hari
jumlah service saya semakin banyak.
<!--more-->

_Gambar 1: daftar service per 3 Maret 2019_
Sebelumnya saya melakukan deployment dengan portainer secara manual, namun
semakin banyaknya service yang harus saya deploy, saya memulai untuk menggunakan
docker-compose yang di support oleh portainer yang memudahkan proses
_docker orchestration_
saya.
Fitur ini cukup memudahkan saya dalam membuat banyak container sekaligus, namun
kurang bagusnya UX pada fitur ini khususnya dalam menambahkan environment
variables, membuat proses ini selain melelahkan juga membosankan. saya memiliki
13 variabel yang harus ditambahkan, dengan menggunakan form portainer saya perlu
melakukan 26 copy paste antara form dan text editor (atau selama ini ada cara
yang lebih mudah, let me know!).

_Gambar 2: Form untuk menambahkan environment variable._
Pertama saya mencoba untuk membuat script dengan mencapture request dari browser
dan menexportnya dalam format curl.
Sebenarnya masalah sudah selesai, namun tiba-tiba saya ingat rencana saya di post
sebelumnya untuk mengintegrasikan ini kedalam GitlabCI. Permasalahan baru muncul,
karena untuk mengakses API Portainer diperlukan kredensial SSO saya yang cukup
sensitif untuk disimpan di platform gitlab.cs.ui.ac.id.

Dan akhirnya saya membuat suatu webservice yang cukup simpel untuk mendeploy
stack kami melalui API Portainer. Webservice ini kemudian saya deploy di vps
pribadi sehingga GitlabCI cukup memanggil api webservice ini.
pengoprasian webservice ini cukup mudah, pertama tambahkan stack di dashboard

kemudian isi environment variable dan stack file, lalu save

buat token baru (token ini cukup sensitif, sehingga sebaiknya disimpan di
CI/CD environment variable)



Lalu tambahkan stage baru di pipeline
```
land:development:
stage: release
image: alpine:3.9
script:
- apk add curl
- 'curl "https://stack.nugraha.xyz/api/deploy-stack/simlomankejapdevelopment/" -H "Authorization: Token $DEPLOYER_TOKEN" --data "stack_file=$(cat docker-compose.yml)"'
only:
refs:
- development
```

disclaimer: masih dalam versi alpha (entah sampai kapan, hehe pull request dong) so, use at your own risk!
kode sumber webservice dapat ditemukan di:
[
github/fatanugraha/portainer-stack-deployer
](
https://github.com/fatanugraha/portainer-stack-deployer
)
¯
\\\_
(ツ)
\_
/¯
Terima Kasih
assets/images/2019-03-21-portainer-deployer/meme.jpeg
0 → 100644
View file @
4440d24b
31.9 KB
assets/images/2019-03-21-portainer-deployer/pipeline.png
0 → 100644
View file @
4440d24b
30.4 KB
assets/images/2019-03-21-portainer-deployer/portainer-ux.png
0 → 100644
View file @
4440d24b
12.8 KB
assets/images/2019-03-21-portainer-deployer/services.png
0 → 100644
View file @
4440d24b
33.6 KB
assets/images/2019-03-21-portainer-deployer/step-1.png
0 → 100644
View file @
4440d24b
3.97 KB
assets/images/2019-03-21-portainer-deployer/step-2.png
0 → 100644
View file @
4440d24b
62 KB
assets/images/2019-03-21-portainer-deployer/step-3.png
0 → 100644
View file @
4440d24b
4.6 KB
assets/images/2019-03-21-portainer-deployer/step-4.png
0 → 100644
View file @
4440d24b
2.34 KB
assets/images/2019-03-21-portainer-deployer/step-5.png
0 → 100644
View file @
4440d24b
8.88 KB
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment