#node.js #github #continuous-integration
Вопрос:
Я использовал GitHub runner (самостоятельный хостинг) для развертывания Node.js приложение. Перед созданием бегуна он удаляет все папки, файлы на сервере и создает новую папку сборки. Таким образом, это означает, что сервер останавливается во время сборки runner. Я не хочу прерывать работу своего сервера.
Мой вопрос в том, какова наилучшая практика развертывания узлов?
Должен ли я скопировать файлы сборки в другую папку в файле yml?
Вот файл yml:
name: Node.js CI
on:
push:
branches: [staging]
pull_request:
branches: [staging]
jobs:
build:
runs-on: self-hosted
defaults:
run:
working-directory: ./server
strategy:
matrix:
node-version: [14.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: Creating env file
run: |
touch .env
echo NGINX_URL=${{ secrets.NGINX_URL_STAGING }} >> .env
echo PUBLIC_URL=${{ secrets.PUBLIC_URL_STAGING }} >> .env
echo HOST=${{ secrets.HOST }} >> .env
echo ADMIN_JWT_SECRET=${{ secrets.ADMIN_JWT_SECRET_STAGING }} >> .env
echo DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD_STAGING }} >> .env
echo DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME_STAGING }} >> .env
echo DATABASE_NAME=${{ secrets.DATABASE_NAME_STAGING }} >> .env
echo DATABASE_PORT=${{ secrets.DATABASE_PORT_STAGING }} >> .env
echo DATABASE_HOST=${{ secrets.DATABASE_HOST_STAGING }} >> .env
echo DATABASE_SSL=${{ secrets.DATABASE_SSL_STAGING }} >> .env
echo NODE_ENV=${{ secrets.NODE_ENV_STAGING }} >> .env
cat .env
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: yarn
- name: Building
run: yarn build
- name: Restart server
run: pm2 restart aj-staging