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

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


develop:gitlab

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:gitlab [2022/09/01 03:54]
admin
develop:gitlab [2023/08/01 04:40] (текущий)
admin
Строка 4: Строка 4:
  
 ===== Общее ===== ===== Общее =====
- 
- 
 <details> <details>
 <summary> :!: Установка </summary> <summary> :!: Установка </summary>
Строка 26: Строка 24:
  # Такой вариант тоже должен работать, чтобы не пересобирать после задания адреса  # Такой вариант тоже должен работать, чтобы не пересобирать после задания адреса
 # EXTERNAL_URL="http://gitlab.mysite.ru" yum install gitlab-ee # EXTERNAL_URL="http://gitlab.mysite.ru" yum install gitlab-ee
- 
 </code> </code>
  
Строка 33: Строка 30:
 external_url 'http://gitlab.mysite.ru' => /etc/gitlab/gitlab.rb external_url 'http://gitlab.mysite.ru' => /etc/gitlab/gitlab.rb
 </code> </code>
- 
 </details> </details>
  
  
 +Утилита управления **gitlab-ctl**, (status/start/restart/stop/kill/service-list...)\\
 +GitLab ставится с целым набором нужного себе софта, в т.ч. **postgres**, **prometheus**, **nginx** и т.д.\\
  
  
 <details> <details>
