From 1cfb69af0a0a5c188661b1ba5fe60d8d4940c7e2 Mon Sep 17 00:00:00 2001 From: Oleg Date: Mon, 9 Jun 2025 19:44:04 +0000 Subject: [PATCH] Add deployment workflow for Gitea Actions --- .gitea/workflows/deploy.yml | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..b807e65 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,57 @@ +name: Deploy Project BC + +on: + push: # Запускать при событии push + branches: + - main # Только для ветки main (или master, или ваша основная ветка) + +jobs: + deploy: + runs-on: ubuntu-latest # Указываем метку раннера, на котором должна выполняться задача. + # Убедитесь, что ваш зарегистрированный раннер имеет эту метку. + # Можно использовать и более специфичную, например, 'self-hosted' или имя вашего сервера, если вы так его пометили. + + steps: + - name: Checkout repository + uses: actions/checkout@v3 # Стандартное действие для скачивания кода репозитория на раннер + + - name: Setup Node.js # Если вам нужно определенная версия Node.js для npm install + uses: actions/setup-node@v3 + with: + node-version: '18' # Укажите нужную вам LTS или другую версию Node.js + + - name: Install Dependencies + run: | # Выполняем команды в рабочей директории раннера (куда был склонирован репозиторий) + echo "Current directory: $(pwd)" + if [ -f package.json ]; then + echo "package.json found. Installing dependencies..." + npm install --omit=dev + else + echo "package.json not found. Skipping npm install." + fi + working-directory: ./ # Указывает, что npm install нужно выполнять в корне склонированного репозитория + # Если package.json для bc.js в подпапке server/, то: + # working-directory: ./server + + - name: Execute Deploy Script on Server + uses: appleboy/ssh-action@master # Популярное действие для выполнения команд по SSH + with: + host: ${{ secrets.DEPLOY_HOST }} # IP или домен вашего сервера, где нужно выполнить деплой + username: ${{ secrets.DEPLOY_USER }} # Имя пользователя для SSH-доступа + key: ${{ secrets.SSH_PRIVATE_KEY }} # Приватный SSH-ключ для доступа + port: ${{ secrets.DEPLOY_PORT || 22 }} # Порт SSH, по умолчанию 22 + script: | + echo "Starting deployment on server for project bc..." + cd /home/nodejs/bc/ # Путь к рабочей копии проекта на сервере + git fetch origin main # Или ваша основная ветка + git reset --hard origin/main + + # Если npm install должен выполняться на сервере деплоя, а не на раннере: + # if [ -f package.json ]; then + # echo "Installing server-side npm dependencies..." + # npm install --omit=dev + # fi + + echo "Restarting PM2 process for bc..." + pm2 restart bc # Имя или ID вашего bc приложения в PM2 + echo "Deployment for bc finished." \ No newline at end of file