-
Notifications
You must be signed in to change notification settings - Fork 0
128 lines (127 loc) · 5 KB
/
Copy pathengine-prototype.cd.yml
File metadata and controls
128 lines (127 loc) · 5 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
name: CD | Engine prototype | remote ssh
on:
push:
workflow_dispatch:
inputs:
job:
description: 'Job to run (deploy, sync-and-deploy, init)'
required: true
type: choice
options:
- deploy
- sync-and-deploy
- init
permissions:
contents: write
packages: write
id-token: write
jobs:
deploy:
if: >-
github.repository == 'underpostnet/engine'
&& (
startsWith(github.event.head_commit.message, 'cd(ssh-engine-prototype)')
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'deploy')
)
name: Remote SSH deployment
runs-on: ubuntu-latest
steps:
- name: Run remote deploy via SSH
uses: appleboy/ssh-action@v1.2.5
with:
# Remote host (secret)
host: ${{ secrets.SSH_HOST }}
# Remote user (secret)
username: ${{ secrets.SSH_USERNAME }}
# Private key (secret) — the PEM contents (not a path)
key: ${{ secrets.SSH_PRIV_KEY }}
# Remote port (optional)
port: ${{ secrets.SSH_PORT }}
# Optional: increase timeout for long-running commands
command_timeout: 60m
# Optional: if your private key has a passphrase, add:
# passphrase: ${{ secrets.SSH_KEY_PASSPHRASE }}
# Commands to run on the remote VM
script: |
set -e
set -o pipefail
echo "Starting remote deploy"
cd /home/dd/engine
sudo -n -- /bin/bash -lc "node bin run pull"
sudo -n -- /bin/bash -lc "npm install"
sudo -n -- /bin/bash -lc "node bin run secret"
sudo -n -- /bin/bash -lc "node bin run deploy dd-prototype"
sync-and-deploy:
if: >-
github.repository == 'underpostnet/engine'
&& (
startsWith(github.event.head_commit.message, 'cd(ssh-sync-engine-prototype)')
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'sync-and-deploy')
)
name: Remote SSH sync and deploy
runs-on: ubuntu-latest
steps:
- name: Run remote deploy via SSH
uses: appleboy/ssh-action@v1.2.5
with:
# Remote host (secret)
host: ${{ secrets.SSH_HOST }}
# Remote user (secret)
username: ${{ secrets.SSH_USERNAME }}
# Private key (secret) — the PEM contents (not a path)
key: ${{ secrets.SSH_PRIV_KEY }}
# Remote port (optional)
port: ${{ secrets.SSH_PORT }}
# Optional: increase timeout for long-running commands
command_timeout: 60m
# Optional: if your private key has a passphrase, add:
# passphrase: ${{ secrets.SSH_PASSWORD }}
# Commands to run on the remote VM
# TODO: optimize process and logs: node bin run metadata dd-prototype
script: |
set -e
set -o pipefail
echo "Starting remote sync and deploy"
cd /home/dd/engine
sudo -n -- /bin/bash -lc "node bin run pull"
sudo -n -- /bin/bash -lc "npm install"
sudo -n -- /bin/bash -lc "node bin run secret"
sudo -n -- /bin/bash -lc "node bin run sync --kubeadm dd-prototype"
init:
if: >-
github.repository == 'underpostnet/engine'
&& (
startsWith(github.event.head_commit.message, 'cd(ssh-init-engine-prototype)')
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'init')
)
name: Remote SSH init deployment
runs-on: ubuntu-latest
steps:
- name: Run remote deploy via SSH
uses: appleboy/ssh-action@v1.2.5
with:
# Remote host (secret)
host: ${{ secrets.SSH_HOST }}
# Remote user (secret)
username: ${{ secrets.SSH_USERNAME }}
# Private key (secret) — the PEM contents (not a path)
key: ${{ secrets.SSH_PRIV_KEY }}
# Remote port (optional)
port: ${{ secrets.SSH_PORT }}
# Optional: increase timeout for long-running commands
command_timeout: 60m
# Optional: if your private key has a passphrase, add:
# passphrase: ${{ secrets.SSH_KEY_PASSPHRASE }}
# Commands to run on the remote VM
script: |
set -e
set -o pipefail
echo "Starting init deploy"
cd /home/dd/engine
sudo -n -- /bin/bash -lc "node bin run pull"
sudo -n -- /bin/bash -lc "npm install"
sudo -n -- /bin/bash -lc "node bin run secret"
sudo -n -- /bin/bash -lc "node bin/build dd-prototype --conf"
sudo -n -- /bin/bash -lc "node bin deploy dd-prototype production --kubeadm --sync --build-manifest --versions green --replicas 1"
sudo -n -- /bin/bash -lc "node bin deploy dd-prototype production --kubeadm --cert --disable-update-proxy"
sudo -n -- /bin/bash -lc "node bin monitor dd-prototype production --ready-deployment --promote --versions green --replicas 1"