инструмент_gitlab

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
инструмент_gitlab [2025/03/17 18:51]
val [Пример CI с использованием контейнеров]
инструмент_gitlab [2025/10/15 06:43] (current)
val [Управление пользователями]
Line 24: Line 24:
 server# time EXTERNAL_URL="​http://​$(hostname)"​ apt-get install gitlab-ce server# time EXTERNAL_URL="​http://​$(hostname)"​ apt-get install gitlab-ce
 ... ...
-real    ​38m49.787s  !!! Загрузка может прерываться,​ надо повторять команду !!!+real    ​122m54.883s  !!! Загрузка может прерываться,​ надо повторять команду !!!
 .. ..
 </​code>​ </​code>​
Line 39: Line 39:
 # cat docker-compose.yml # cat docker-compose.yml
 </​code><​code>​ </​code><​code>​
-version: '​3.6'​+#version: '​3.6'​
 services: services:
   web:   web:
 +#  gitlab:
     image: '​gitlab/​gitlab-ce:​latest'​     image: '​gitlab/​gitlab-ce:​latest'​
 #    image: '​gitlab/​gitlab-ce:​16.7.4-ce.0'​ #    image: '​gitlab/​gitlab-ce:​16.7.4-ce.0'​
 +#    userns_mode:​ '​host'​
     restart: always     restart: always
     hostname: '​server.corpX.un'​     hostname: '​server.corpX.un'​
Line 72: Line 74:
 # docker-compose up -d # docker-compose up -d
  
-# docker ​logs root_web_1 ​-n 10 -f+# docker-compose logs -f
  
 ### docker-compose stop ### docker-compose stop
