Gitlab-ci пример

В материале приведен пример файла .Gitlab-ci с запуском тестов. Статья является продолжением вводного материала про Gitlab-ci

 

Gitlab-ci.yml

mcedit .gitlab-ci.yml

image: ubuntu:latest
variables:
  TEST_NAME: registry.gitlab.com/smth/gitlab-cicd.git:CI_REF_NAME
stages:
  - build
  - run

build_docker_image:
  stage: build
  script:
    - docker login -u USER -p $runnerPass registry.gitlab.com
    - docker build -t $TEST_NAME
    - docker push $TEST_NAME
  tags:
  - build
    
    
run:
  stage: run
  script:
    - docker login -u USER -p $runnerPass registry.gitlab.com
    - docker pull -t $TEST_NAME
    - docker kill $(docker ps -q) || true
    - docker rm $(docker ps -a -q) || true
    - docker run -dt -p 8080:80 --name gitlabCICDContainer $TEST_NAME
  tags:
  - run



Runner-ы с указанными тэгами должны быть зарегистрированы.

В интерфейсе Gitlab нужно нажать «check «piplines».


Тесты будут запущены после push в репозиторий.

git add remote origin https://…

git push origin base_app




Полный пример .gitlab-ci.yml для приложения

image: ubuntu:latest
variables:
  WORK_DIR: ${CI_PROJECT_NAME}
  BRANCH: ${CI_COMMIT_REF_NAME}
  REPO: https://gitlab.com/smth/gitlab-cicd.git
stages:
  - test
  - deploy

test:
  stage: test
  environment: 
    name: Test
    url: "$TST_URL"
  before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  script:
    - ssh-add <(echo "$PRIVATE_KEY")
    - rm -rf .git
    - ssh -o StrictHostKeyChecking=no ubuntu@"$TST_SERVER" "rm -rf ~/${WORK_DIR}; mkdir ~/${WORK_DIR}; git init; git clone -b ${BRANCH} ${REPO}; cd ${WORK_DIR}; npm install; npm install forever -g; npm run stop; npm run ci"
  only:
    - branches
  except:
    - master
    
    
deploy:
  stage: deploy
  environment: 
    name: Production
    url: "$PRD_URL"
  before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  script:
    - ssh-add <(echo "$PRIVATE_KEY")
    - rm -rf .git
    - ssh -o StrictHostKeyChecking=no ubuntu@"$PRD_SERVER" "rm -rf ~/${WORK_DIR}; mkdir ~/${WORK_DIR}; git init; git clone -b ${BRANCH} ${REPO}; cd ${WORK_DIR}; npm install; npm install forever -g; npm run stop; npm run start-background"
  only:
    - master





 

Читайте про Gitlab Runner и регистрацию Docker Runner-ов.

Sanitize function в Python

Sanitize function в Python — функция, которая позволяет приводить элементы вида ключ-значение к единому виду устанавливая одинаковые разделители.

Читать далее