Degiam, 06 Jun 2025

Deploy Repo GitLab Eksternal Ke Vercel dengan Akun Gratis

Penjelasan Gambar

Secara default, akun gratis di Vercel hanya bisa melakukan deploy dari repository yang dimiliki sendiri. Fitur deploy dari repository eksternal (yang bukan milik kita) hanya tersedia di akun berbayar. Namun, ada solusi cerdas untuk mengakalinya: kita bisa mirror isi repository eksternal ke repository milik sendiri, lalu melakukan deploy ke Vercel dari repository milik sendiri tersebut.

Artikel ini akan membahas cara mengatur GitLab CI/CD agar otomatis menyalin isi dari repository eksternal ke repository pribadi, yang sudah terhubung dan terdeploy dengan Vercel.

Syarat GitLab

  1. Kamu memiliki akses sebagai Maintainer pada repository eksternal tersebut (agar bisa menambahkan CI/CD Variable).

  2. Kamu sudah membuat repository di akun GitLab sendiri.

Buat Personal Access Token di GitLab

  1. Buka GitLab, lalu ke menu Preferences > Access Tokens, atau bisa akses langsung via https://gitlab.com/-/user_settings/personal_access_tokens.

  2. Buat token baru dengan scope berikut:

✅ api
✅ read_repository
✅ write_repository
Penjelasan Gambar
  1. Simpan token tersebut di tempat aman karena hanya ditampilkan sekali saja saat baru saja membuatnya.

Tambahkan CI/CD Variable pada Repo Eksternal

  1. Buka repository eksternal, misalnya https://gitlab.com/akun_teman_atau_group/nama_repo.

  2. Masuk ke Settings > CI/CD > Variables, lalu tambahkan variable:

Key: TARGET_REPO_URL
Value: https://oauth2:<token>@gitlab.com/<nama_akun_gitlab_kamu>/<repo>.git

Penjelasan:

  • Ganti <token> dengan token dari langkah 1
  • Ganti <nama_akun_gitlab_kamu> dengan username GitLab kamu
  • Ganti <repo> dengan nama repository milik sendiri
  • Pada section Visibility, pilih Masked
  • Pada section Flags, jangan centang Protect variable

Contoh:

Penjelasan Gambar

Buat .gitlab-ci.yml pada Repo Eksternal

Berikut adalah contoh isi file .gitlab-ci.yml :

stages:
  - sync

sync_to_target:
  stage: sync
  only:
    refs:
      - main
  script:
    - git config --global user.name "GitLab CI"
    - git config --global user.email "ci@example.com"

    - git clone "$TARGET_REPO_URL" target-repo
    - cd target-repo

    - |
      if git ls-remote --exit-code --heads origin main; then
        git checkout main
      else
        git checkout --orphan main
      fi

    - cd ..

    - find . -mindepth 1 -maxdepth 1 ! -name '.git' ! -name 'target-repo' -exec cp -r {} target-repo/ \;

    - cd target-repo
    - git add .
    - git commit -m "Auto mirror" || echo "Nothing to commit"
    - git push origin main

Pada contoh ini menggunakan branch main, kamu bisa menganti sesuai dengan branch dari repository eksternal yang ingin dilakukan mirroring. Misal branch sumber ingin diubah dari branch dev, maka cukup ubah bagian only > refs menjadi :

only:
  refs:
    - dev

Lakukan Perubahan pada Repo Eksternal

Coba lakukan perubahan, lalu push commit ke repository eksternal. Akan terlihat proses dari CI/CD pada repository eksternal, jika proses sudah selesai, maka akan berubah menjadi centang.

Penjelasan Gambar

Deploy Repo Pribadi ke Vercel

Pada dasbor Vercel, buat project baru, caranya :

  1. Tekan tombol Add New, pilih opsi Project.

  2. Pada Import Git Repository, pastikan GitLab sudah terhubung ke Vercel, cari repository yang tadi dibuat.

  3. Selesaikan proses pengaturan project hingga deployment berhasil.

Hasil Akhir

Dengan konfigurasi di atas, setiap kali ada perubahan di branch yang telah ditentukan pada repository eksternal, maka akan terjadi dua proses, yakni :

  1. GitLab CI/CD akan otomatis menyalin seluruh file dari repository eksternal (sesuai branch yang telah ditentukan) ke repository milik sendiri pada branch main.

  2. Vercel akan menangkap perubahan pada repository milik sendiri dan melakukan auto-deploy.



#gitlab #vercel