В материале приведен пример файла .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 [email protected]"$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 [email protected]"$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-ов.