cursor2api / playbook.yml
github-actions[bot]
Update from GitHub Actions
0d3f8ee
- name: My first play
hosts: hostgroup
remote_user: root
vars:
app_name: cursor2api
app_port: 7860
deploy_path: /root/workspace/cursor2api
# root 1349786 1344741 0 10:32 pts/0 00:00:00 npm run start --host 0.0.0.0 --port 8888
# root 1349797 1349786 0 10:32 pts/0 00:00:00 sh -c node src/app.js --host 0.0.0.0 --port 8888
# root 1349798 1349797 0 10:32 pts/0 00:00:00 node src/app.js --host 0.0.0.0 --port 8888
# 查找进程id 排除掉"sh -c"以及"grep"的
tasks:
- name: 停止特定应用服务
shell: |
pid=$(ps -ef | grep "node src/app.js" | grep -v "sh -c" | grep -v grep | grep "{{ app_port }}" | awk '{print $2}')
if [ -n "$pid" ]; then
echo "Stopping {{ app_name }} process with PID: $pid"
kill -15 $pid
sleep 3
if ps -p $pid > /dev/null 2>&1; then
echo "Force killing process with PID: $pid"
kill -9 $pid
fi
else
echo "No running {{ app_name }} process found"
fi
args:
executable: /bin/bash
ignore_errors: yes
- name: 确认服务已停止
wait_for:
port: "{{ app_port }}"
state: stopped
timeout: 30
- name: 复制到远程服务器
copy:
src: archive/release.tar.gz
dest: /root/deploy/{{ app_name }}.tar.gz
- name: 解压文件
shell: |
rm -rf {{ deploy_path }}
mkdir -p {{ deploy_path }}
tar -zxvf /root/deploy/{{ app_name }}.tar.gz -C {{ deploy_path }}
args:
executable: /bin/bash
- name: 构建并运行
shell: |
cd {{ deploy_path }}
echo '#!/bin/bash
cd {{ deploy_path }}
test -f $HOME/.nvm/nvm.sh && source $HOME/.nvm/nvm.sh
npm install
npm run start -- --host 0.0.0.0 --port {{ app_port }}
' > {{ deploy_path }}/start_app.sh
chmod +x {{ deploy_path }}/start_app.sh
nohup {{ deploy_path }}/start_app.sh > {{ deploy_path }}/nohup.log 2>&1 &
args:
executable: /bin/bash
- name: 等待服务启动
wait_for:
port: "{{ app_port }}"
timeout: 30