DevOps или CI/CD, как его обычно называют, — это практика, которая включает в себя автоматизацию всего и всего, что мы можем от написания нашего кода для его развертывания. Большую часть времени вы просто опираетесь на существующие знания, просто используя инструменты, предоставляемые вам для автоматизации определенных повторяющихся частей цикла разработки программного обеспечения. Такие вещи, как запуск тестов, снятие кода или развертывание в вашей производственной среде; Они часто повторяются и влияют на вашу производительность в качестве разработчика. Но если мы являемся разработчиками Super Hero, мы бы использовали инструменты CI/CD для автоматического выполнения всего этого для нас, когда мы перемещаем наш код в наш репозиторий. К концу этой статьи вы будете использовать CI/CD для автоматизации вашего рабочего процесса и стать разработчиком супергероя, давайте расшифруем, какой этот термин на самом деле. Я буду использовать Circle-Ci для настройки этого рабочего процесса. Давайте погрузимся в ..
Непрерывная интеграция — CI
Непрерывная интеграция связана со всеми практиками, направленными на автоматизацию процесса добавления нового кода в базу кода, у нас может быть проект, с которым мы работаем в одиночку или с некоторым другим разработчиком, мы можем настроить конвейер CI, который будет проверять любой новый код это добавляется в базу кода, это будет сосредоточиться на написании кода процесс.
- Отправляйтесь в Круг CI Чтобы создать учетную запись, когда вы закончите, создайте пустой репозиторий GIT на GitHub.
- Вернитесь к своей панели инструментов Circle-Ci, нажмите на
Проекты
и создать новый проект. - Выберите из раскрывающегося репо-репозитория, который вы только что создали Circle-Ci, автоматически даст вам настройку, с которой вы можете запустить рабочий процесс.
Если вы обратите внимание на журналы в проекте на вашей панели инструментов, вы увидите информацию о процессе, и это скажет вам, почему ваш рабочий процесс потерпел неудачу, если это произойдет. Обычно это не удастся впервые, потому что мы не добавили никакого кода или зависимостей, давайте сделаем это и сделаем это.
Предполагая фиктивный проект, и у нас есть некоторый тест, который мы хотим автоматизировать с помощью нашего рабочего процесса, структура проекта выглядит так;
Root-------------/spec/ |---/node_modules/ |--.gitignore |--package.json |--package.lock.json
Наши тесты содержатся в папке Spect, и я не буду вдаваться в подробности и не показывать какой -либо пример кода о тестах, потому что он выходит за рамки этой статьи. Нам нужно добавить несколько файлов конфигурации Circle-CI, чтобы определить рабочий процесс, который поможет нам автоматизировать наш тест. Сначала создайте каталог в корневой папке, и его следует назвать .circleci
и создать файл config.yml
Внутри этой папки. Это должно дать вам большой намек, файл конфигурации для настройки рабочего процесса Circle-CI записан в YML, если вы использовали ацитоны GitHub, то процесс становится намного проще.
Root-------------/spec/ |---/node_modules/ |--.gitignore |--package.json |--package.lock.json |--/.circleci/config.yml
Давайте посмотрим на фактическую структуру config.yml
файл
# You must choose a version of circle ci you want to use, all config files requires this version: 2.1 # You can use already packaged circle ci workflows, they are called orbs orbs: node: circleci/node@4.1 # We use the orbs for creating a node js workflow jobs: # This is where we define our actual process, each process is classified into a job. we can run multiple jobs # Each job should have a name, you can call it whatever you like test-code: # Executor, we must define one, you can use circle-ci's docker executors or your own custom docker executors docker: - image: cimg/node:15.1 # next we define the steps involved in creating the workflow steps: # Checkout the code as the first step. move our code to the host machine - checkout # Install our dependencies with npm, we can use circleci to cache dependencies them for future use - node/install-packages # We specify commands to run, each command has a name and the actual terminal command like below - run: name: Run tests command: npm test workflows: # Below is the definition of your workflow. # Inside the workflow, you provide the jobs you want to run, e.g this workflow runs the test-my-code job above. # CircleCI will run this workflow on every commit. sample: jobs: - test-code
Если вы сохраните этот файл, посвятите его и подтолкните его в репо, связанный с вашим проектом Circle-CI, рабочий процесс сразу же запустится, и вы должны увидеть результат рабочего процесса и журналов из процесса на вашей панели инструментов, он позволит вам Посмотрите, что пошло не так, чтобы вы знали, как его заняться, если тест пройдет, вы можете слияние с базой кода, и именно здесь появляется непрерывное развертывание.
Непрерывное развертывание
Если непрерывная интеграция заключается в добавлении нового кода в существующую базу кода, то непрерывное развертывание связано с автоматизацией развертывания вновь добавленных кодированных. Вы можете запустить свою команду развертывания непосредственно из терминала после работы над своим проектом, но не имеет смысла автоматизировать ваши тесты, а затем вручную развернуть свой код? Но мы являемся разработчиками супергероев, поэтому мы создадим конвейер CD CI-CI, чтобы помочь нам автоматизировать развертывание нашего кода, мы будем развертываться в хостинге Firebase, поэтому я предполагаю, что вы уже знакомы с Firebase. Предполагая, что наш рабочий каталог сейчас содержит проект Firebase, который мы хотим развернуть. Очевидно, что нам нужно получить наши учетные данные для входа в систему, которые мы можем использовать на компакт -диске.
Из командной строки запустить
Вход в Firebase: CI
Анкет Это вернет нам учетные данные для входа в командную строку, скопируйте учетные данные.Перейдите к своей панели Circle-Ci, перейдите к текущему проекту, на который мы настраиваем CI, введите настройки проекта.
В настройках проекта выберите переменные среды и добавьте новую переменную среды.
Это имя должно быть
Firebase_token
Вставьте в учетные данные для входа, которые Firebase дала нам как ее ценность.
Возвращаясь к вашим местным проектам, мы внесем некоторые изменения в наши config.yml
Мы будем добавлять две команды, одну для создания проекта, а другая для развертывания проекта.
# PAY ATTENTION TO NEW JOBS ADDED version: 2.1 orbs: node: circleci/node@4.1 jobs: test-and-deploy-code: docker: - image: cimg/node:15.1 # next we define the steps involved in creating the workflow steps: - checkout - node/install-packages - run: name: Run tests command: npm test # This command builds the project, e.g a react or angular project - run: name: Build Project command: npm run build # This command deploys to the project to firebase using the FIREBASE_TOKEN we set earlier - run: name: Deploy Project command: ./node_modules/.bin/firebase deploy --token "$FIREBASE_TOKEN" workflows: sample: jobs: - test-and-deploy-code
Теперь, если вы сохраните коммит и подведете свой локальный проект в GitHub, Circle-Ci немедленно запустит ваш рабочий процесс для тестирования, создания и развертывания проекта. Но не имеет смысла развернуть проект каждый раз, когда есть коммит. Таким образом, вы, возможно, захотите создать еще одну филиал, продолжить работу и подтолкнуть код в репозиторий с помощью этой новой филиала, поэтому в любое время, когда есть запрос на притяжение в главную филиал, мы можем сказать Cirlce-Ci для запуска нашего рабочего процесса.
- Введите настройки проекта на приборной панели Circle-Ci.
- Нажмите на расширенные настройки.
- Включите
Только строительские запросы на вытягивание
Анкет
Вот и все для этой статьи, я надеюсь, что вы найдете это полезным, возможно, мы увидим, как настроить конвейеры для тестирования и развертывания на других платформах в будущем.
Оригинал: «https://dev.to/kalashin1/setting-up-ci-cd-pipeline-with-circle-ci-49i9»