Инструменты пользователя

Инструменты сайта


develop:gitlab

Это старая версия документа!


GitLab

Общее

:!: Установка

Советуют установку доп компонентов

yum install curl policycoreutils-python postfix
apt install curl openssh-server ca-certificates
 # Установка репозитория через скрипт
 # Отличаются **gitlab-ce** и **gitlab-еe**- бесплатная и коммерческая с-но
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
 
 # Далее ставим из пакета
apt install gitlab-ce
 
 # Такой вариант тоже должен работать, чтобы не пересобирать после задания адреса
# EXTERNAL_URL="http://gitlab.mysite.ru" yum install gitlab-ee

Для указания адреса по которому будет доступен сервис

external_url 'http://gitlab.mysite.ru' => /etc/gitlab/gitlab.rb

Утилита управления gitlab-ctl, (status/start/restart/stop/kill/service-list…)
GitLab ставится с целым набором нужного себе софта, в т.ч. postgres, prometheus, nginx и т.д.

:!: Использовать другую инсталляцию веб сервера

Процедура описана здесь
Рассматриваем использование Apache

В файле /etc/gitlab/gitlab.rb

nginx['enable'] = false
 
web_server['external_users'] = ['www-data']
 
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listenUmask'] = "0"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
gitlab_workhorse['authBackend'] = "http://127.0.0.1:8080"

Включаем модули apache a2enmod proxy, rewrite, proxy_http
Создаем и включаем виртуальный хост

# This configuration has been tested on GitLab 8.2
# Note this config assumes unicorn is listening on default port 8080 and
# gitlab-workhorse is listening on port 8181. To allow gitlab-workhorse to
# listen on port 8181, edit /etc/gitlab/gitlab.rb and change the following:
#
# gitlab_workhorse['listen_network'] = "tcp"
# gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
#
#Module dependencies
# mod_rewrite
# mod_proxy
# mod_proxy_http
<VirtualHost *:80>
  ServerName <my-site>
  ServerSignature Off
 
  ProxyPreserveHost On
 
  # Ensure that encoded slashes are not decoded but left in their encoded state.
  # http://doc.gitlab.com/ce/api/projects.html#get-single-project
  AllowEncodedSlashes NoDecode
 
  <Location />
    # New authorization commands for apache 2.4 and up
    # http://httpd.apache.org/docs/2.4/upgrading.html#access
    Require all granted
 
    #Allow forwarding to gitlab-workhorse
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://<my-site>/
  </Location>
 
  # Apache equivalent of nginx try files
  # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files
  # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab
  RewriteEngine on
 
  #Forward all requests to gitlab-workhorse except existing files like error documents
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
 
  # needed for downloading attachments
  DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
 
  #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
  ErrorDocument 404 /404.html
  ErrorDocument 422 /422.html
  ErrorDocument 500 /500.html
  ErrorDocument 502 /502.html
  ErrorDocument 503 /503.html
 
  # Debian and CentOS distribution defaults provided below
  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
 
  #For CentOS distributions use
  #ErrorLog /var/log/httpd/logs/<my-site>_error.log
  #CustomLog /var/log/httpd/logs/<my-site>_forwarded.log common_forwarded
  #CustomLog /var/log/httpd/logs/<my-site>_access.log combined env=!dontlog
  #CustomLog /var/log/httpd/logs/<my-site>.log combined
 
  #For Debian distributions use
  ErrorLog /var/log/apache2/<my-site>_error.log
  CustomLog /var/log/apache2/<my-site>_forwarded.log common_forwarded
  CustomLog /var/log/apache2/<my-site>_access.log combined env=!dontlog
  CustomLog /var/log/apache2/<my-site>.log combined
</VirtualHost>
:!:
 

Работа с Git как таковым

Общее

Git как таковой opensource-софт, вся работа выполняется непосредственно в нем, системы типа github / gitlab это общедоступные хранилища, в которых можно размещать репозитории для внешнего хранения, софт так или иначе работает прежде всего с локальным репозиторием и уже отдельным действием отправляет данные на внешку.

# Установка
apt git install
 
# Инициализация проекта
cd /'project' && git init
 
# Добавление файлов к проекту
git add . (file1 file2 ...)
 
# Фиксация изменений (-m коммент, -a применить ко всем либо к указанным файлам)
git commit -m "Text comment" -a (or changed-file1)
 
