Действия GitHub позволяют автоматизировать все ваши скучные вещи. В этом блоге вы увидите, как вы можете автоматизировать развертывание на любом персональном сервере, виртуальном частном сервере (VPS) или виртуальной машине (VM). Каждый крупный поставщик облачных услуг предоставляет автоматическое развертывание, которое ограничено только услугами веб-хостинга.
Большинство из вас всегда хотят автоматизировать развертывание на вашем личном сервере и VPS/VM, но боятся напряженного процесса. Вот как вы можете легко это сделать. Это не ограничивается JavaScript, Python, Ruby. Вы можете автоматизировать развертывание чего -либо от ML Model до новой версии Game.
Давайте начнем 🚀
Мы будем использовать SSH для автоматизации. Убедитесь, что у вас есть порт 22 Откройте свой сервер.
Давайте создадим новый ключ SSH для действий GitHub на сервере и скопировать это.
# Save it with a recognizable name eg. github_actions # Do give it a strong passphrase ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # Add Key to Authorize Keys. So, We can connect to it. cat ~/.ssh/github_actions.pub >> ~/.ssh/authorized_keys # Copy content of Public Key. clip < ~/.ssh/github_actions
Перейдите к опции Secrets в настройках репозитория GitHub.
Нажмите «Новый секрет», чтобы добавить новые секреты.
Ключ
— Содержание SSH Private Key. например. необработанное содержание ~/.ssh/github_actons. Скопировано на предыдущем шаге.Хост
— хозяин SSHПорт
— порт SSH, по умолчанию 22Имя пользователя
— SSH Имя пользователяПароль
— SSH парольPassphrase
— Пассная фраза обычно зашифрует закрытый ключ.
Перейдите на вкладку «Действия» в своем хранилище и нажмите «Настройте рабочий процесс самостоятельно».
Используйте и персонализируйте ниже.
# Give the workflow a name. name: Continuous Deployment # Trigger Workflow on master/production branch. on: push: branches: [ master ] pull_request: branches: [ master ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "deploy" deploy: name: Deploy # make sure to run this action in Linux env (say ubuntu) runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: - name: executing remote ssh commands using password uses: appleboy/ssh-action@master # all environment variables needed to connect with Server is placed in with. with: host: ${{ secrets.HOST }} key: ${{ secrets.KEY }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} passphrase: ${{ secrets.PASSPHRASE }} # Here will go script required for auto-deployment. # eg. For Django server using Gunicorn. # Website Server is stored in thewebsite folder script: | echo "Changing Directory to thewebsite" cd thewebsite/ echo "Pulling From Github" git pull -q origin master echo "Git Pull Complete" echo "Restarting Service" sudo systemctl daemon-reload sudo systemctl restart gunicorn
Выше выше будет автоматически развернуть любые изменения в Django. Вы можете изменить сценарий в соответствии с языком и структурой по вашему выбору.
Вы также можете использовать локально сохраненный скрипт, предоставив путь сценария вместо того, чтобы писать здесь. например.
script: /home/username/deploy.sh
Заключение 📓
Вы можете автоматизировать что угодно с этим рабочим процессом с изменением в мастер -/производственной филиале в качестве триггера.
Этот рабочий процесс разработан с использованием Appleboy/SSH-Action
Анкет Вы можете прочитать больше о аргументах и документации Здесь Анкет
Оригинал: «https://dev.to/mercury/continuous-deployment-the-easy-way-8j2»