Настройка CI/CD на GitHub

Пришлось мне тут срочно перtезжать с bitbacker на GitHub, т.к. битбаскет забанил всех русских разрабов, мудаки…

На битбакете настройка CI/CD решается буквально нажатием пару кнопок, тут же, пришлось повозиться и так расскажу как это было и как настроить быстро за 5 минут буквально. Если знаешь что делать, то делается это быстро, а так потратил пару дней на изучение проблемы.

Я расскажу ТОЛЬКО про настройку CI/CD, без всяких тестов и т.п. только развертывания того, что вы накодили локально и после push, чтобы это быстро задеплоилось на ваш VPS(сервер).

И так ситуация вы создали репозиторий на гитхабе, залили свои локальные изменения, и теперь встал вопрос как это залить на ваш хостинг.

 Настройка сервера

Зайдите в папку своего проекта и сделайте инициализацию проекта:

git init

Затем выполните:

git remote add origin git@github.com:feniksdv/microfo.git

Перво-наперво надо сгенерировать локально ваши ssh ключи, если они у вас уже есть и по ssh вы заходите на свой сервер, то этот шаг пропускаем.

Выполните команду, данная командо подходит как для windows, так и для Linux. Для винды нажмите ctrl+r напишите cmd и нажмите ок, а там вводим команду ниже. Для линукса, все выполняемся в терминале.

ssh-keygen

В процессе генерации ключей будут задаваться вопросы, на все отвечаем просто нажатием enter.

Затем у вас в папке .ssh появится два файла id_rsa, id_rsa.pub

У меня сервер крутиться на centos возможно у вас пути могут отличаться.

Берем оба файла и заливаем на сервер в папку root(если у вас есть другой пользователь, то лучше в его папку)/.ssh и прям внутрь этой папки кидаем оба файла.

Дальше если у вас в папке .ssh нет файла authorized_keys, то создаем его. открываем ключ id_rsa и коипуруем из него все в authorized_keys. Все.

Если вы сделали все правильно, то через командную строку можно ввести у себя на компе:

ssh -i .ssh/id_rsa root@ХХ.ХХ.ХХ.ХХ

Вы должны подключиться на сервер свой по ssh без пароля. ХХ.ХХ.ХХ.ХХ – в место это пишите ip своего сервера.

Настройка Actions GitHub

Переходим в свой репозиторий и переходим в settings/ Secrets and variables / Actions

Настройка CI/CD на GitHub

У вас должно получиться так же как и у меня.

  • DEPLOY_HOST – тут просто ip вашего сервера.
  • DEPLOY_USER – тут имя вашего пользователя.
  • DEPLOY_KEY – тут вставляете приватный ключ т.е. содержимое файла id_rsa.

Push

Локально создаем в своем проекте в корне папку с файлом .github/workflows/cicd.yml

Настройка CI/CD на GitHub

и теперь внутрь файла вставляем следующий текст.

name: CICD
on:
  push:
    branches:
      - master
jobs:
  deploy:
    name: deploy only changed-files
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/master'
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Run command on remote server
        uses: D3rHase/ssh-command-action@v0.2.2
        with:
          host: ${{secrets.DEPLOY_HOST}}
          user: ${{secrets.DEPLOY_USER}}
          private_key: ${{secrets.DEPLOY_KEY}}
          command: |
            /var/www/microfo/data/www/microfo/cicd.sh;

ЗЫ: будут загружаться на сервер, только изменённые файлы.

В этом файле поправьте следующие строки:

  1. Пятая строка с верху, у меня написано – master, если вы хотите указать другую ветку при пуше в которую должен запускаться сicd, то сделайте это =)
  2. Последняя строчка command: “/var/www/mocrofo/data/www/mocrofo/” это путь на моем сервере где физически лежит мой проект, у вас он будет другой.

В файле cicd.sh у меня следующие:

#!/bin/bash
echo "Script execution started."

cd /var/www/microfo/data/www/microfo

git pull orign master

chown -R microfo:microfo /var/www/microfo/data/www/microfo/

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan migrate

if [ $? -eq 0 ]; then
  echo 'git pull success.'
else
  echo 'git pull failure.'
  exit 1;
fi
echo "Script execution completed."

Все, пишите замечания, вопросы, дополнения в комментах.

Предыдущая
ПрограммированиеУстановка docker на Ubuntu 20.04 с нуля
Помогла статья? Оцените её
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Оценок: 1
Загрузка...
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.