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