-
Notifications
You must be signed in to change notification settings - Fork 0
69 lines (69 loc) · 2.23 KB
/
ssh_deploy.yaml
File metadata and controls
69 lines (69 loc) · 2.23 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
# This workflow is only for inclusion in other workflows.
name: Deploy via ssh
on:
workflow_call:
inputs:
VERSION:
description: "Version to deploy (dockerhub tag)"
required: false
default: "main"
type: string
CONTAINER_NAME:
description: "Container name"
default: "superhero"
required: false
type: string
secrets:
DEPLOY_HOST:
description: "Host to deploy to"
required: true
DEPLOY_USERNAME:
description: "Username to use for ssh"
required: true
DEPLOY_KEY:
description: "SSH key to use for ssh"
required: true
HOST_PORT:
description: "Host port"
required: true
DOCKERHUB_USERNAME:
description: "Dockerhub username"
required: true
DOCKERHUB_TOKEN:
description: "Dockerhub password"
required: true
DOCKERHUB_REPO:
description: "Dockerhub repository"
required: true
jobs:
deploy:
name: Deploy via ssh
runs-on: ubuntu-latest
steps:
- name: Run deploy script
uses: appleboy/ssh-action@v1.0.0
env:
VERSION: "${{ inputs.VERSION }}"
SHA: "${{ github.sha }}"
HOST_DATA_DIR: "./${{ inputs.CONTAINER_NAME }}"
with:
host: "${{ secrets.DEPLOY_HOST }}"
username: "${{ secrets.DEPLOY_USERNAME }}"
key: "${{ secrets.DEPLOY_KEY }}"
envs: >
HOST_DATA_DIR,
SHA
script: |
echo $SHA > $HOST_DATA_DIR/REVISION || true
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
docker pull ${{ secrets.DOCKERHUB_REPO }}:${{ inputs.VERSION }} || true
docker stop ${{ inputs.CONTAINER_NAME }} || true
docker rm ${{ inputs.CONTAINER_NAME }} || true
docker run -d --name ${{ inputs.CONTAINER_NAME }} \
--restart=always \
--log-driver json-file \
--log-opt max-size=100m \
--log-opt max-file=30 \
-p ${{secrets.HOST_PORT}}:80 \
-e NODE_ENV=production \
${{ secrets.DOCKERHUB_REPO }}:${{ inputs.VERSION }}