Migrasi Dari Github Ke Gitlab Pages
Salah satu kekurangan Github Pages adalah private repository hanya tersedia untuk akun berbayar. Yang ingin menyembunyikan repository dari static websitenya tentu harus memiliki akun berbayar. Beberapa waktu lalu saya baru tahu kalau ternyata Gitlab juga menyediakan fitur seperti Github Pages, Gitlab Pages.
Beberapa kelebihan Gitlab Pages dibandingkan dengan Github Pages antara lain:
- Private repository untuk pengguna gratis tidak dibatasi.
- Mendukung banyak Static Pages Generator.1
- Dukungan Large File Storage (LFS) secara gratis bagi yang ingin upload materi di repo.
Berikut ini catatan saya dalam proses migrasi dari Github ke Gitlab Pages:
- Nama repository menjadi username.gitlab.io dari yang semula username.github.io
- Gitlab menyediakan beberapa static website generator, tidak seperti github yang hanya menyediakan jekyll untuk build otomatis
- Gitlab menyediakan repository awal yang dapat kita fork untuk memulai sebuah proyek Gitlab Pages dengan cepat.
- Gitlab Pages dibuat menggunakan Gitlab CI yang membutuhkan sebuah file
.gitlab-ci.yml
di dalam repository kita.
Bagi yang membuat proyek baru bisa dengan fork proyek yang berada di https://gitlab.com/groups/pages, fork sesuai dengan static website generator yang ingin digunakan. Karena ingin migrasi dari repository Github ke Gitlab, yang saya lakukan antara lain:
1. Buat repository baru di Gitlab
Caranya mudah saja, klik tombol “+ New Project” lalu isikan username.gitlab.io
sebagai nama proyek.
2. Menabahkan Gitlab remote URL
Menambahkan Gitlab pada remote URL repository yang sudah ada
$ git remote add gitlab [email protected]:username/username.gitlab.io.git
3. Menambahkan .gitlab-ci.yml
Karena repository ini berasal dari Github, maka kita harus membuat sendiri
.gitlab-ci.yml
di dalam repository
$ touch .gitlab-ci.yml
Tambahkan teks berikut pada .gitlab-ci.yml
:
image: ruby:2.3
pages:
stage: deploy
script:
- gem install jekyll
- jekyll build -d public
artifacts:
paths:
- public
only:
- master
4. Push ke Gitlab
Setelah semua perubahan sudah di-commit, lakukan push ke remote URL Gitlab
$ git push gitlab
Untuk menjadikan gitlab sebagai default remote untuk perintah push,
tambahkan --set-upstream
$ git push gitlab --set-upstream
Tunggu beberapa saat sampai proses build selesai.
5. Troubleshoot
Untuk memeriksa hasil build dapat dengan mengakses https://gitlab.com/username/username.gitlab.io/builds. Ternyata Status build repository saya failed.
Saya lupa masalah dependensi ๐. Dependensi ini juga harus disertakan pada
.gitlab-ci.yml
. Untuk mempermudah masalah dependensi saya menggunakan bundler.
Tambahkan file baru dengan nama Gemfile
, dan isi sesuai kebutuhan
source 'https://rubygems.org'
gem 'jekyll'
gem 'jekyll-paginate'
gem 'jekyll-sitemap'
gem 'jekyll-feed'
gem 'jekyll-seo-tag'
gem 'jekyll-gist'
gem 'jekyll-redirect-from'
gem 'jekyll-compose', group: [:jekyll_plugins]
Berikutnya edit .gitlab-ci.yml
menjadi
image: ruby:2.3
pages:
stage: deploy
script:
- bundle install
- jekyll build -d public
artifacts:
paths:
- public
only:
- master
Apabila sukses maka status pada halaman Builds menjadi passed seperti terlihat pada gambar berikut
http://nsetyo.gitlab.io sudah bisa diakses ๐.
6. Custom Domain
Langkah berikutnya adalah saya akan mengubah domain menggunakan domain https://nsetyo.id seperti pada Github Pages. Caranya dengan mengakses Settings > Pages. Lalu tambahkan domain yang diinginkan.
Sekian.