# Добавить удаленный репозиторий
git remote add origin <site>.git
 
# Отправка на удаленный репозиторий
git push origin master

master главная ветка по умолчанию, создается первым коммитом

:!: Еще команды
# Cостояние файлов
git status 
 
# Менеджер веток
git branch
 
# Переключение веток и загрузка из в рабочий каталог
git checkout <существующая ветка>
git checkout -b <новая ветка>
 
# Постоянная метка, например для релиза
git tag
 
# История коммитов
git log <имя ветки> <--all>
git log --oneline --decorate --graph --all

Коммит это слепок, содержит blob (большой бинарный) объект, и хеш сумму каждого файла, в т.ч. дерево каталогов.
Каждый коммит содержит ссылку на предыдущий так формируется цепочка.
Ветка это ничто иное как условный указатель на последний коммит, который будет указан родителем следующему. Master абсолютно обычная ветка, просто умолчательная и по наитию используется как основная

HEAD это указатель на текущую, локальную ветку, используемую сейчас, увидеть ее можно в команде git log

При переходе между ветками, заменяется все содержимое рабочего каталога, файлы автоматически подменяются

:!:
 
:!: Old

Общее Есть 4 основных элемента: Рабочий каталог, Промежуточная область, Локальный репозиторий, Удаленный репозиторий

  • git add - добавление файла из рабочего каталога в промежуточную область
  • git commit - из промежуточной области в локальный репозиторий
  • git push - загрузка из локального репозитория в удаленный
  • git fetch - скачивание из удаленного репозитория в локальный
  • git merge - перенос из локального репозитория в рабочий каталог
  • git pull - получение удаленного репозитория сразу в рабочий каталог, две предыдущие команды вместе

Установка Нормальный клиент здесь- https://gitforwindows.org/
После установки делаем подпись, в «git bash» пишем:

$ git config --global user.name "YourName"
$ git config --global user.mail "YourMail"
$ git config --global -- list

Доступ SSH Затем настраиваем сертификат, для без парольного доступа.
git bash:

# Генерация ключевой пары (можно: -t rsa -b 4096 -C)
$ ssh-keygen -t ed25519 -C "YourEMail"

Вводим имя файла, парольную фразу можно не вводить, чтобы не вводить ее при каждом обращении в git
После завершения, файлы будут в домашней директории пользователя, помещаем их в «~/.ssh»
закрытый ключ переименовываем в «id_rsa» (тут неясный момент!)
Содержимое открытого ключа («.pub») копируем при создании ключа в лк git'a, там нужно добавить ключ, с содержанием этого открытого ключа

Так же нужно добавить созданных ключ агенту авторизации

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_ed25519

После пишем: «$ ssh -T git@github.com» (можно добавить -vT, для расширенного вывода), для принятия сертификата, в ответе должна фигурировать строка типа: «Hi «YourName»! You've successfully authenticated, but GitHub does not provide shell access», если так, тогда все норм

Траблы с тортилой

При установке стоило совершить один неверный шаг и выбрать тортилу как транспорт, п*зда, от нее нет спасения, работать она не работает, с таким подходом во всяком случае, и сменить никак не удавалось долгое время, в итоге заменил переменную окружения GIT_SSH, установил путь к стандартной утилите («C:\Program Files\Git\usr\bin\ssh.exe») и заработало.

Использование Репозитории создаются и далее привязаны к конкретным каталогам, для работы с репозиторием нужно перейти в его каталог.

Инициализация репозитория Переходим в созданный каталог: «$ git init«

Добавление файлов Добавление в промежуточную область: «$ git add .«
Точка добавит все, можно указать конкретные, либо маску
Просмотр состояния: «git status»

Фиксация изменений Фиксация изменений в файлах: «$ git commit -m «text-comment»«
Отмена фиксации: «$ git reset HEAD~1«

Удаленный источник Добавление: «$ git remote add origin <repo-url>«
Список доступных: «$ git remote -v«

Дополнительно

# Изменения в файлах:
$ git diff
 
# История фиксаций: 
$ git diff- ????
 
# Мержинг если есть конфликты коммитов
$ git merge --allow-unrelated-histories
develop/gitlab.1662017397.txt.gz · Последнее изменение: 2022/09/01 07:29 — admin