Добавить 2
This commit is contained in:
74
2
Normal file
74
2
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
name: Deploy to Server (password auth)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
server:
|
||||||
|
- "your.server1.com"
|
||||||
|
- "your.server2.com"
|
||||||
|
# добавьте остальные ip/домены
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build binary (если нужно)
|
||||||
|
run: |
|
||||||
|
# пример для Go, замените под свой язык
|
||||||
|
GOOS=linux GOARCH=amd64 go build -o myapp ./cmd/myapp
|
||||||
|
|
||||||
|
- name: Pack files we want to deploy
|
||||||
|
run: |
|
||||||
|
mkdir -p artifact
|
||||||
|
cp myapp artifact/ 2>/dev/null || true
|
||||||
|
cp -r config/ artifact/ 2>/dev/null || true
|
||||||
|
cp systemd/*.service artifact/ 2>/dev/null || true
|
||||||
|
|
||||||
|
tar czf artifact.tar.gz -C artifact .
|
||||||
|
|
||||||
|
- name: Copy artifact to server
|
||||||
|
uses: appleboy/scp-action@v0.1.7
|
||||||
|
with:
|
||||||
|
host: ${{ matrix.server }}
|
||||||
|
username: ${{ secrets.SSH_USERNAME }}
|
||||||
|
password: ${{ secrets.SSH_PASSWORD }}
|
||||||
|
port: 22
|
||||||
|
source: "artifact.tar.gz"
|
||||||
|
target: "/tmp/myapp-deploy"
|
||||||
|
strip_components: 0
|
||||||
|
|
||||||
|
- name: Deploy & restart service
|
||||||
|
uses: appleboy/ssh-action@v1.0.3
|
||||||
|
with:
|
||||||
|
host: ${{ matrix.server }}
|
||||||
|
username: ${{ secrets.SSH_USERNAME }}
|
||||||
|
password: ${{ secrets.SSH_PASSWORD }}
|
||||||
|
port: 22
|
||||||
|
script: |
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
cd /tmp/myapp-deploy
|
||||||
|
sudo tar xzf artifact.tar.gz
|
||||||
|
|
||||||
|
# Простейшая проверка бинарника (очень рекомендуется!)
|
||||||
|
sudo ./myapp --version || { echo "Binary broken!"; exit 1; }
|
||||||
|
|
||||||
|
sudo mkdir -p /opt/myapp
|
||||||
|
sudo rm -rf /opt/myapp.old
|
||||||
|
sudo mv /opt/myapp /opt/myapp.old 2>/dev/null || true
|
||||||
|
sudo mv ./* /opt/myapp/
|
||||||
|
|
||||||
|
sudo cp /opt/myapp/*.service /etc/systemd/system/ 2>/dev/null || true
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable myapp.service
|
||||||
|
sudo systemctl restart myapp.service
|
||||||
|
|
||||||
|
echo "Deployment completed on $(hostname)"
|
||||||
|
rm -rf /tmp/myapp-deploy
|
||||||
Reference in New Issue
Block a user