.
Det finns 2 version av Gitlab:
- Gitlab CE: Community Edition.
- Gitlab EE: Enterprise Edition.
Installation
Installera dom nödvändiga paketen. Postfix kan man skippa om man har en annan mailserver.
sudo apt-get install curl openssh-server ca-certificates postfix
Lägg till Gitlab's repo och installera sedan Gitlab CE.
curl -sShttps://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh| sudo bash
sudo apt-get install gitlab-ce
Konfigurera sedan Gitlab och starta det.
sudo gitlab-ctl reconfigure
Konfiguration
Att konfigurera är väldigt enkelt. Man gör sina ändringar i
/etc/gitlab/gitlab.rb efter det kör man sudo gitlab-ctl reconfigure
för att dom ska börja gälla.
HTTPS
Ändra följande rad:
external_url "https://git.hackernet.se"
Eftersom hostnamnet är git.hackernet.se så kommer gitlab leta efter
private key och certificate filen som heter git.hackernet.se.key/crt
under /etc/gitlab/ssl/.
Om du behöver ändra vart cert filerna finns och vad dom heter ändra dessa 2 rader.
nginx['ssl_certificate'] = "/opt/cert/fullchain.pem"
nginx['ssl_certificate_key'] = "/opt/cert/privkey.pem"
Redirect HTTP till HTTPS Ändra följande rad till true.
nginx['redirect_http_to_https'] = true
LDAP authentication
För mer info kolla Gitlab LDAP document
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'Hackernet'
host: 'openldap.hackernet.se'
port: 389
uid: 'uid'
method: 'plain'
bind_dn: '>ldap bind username>'
password: ''
active_directory: false
allow_username_or_email_login: true
block_auto_created_users: false
base: ''
user_filter: ''
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
## EE only
group_base: 'dc=hackernet,dc=se'
admin_group: 'cn=wiki'
sync_ssh_keys: false
EOS
Gör LDAP användare till admin För att göra en LDAP användare till admin kör följande kommando i shell:
sudo gitlab-rails console
u = User.find_by_username("LDAPadmin")
u.admin = true
u.save
exit
Schemalagd backup
Simpel backup görs mha crontab och /var/opt/gitlab/backups kan sedan
0 4 * * 7 /opt/gitlab/bin/gitlab-backup create CRON=1
1 4 * * 7 cp /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups/ >/dev/null
1 4 * * 7 cp /etc/gitlab/gitlab.rb /var/opt/gitlab/backups/ >/dev/null
Limit backup lifetime to 60 days, /etc/gitlab/gitlab.rb.
gitlab_rails['backup_keep_time'] = 5184000
CI/CD
I ditt gitlab repo kan du skapa en fil som heter .gitlab-ci.yml.
Det är i denna filen som du specificerar vad din pipeline ska göra.
YAML Lint
Pipeline som kollar att du har skrivit rätt YAML syntax i ditt repo. Funkar bra tillsammans med tex Puppet hiera config.
stages:
- lint
lint-yaml:
stage: lint
image:
name: cytopia/yamllint:latest
entrypoint: ["/bin/ash", "-c"]
script:
- yamllint -f colored .
Om du vill att pipelinen ska skippa vissa filer eller du vill ändra configen så kan du skapa en fil i rooten på ditt repo som heter .yamllint.yml:
extends: default
ignore: |
.yamllint.yml
.gitlab-ci.yml
rules:
# 80 chars should be enough, but don't fail if a line is longer
line-length:
max: 80
level: warning
# accept both key:
# - item
#
# and key:
# - item
indentation:
indent-sequences: whatever