Skip to content

killakazzak/8-3-gitlab-hw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание к занятию "GitLab" - Тен Денис

Задание 1

Что нужно сделать:

  1. Разверните GitLab локально, используя Vagrantfile и инструкцию, описанные в этом репозитории.
  2. Создайте новый проект и пустой репозиторий в нём.
  3. Зарегистрируйте gitlab-runner для этого проекта и запустите его в режиме Docker. Раннер можно регистрировать и запускать на той же виртуальной машине, на которой запущен GitLab.

В качестве ответа в репозиторий шаблона с решением добавьте скриншоты с настройками раннера в проекте.


Решение Задание 1

Установка Virtualbox

echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee -a /etc/apt/sources.list
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo apt update
sudo apt install virtualbox
vboxmanage --version

image

Установка Vagrant

wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant
vagrant --version

image

Установка Gitlab

Модифицированный Vagranfile

echo '192.168.56.10    gitlab.localdomain gitlab' >> /etc/hosts
VAGRANT_EXPERIMENTAL="disks" vagrant up

Создание проекта с репозиторием

image

Регистрация Gitlab runner

 docker run -ti --rm --name gitlab-runner \
     --network host \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     gitlab/gitlab-runner:latest register

Меняем конфигурацию gitlab runner

vim /srv/gitlab-runner/config/config.toml
concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0

[session_server]
  session_timeout = 1800


[[runners]]
  name = "ubuntu-client.dit.local"
  url = "http://gitlab.localdomain:8090/"
  id = 3
  token = "4A4Cu_xkySsy2wWxK_aC"
  token_obtained_at = 2024-03-15T14:53:33Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.docker]
    tls_verify = false
    image = "go.1.17"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    extra_hosts = ["gitlab.localdomain:10.159.86.32"]
    shm_size = 0
    network_mtu = 0

Запуск gitlab runner

 docker run -d --name gitlab-runner --restart always \
     --network host \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     gitlab/gitlab-runner:latest

image

Проверка

docker ps -a

image

image image

Задание 2

Что нужно сделать:

  1. Запушьте репозиторий на GitLab, изменив origin. Это изучалось на занятии по Git.
  2. Создайте .gitlab-ci.yml, описав в нём все необходимые, на ваш взгляд, этапы.

В качестве ответа в шаблон с решением добавьте:

  • файл gitlab-ci.yml для своего проекта или вставьте код в соответствующее поле в шаблоне;
  • скриншоты с успешно собранными сборками.

Решение Задание 2

git remote add my_origin_2 http://gitlab.localdomain:8090/my_group/my_project_2.git
git remote set-url my_origin_2 http://lamos:glpat-CLj1agRTX8Lv5vSXaJgb@gitlab.localdomain:8090/my_group/my_project_2.git
cd /git/sdvps-materials/
git push my_origin_2

image

vim /git/sdvps-materials/.gitlab-ci.yml
stages:
  - test
  - build

test:
  stage: test
  image: golang:1.17
  script: 
   - go test .

build:
  stage: build
  image: docker:latest
  script:
   - docker build .

image

image

Дополнительные задания* (со звёздочкой)

Их выполнение необязательное и не влияет на получение зачёта по домашнему заданию. Можете их решить, если хотите лучше разобраться в материале.


Задание 3*

Измените CI так, чтобы:

  • этап сборки запускался сразу, не дожидаясь результатов тестов;
  • тесты запускались только при изменении файлов с расширением *.go.

В качестве ответа добавьте в шаблон с решением файл gitlab-ci.yml своего проекта или вставьте код в соответсвующее поле в шаблоне.

Решение Задание 3*

Модифицируем CI

vim /git/sdvps-materials/.gitlab-ci.yml
stages:
  - build
  - test

build:
  stage: build
  image: docker:latest
  script:
    - docker build .

test:
  stage: test
  image: golang:1.17
  script:
    - |
      if [[ $CI_COMMIT_REF_NAME == "main" ]] && [[ $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "web" ]]; then
        if [[ ! -z $(git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA -- '*.go') ]]; then
          go test .
        else
          echo "No Go files were changed. Skipping tests."
        fi
      else
        echo "Skipping tests as it's not a main branch push or web pipeline event."
      fi

Проверка

image

Без изменения Go файлов

image

C изменениями Go файлов

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published