-<summary> :!: </summary>+<summary> :!: Использовать другую инсталляцию веб сервера</summary> 
 +[[https://docs.gitlab.com/omnibus/settings/nginx.html|Процедура описана здесь]]\\ 
 +Рассматриваем использование **Apache**\\ 
 +В файле **/etc/gitlab/gitlab.rb** 
 +<code bash> 
 +nginx['enable'] = false
  
-<code bash>+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"
 </code> </code>
  
-</details> +Включаем модули apache **a2enmod proxyrewrite, proxy_http**\\ 
- +Создаем и включаем виртуальный хост
- +
- +
- +
-===== Работа с Git как таковым ===== +
- +
-[[https://git-scm.com/book/ru/v2|Документация]] +
- +
-===== Общее ===== +
-**Git** как таковой opensource-софт, вся работа выполняется **непосредственно в нем**, системы типа **github / gitlab** это общедоступные **хранилища**, в которых можно размещать репозитории для внешнего хранения, софт так или иначе работает прежде всего с **локальным репозиторием** и уже отдельным действием отправляет данные на внешку.\\ +
 <code bash> <code bash>
-Установка +This configuration has been tested on GitLab 8.2 
-apt git install+# 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
-cd /'project' && git init+
  
-Добавление файлов к проекту +  Ensure that encoded slashes are not decoded but left in their encoded state. 
-git add (file1 file2 ...)+  # http://doc.gitlab.com/ce/api/projects.html#get-single-project 
 +  AllowEncodedSlashes NoDecode
  
-Фиксация изменений (-m коммент, -a применить ко всем либо к указанным файлам) +  <Location /> 
-git commit -m "Text comment" -a (or changed-file1)+    # 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 
-git remote add origin <site>.git+    ProxyPassReverse http://127.0.0.1:8181 
 +    ProxyPassReverse http://<my-site>
 +  </Location>
  
-Отправка на удаленный репозиторий +  Apache equivalent of nginx try files 
-git push origin master +  # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files 
-</code>+  # 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]
  
-**master** главная ветка по умолчанию, создается **первым коммитом**\\+  # 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
  
-<details> +  # Debian and CentOS distribution defaults provided below 
-<summary> :!: Еще команды</summary>+  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
  
-<code bash> +  #For CentOS distributions use 
-Cостояние файлов +  #ErrorLog /var/log/httpd/logs/<my-site>_error.log 
-git status  +  #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
-git branch +
- +
-Переключение веток и загрузка из в рабочий каталог +
-git checkout <существующая ветка+
-git checkout -b <новая ветка+
- +
-Постоянная метка, например для релиза +
-git tag +
- +
-# История коммитов +
-git log <имя ветки> <--all> +
-git log --oneline --decorate --graph --all+
  
 +  #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>
 </code> </code>
 </details> </details>
  
-Коммит это слепок, содержит **blob (большой бинарный) объект**, и хеш сумму каждого файла, в т.ч. дерево каталогов.\\  
-Каждый коммит содержит **ссылку на предыдущий** так формируется цепочка.\\ 
-**Ветка** это ничто иное как **условный указатель** на последний коммит, который будет указан родителем следующему. **Master** абсолютно обычная ветка, просто умолчательная и по наитию используется как основная\\ 
-{{ :develop:git0.jpg?direct&500 |}} 
  
-**HEAD** это указатель на текущуюлокальную ветку, используемую сейчас, увидеть ее можно в команде **git log**\\ +**Удаление**\\ 
-| {{ :develop:git1.jpg?direct&600 |}} | {{ :develop:git2.jpg?direct&600 |}} |+т.к. вместе с ним ставится много всякогопростое удаление не особо почистилопомогло (вроде) несколько команд:\\ 
 +<code bash>
  
-При переходе между ветками, **заменяется все содержимое рабочего каталога**, файлы автоматически подменяются\\+rpm -e gitlab-ce / apt purge gitlab-ce
  
 +find / -name gitlab | xargs rm -rf
  
- + # Просмотр 
-<details> +ps aux | grep gitlab
-<summary> :!: </summary> +
- +
-<code bash>+
 </code> </code>
  
-</details> 
  
  
  
 <details> <details>
-<summary> :!: Old</summary>+<summary> :!: Интеграция с jenkins</summary> 
 +В дженкинсе создан спец пользователь
  
-**Общее** +В проект добавлен пользователь дженкинса, мейнтейнером 
-Есть 4 основных элемента: **Рабочий каталог**, **Промежуточная область****Локальный репозиторий**, **Удаленный репозиторий**\\+ вкладка "Webhooks", выбрана галочка Trigger -> push events и Enable ssl 
 + в интеграциях, включен дженкинс, указан url дженкинса, пользователь, название проекта
  
-{{:develop:git_0.png?direct&400|}}+В проекте генерируем токен доступа, добавляем ему API, галочка в разрешениях, задаем имя 
 + после этого, в участниках проекта добавляется пользователь, с этим именем 
 +В дженкинсе, создаем запись кредлов, с таким же названием 
 + выбираем тип "GitLab API token", название задаем точно такое же 
 +В джобе выбран "GitLab Connections", созданный пользователь дженкинса 
 + и выбрана "Use alternative credentials", тут указан токен из проекта
  
-  * **git add** - добавление файла из рабочего каталога в промежуточную область 
-  * **git commit** - из промежуточной области в локальный репозиторий 
-  * **git push** - загрузка из локального репозитория в удаленный  
-  * **git fetch** - скачивание из удаленного репозитория в локальный 
-  * **git merge** - перенос из локального репозитория в рабочий каталог 
-  * **git pull** - получение удаленного репозитория сразу в рабочий каталог, две предыдущие команды вместе 
  
 +в пайплайне выполняются джобы
 + эти джобы транслиются на дженкинс джобы
 + в качестве раннеров должна выступать джобы дженкинса
  
-** Установка ** 
-Нормальный клиент здесь- [[https://gitforwindows.org/]]\\ 
-После установки делаем подпись, в "git bash" пишем: 
 <code bash> <code bash>
-$ git config --global user.name "YourName" 
-$ git config --global user.mail "YourMail" 
-$ git config --global -- list 
 </code> </code>
  
 +</details>
  
-** Доступ SSH ** 
-Затем настраиваем сертификат, для без парольного доступа.\\ 
-git bash: 
-<code bash> 
-# Генерация ключевой пары (можно: -t rsa -b 4096 -C) 
-$ ssh-keygen -t ed25519 -C "YourEMail" 
-</code> 
  
-Вводим имя файла, парольную фразу можно не вводить, чтобы не вводить ее при каждом обращении в git\\ 
-После завершения, файлы будут в домашней директории пользователя, помещаем их в "~/.ssh" \\ 
-закрытый ключ переименовываем в "id_rsa" (тут **неясный момент!**)\\ 
-Содержимое открытого ключа (".pub") копируем при создании ключа в лк git'a, там нужно добавить ключ, с содержанием этого открытого ключа\\ 
  
-Так же нужно добавить созданных ключ агенту авторизации 
-<code bash> 
-$ eval "$(ssh-agent -s)" 
-$ ssh-add ~/.ssh/id_ed25519 
-</code> 
  
-После пишем: **"$ 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**"\\ 
- 
- 
-** Дополнительно ** 
-<code bash> 
-# Изменения в файлах: 
-$ git diff 
- 
-# История фиксаций:  
-$ git diff- ???? 
- 
-# Мержинг если есть конфликты коммитов 
-$ git merge --allow-unrelated-histories 
-</code> 
- 
- 
-</details> 
  
  
  
develop/gitlab.1662004445.txt.gz · Последнее изменение: 2022/09/01 03:54 — admin