Line 88: Line 90:
  
 ==== Подключение через API ==== ==== Подключение через API ====
 +
 +=== проект ===
  
   * Токен доступа:​ Settings -> Access Tokens ([[https://​docs.gitlab.com/​ee/​user/​project/​settings/​project_access_tokens.html|Project access tokens]]), в примере достаточно role: Reporter, Scopes: api   * Токен доступа:​ Settings -> Access Tokens ([[https://​docs.gitlab.com/​ee/​user/​project/​settings/​project_access_tokens.html|Project access tokens]]), в примере достаточно role: Reporter, Scopes: api
Line 108: Line 112:
  
 export BR=main; bash <(curl -s http://​gate.corp13.un/​api/​v4/​projects/​1/​repository/​files/​start.sh/​raw?​ref=$BR) export BR=main; bash <(curl -s http://​gate.corp13.un/​api/​v4/​projects/​1/​repository/​files/​start.sh/​raw?​ref=$BR)
 +</​code>​
 +
 +=== REST API интерфейс ===
 +
 +  * Search or go to... -> Profile -> Access tokens -> Add new token -> api -> Create token
 +
 +== Добавление пользователя ==
 +
 +<​code>​
 +GITLAB_URL="​https://​server.corp13.un:​4443" ​
 +PRIVATE_TOKEN="​NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"​
 +
 +USER_EMAIL="​student@corp13.un"​
 +USER_PASSWORD="​Pa\$\$w0rd"​
 +USER_USERNAME="​student"​
 +USER_NAME="​Your Name"
 +
 +curl --header "​PRIVATE-TOKEN:​ $PRIVATE_TOKEN"​ \
 +     ​--header "​Content-Type:​ application/​json"​ \
 +     ​--request POST \
 +     ​--data "{ \"​email\":​ \"​$USER_EMAIL\",​ \"​password\":​ \"​$USER_PASSWORD\",​ \"​username\":​ \"​$USER_USERNAME\",​ \"​name\":​ \"​$USER_NAME\",​ \"​admin\":​ true }" \
 +     "​$GITLAB_URL/​api/​v4/​users"​ -k
 </​code>​ </​code>​
 ===== Настройка ===== ===== Настройка =====
Line 222: Line 248:
   * [[Установка и настройка OpenLDAP]]   * [[Установка и настройка OpenLDAP]]
   * [[Хранение учетных записей UNIX в LDAP]] !!! с атрибутом почты и паролем   * [[Хранение учетных записей UNIX в LDAP]] !!! с атрибутом почты и паролем
 +  * [[Решение FreeIPA]]
  
 <​code>​ <​code>​
Line 234: Line 261:
     host: '​server.corpX.un'​     host: '​server.corpX.un'​
 #    host: '​server2.corpX.un'​ #    host: '​server2.corpX.un'​
 +#    host: '​192.168.X.10'​
     port: 389     port: 389
 #    uid: '​uid'​ #    uid: '​uid'​
Line 239: Line 267:
 #    bind_dn: '​cn=admin,​dc=corpX,​dc=un'​ #    bind_dn: '​cn=admin,​dc=corpX,​dc=un'​
 #    password: '​secret'​ #    password: '​secret'​
 +#    bind_dn: '​uid=admin,​cn=users,​cn=accounts,​dc=corpX,​dc=un'​
 +#    password: '​strongpassword'​
     bind_dn: '​cn=Administrator,​cn=Users,​dc=corpX,​dc=un'​     bind_dn: '​cn=Administrator,​cn=Users,​dc=corpX,​dc=un'​
     password: '​Pa$$w0rd'​     password: '​Pa$$w0rd'​
Line 260: Line 290:
 <​code>​ <​code>​
 # wget http://​gate.isp.un/​unix/​Git/​gitlab-runner_amd64.deb ​              # Version: 17.3.1-1 # wget http://​gate.isp.un/​unix/​Git/​gitlab-runner_amd64.deb ​              # Version: 17.3.1-1
- 
-##2 часа## curl -LJO "​https://​gitlab-runner-downloads.s3.amazonaws.com/​latest/​deb/​gitlab-runner_amd64.deb"​ 
  
 # dpkg -i gitlab-runner_amd64.deb # dpkg -i gitlab-runner_amd64.deb
 +
 +## Может занять 2 часа ## 
 +# ###curl -LJO "​https://​s3.dualstack.us-east-1.amazonaws.com/​gitlab-runner-downloads/​latest/​deb/​gitlab-runner-helper-images.deb"​
 +# ###curl -LJO "​https://​s3.dualstack.us-east-1.amazonaws.com/​gitlab-runner-downloads/​latest/​deb/​gitlab-runner_amd64.deb"​
 +# ###dpkg -i gitlab-runner-helper-images.deb gitlab-runner_amd64.deb
 </​code>​ </​code>​
 ==== Регистрация ==== ==== Регистрация ====
Line 425: Line 458:
   script:   script:
     - ansible-playbook openvpn1.yaml -i inventory.yaml -e "​variable_host=test_nodes"​     - ansible-playbook openvpn1.yaml -i inventory.yaml -e "​variable_host=test_nodes"​
 +#    - echo $ANS_V_SEC | ansible-playbook openvpn1.yaml -i inventory2.yaml --vault-password-file=/​bin/​cat -e "​variable_host=test_nodes"​
   tags:   tags:
-    ​- openvpn1deploy +    - ansible
-#    ​- ansible+
   only:   only:
     - test     - test
Line 435: Line 468:
   script:   script:
     - ansible-playbook openvpn1.yaml -i inventory.yaml     - ansible-playbook openvpn1.yaml -i inventory.yaml
 +#    - echo $ANS_V_SEC | ansible-playbook openvpn1.yaml -i inventory2.yaml --vault-password-file=/​bin/​cat
   tags:   tags:
-    ​- openvpn1deploy +    - ansible
-#    ​- ansible+
   only:   only:
-#    - master +    ​- main
-#    ​- main+
 </​code>​ </​code>​
  
Line 537: Line 569:
 ==== Пример shell Kubernetes ==== ==== Пример shell Kubernetes ====
  
 +<​code>​
 +kube1:​~/​gowebd-k8s#​ cat .gitlab-ci.yml
 +</​code><​code>​
 +stages:
 +  - deploy
 +
 +#variables:
 +#  HELM_NAMESPACE:​ "​my-ns"​
 +
 +trigger-deploy:​
 +  stage: deploy
 +  rules:
 +    - if: '​$CI_PIPELINE_SOURCE == "​pipeline"​ && $VER'
 +  script:
 +    - env
 +    - envsubst < my-webd-deployment-env.yaml | kubectl apply -f - -n my-ns
 +#    - helm upgrade -i my-webd webd-chart/ --set=image.tag=$VER --create-namespace
 +  tags:
 +    - k8s-deploy
 +
 +manual-deploy:​
 +  stage: deploy
 +  when: manual
 +  variables:
 +    VER: "​$MY_WEBD_VER" ​ # New Pipeline or Settings->​CI/​CD->​Variables
 +  script:
 +    - env
 +    - envsubst < my-webd-deployment-env.yaml | kubectl apply -f - -n my-ns
 +#    - helm upgrade -i my-webd webd-chart/ --set=image.tag=$VER --create-namespace
 +  tags:
 +    - k8s-deploy
 +</​code>​
 +
 +== старый вариант ==
 <​code>​ <​code>​
 gitlab-runner@server:​~/​webd$ cp my-webd-deployment.yaml my-webd-deployment-env.yaml gitlab-runner@server:​~/​webd$ cp my-webd-deployment.yaml my-webd-deployment-env.yaml
Line 588: Line 654:
 stages: stages:
 #  - lint #  - lint
 +#  - prebuildtest
   - build   - build
 #  - test #  - test
Line 692: Line 759:
 #    - tags #    - tags
  
 +#Unit test:
 +#  stage: prebuildtest
 +#  script:
 +#    - export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
 +#    - poetry install
 +#    - poetry run python3 -m unittest
 +#  except:
 +#    - tags
 +#  tags:
 +#    - build
  
 #Deploy: #Deploy:
инструмент_gitlab.1742226684.txt.gz · Last modified: 2025/03/17 18:51 by val