name: Deploy Project BC on: push: # Запускать при событии push branches: - main # Только для ветки main (или master, или ваша основная ветка) jobs: deploy: runs-on: ubuntu-latest # Указываем метку раннера, на котором должна выполняться задача. # Убедитесь, что ваш зарегистрированный раннер имеет эту метку. # Можно использовать и более специфичную, например, 'self-hosted' или имя вашего сервера, если вы так его пометили. steps: - name: Network Diagnostics Inside Container FIRST run: | echo "===== Running Network Diagnostics =====" echo "--- /etc/resolv.conf inside container ---" cat /etc/resolv.conf echo "--- nslookup google.com ---" nslookup google.com || echo "nslookup google.com failed or nslookup not available" echo "--- nslookup Gitea Host (pavel-chagovsky.com) ---" nslookup pavel-chagovsky.com || echo "nslookup pavel-chagovsky.com failed or nslookup not available" echo "--- Trying to curl Gitea by IP (81.177.140.16) and path /gitea/ ---" curl -kvL --connect-timeout 5 https://81.177.140.16/gitea/ || echo "Curl to Gitea by IP failed" echo "===== Network Diagnostics Finished =====" - name: Network Diagnostics Inside Container run: | echo "--- /etc/resolv.conf inside container ---" cat /etc/resolv.conf echo "--- Pinging google.com ---" ping -c 3 google.com echo "--- Pinging Gitea Host (pavel-chagovsky.com) ---" ping -c 3 pavel-chagovsky.com echo "--- nslookup Gitea Host (pavel-chagovsky.com) ---" nslookup pavel-chagovsky.com echo "--- Trying to curl Gitea by IP (replace YOUR_GITEA_IP and PORT if not 443) ---" curl -kv https://81.177.140.16/gitea/ - 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."