Lewati ke isi

Install GitLab pada Ubuntu 18.04 LTS

GitLab core

Pembaruan dan persyaratan

sudo apt-get update
sudo apt-get install ca-certificates curl openssh-server postfix

Impor skrip instalasi repo

cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
less /tmp/script.deb.sh
# running repo import
sudo bash /tmp/script.deb.sh

Periksa versi dan instalasi GitLab CE

# check and install gitlab-ce
sudo apt-cache policy gitlab-ce
sudo apt-get install gitlab-ce

Ubah konfigurasi GitLab

# gitlab config
sudo nano /etc/gitlab/gitlab.rb

Konfigurasi URL & SSL dengan Let’s Encrypt

# URL
external_url 'https://repo.peladen.xyz'
# Let's Encrypt
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email protected]']

Menerapkan ulang konfigurasi GitLab

sudo gitlab-ctl reconfigure

Membuat cron pembaruan LE

sudo nano /etc/cron.daily/gitlab-le

/etc/cron.daily/gitlab-le

#!/bin/bash

set -e

/usr/bin/gitlab-ctl renew-le-certs > /dev/null

Membuat berkas cron agar dapat dieksekusi

sudo chmod +x /etc/cron.daily/gitlab-le

GitLab Runner

Berkas instalasi repositori GitLab Runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh -o /tmp/gl-runner.deb.sh
less /tmp/gl-runner.deb.sh
sudo bash /tmp/gl-runner.deb.sh

Instalasi & registrasi runner ke core

#
sudo apt-get install gitlab-runner
# 
PROJECT_REGISTRATION_TOKEN="_8sEGeh6aTCFxVcGLGQL";
PROJECT_URL="https://repo.peladen.xyz";
sudo gitlab-runner register -n \
    --url $PROJECT_URL \
    --registration-token $PROJECT_REGISTRATION_TOKEN \
    --executor "docker" \
    --description "docker-runner" \
    --docker-image "alpine:latest" \
    --docker-privileged

Menampilkan runner yang sedang aktif

sudo gitlab-runner list

GitLab Docker Registry

Menyunting berkas konfigurasi GitLab

sudo nano /etc/gitlab/gitlab.rb
registry_external_url 'https://repo.peladen.xyz:5555'
registry_nginx['enable'] = true
registry_nginx['proxy_set_headers'] = {
 "Host" => "$http_host",
 "X-Real-IP" => "$remote_addr",
 "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
 "X-Forwarded-Proto" => "https",
 "X-Forwarded-Ssl" => "on"
}
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/repo.peladen.xyz.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/repo.peladen.xyz.key"
sudo gitlab-ctl reconfigure
sudo ufw allow 5555

Create access token from GitLab > User Settings > Access Tokens, with Scopes read_registry checked.
From local machine or another docker instance, login to try the authentication succeded

docker login repo.peladen.xyz:5555

Object Storage Backend

sudo nano /etc/gitlab/gitlab.rb
registry['storage'] = {
  's3' => {
    'accesskey' => 'WPZ25EZIWFIOEGRN2JXT',
    'secretkey' => 'xQqzDMLyfti29EgAyZtnel7m8s8C35Tg9MteCKq05mU',
    'bucket' => 'baki',
    'region' => 'sgp1',
    'regionendpoint' => 'https://sgp1.digitaloceanspaces.com'
  }
}
sudo gitlab-ctl reconfigure

DO Spaces bugs

There is currently a bug where the registry will shut down after thirty seconds if your object storage bucket is empty. To avoid this, put a file in your bucket before running the next step. You can remove it later, after the registry has added its own objects.

If you are using DigitalOcean Spaces, you can drag and drop to upload a file using the Control Panel interface.

# from local machine or another docker instance, login again to make sure
docker login repo.peladen.xyz:5555

Updating gitlab-ci.yaml & building a image

gitlab-ci.yaml

image: docker:latest
services:
- docker:dind

stages:
- build
- test
- release

variables:
  TEST_IMAGE: repo.peladen.xyz:5555/community/hello_hapi:$CI_COMMIT_REF_NAME
  RELEASE_IMAGE: repo.peladen.xyz:5555/community/hello_hapi:latest

before_script:
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN repo.peladen.xyz:5555

build:
  stage: build
  script:
    - docker build --pull -t $TEST_IMAGE .
    - docker push $TEST_IMAGE

test:
  stage: test
  script:
    - docker pull $TEST_IMAGE
    - docker run $TEST_IMAGE npm test

release:
  stage: release
  script:
    - docker pull $TEST_IMAGE
    - docker tag $TEST_IMAGE $RELEASE_IMAGE
    - docker push $RELEASE_IMAGE
  only:
    - master
docker pull repo.peladen.xyz:5555/community/hello_hapi:latest

Rujukan