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