-
Notifications
You must be signed in to change notification settings - Fork 196
87 lines (73 loc) · 2.77 KB
/
Copy pathdeploy-vsix.yml
File metadata and controls
87 lines (73 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
name: Deploy VSIX to Server
on:
workflow_dispatch:
inputs:
version:
description: 'Version to deploy (e.g., 2.7.1). Leave empty to use current version.'
required: false
default: ''
jobs:
deploy-to-server:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get version
id: version
run: |
if [ -n "${{ github.event.inputs.version }}" ]; then
VERSION="${{ github.event.inputs.version }}"
else
VERSION=$(node -p "require('./src/package.json').version")
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Download VSIX from Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION=${{ steps.version.outputs.version }}
gh release download "v${VERSION}" --pattern "zgsm-${VERSION}.vsix" --dir bin
- name: Install sshpass
run: sudo apt-get install -y sshpass
- name: Create remote directory
id: mkdir
continue-on-error: true
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }}
run: |
echo "Creating remote directory /home/plugin/downloads/"
sshpass -p "${SSH_PASSWORD}" ssh \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
-p "${SSH_PORT:-22}" \
"${SSH_USER}@${SSH_HOST}" \
"mkdir -p /home/plugin/downloads/"
echo "Directory created successfully"
- name: Upload to server via SSH
id: upload
continue-on-error: true
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }}
run: |
VERSION=${{ steps.version.outputs.version }}
SOURCE_FILE="bin/zgsm-${VERSION}.vsix"
TARGET_PATH="/home/plugin/downloads/zgsm-${VERSION}.vsix"
echo "Uploading ${SOURCE_FILE} to ${SSH_HOST}:${TARGET_PATH}"
sshpass -p "${SSH_PASSWORD}" scp \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
-P "${SSH_PORT:-22}" \
"${SOURCE_FILE}" \
"${SSH_USER}@${SSH_HOST}:${TARGET_PATH}"
echo "Upload completed successfully"
- name: Report upload status
if: steps.upload.outcome == 'failure'
run: |
echo "::warning::SSH upload failed. VSIX was not uploaded to server."
echo "Please manually upload bin/zgsm-${{ steps.version.outputs.version }}.vsix to /home/plugin/downloads/"