generated from BudDavis/TicTacToe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.yml
74 lines (70 loc) · 3.99 KB
/
main.yml
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
# Derived from an example provided by https://blog.benoitblanchon.fr/github-action-run-ssh-commands/
# https://github.blog/2015-06-16-read-only-deploy-keys/
#
#
#
#
#
name: Deploy
on: [push]
jobs:
deploy:
name: "Deploy to server"
runs-on: ubuntu-latest
steps:
- name: configure SSH
run: |
# These are very useful for debugging
echo "Repository = ${{ github.repository }}"
echo "github url = ${{ github.server_url }}"
echo "Owner = ${{ github.repository_owner }}"
echo "Repository name = ${{ github.event.repository.name }}"
echo "Service name = ${{ vars.service_name }}"
echo "http port = ${{ vars.http_port }}"
echo "websocket port = ${{ vars.websocket_port }}"
echo "version = ${{ github.sha }}"
# On to the work at hand.
mkdir -p ~/.ssh/
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/production.key
chmod 600 ~/.ssh/production.key
cat >>~/.ssh/config <<END
Host production
HostName ${{ secrets.SSH_HOST }}
User ${{ secrets.SSH_USER }}
IdentityFile ~/.ssh/production.key
StrictHostKeyChecking no
END
- name: get source code and compile
run: |
echo "deleting the directory ${{ github.event.repository.name }} "
ssh production "rm -rf ${{ github.event.repository.name }}"
echo "cloning ${{ github.server_url }}/${{ github.repository }}"
ssh production "git clone ${{ github.server_url }}/${{ github.repository }}"
ssh production "cd ${{ github.event.repository.name }};mvn clean compile package"
- name: create systemd unit file
run: |
# without enable-linger, you must be logged in. So, we enable it.
ssh production "loginctl enable-linger"
ssh production "mkdir --parents .config/systemd/user"
ssh production "rm -f .config/systemd/user/${{ vars.service_name }}.service"
ssh production 'echo "[Unit]" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "Description=${{ vars.service_name }}" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "[Service]" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "Type=simple" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "Restart=always" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "RestartSec=5" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "Environment=VERSION=\"${{ github.sha }}\"" >>.config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "Environment=WEBSOCKET_PORT=${{ vars.websocket_port }}" >>.config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "Environment=HTTP_PORT=${{ vars.http_port }}" >>.config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "ExecStart=mvn exec:java -Dexec.mainClass=uta.cse3310.App" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "WorkingDirectory=$PWD/${{ github.event.repository.name }}" >> .config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "[Install]" >>.config/systemd/user/${{ vars.service_name }}.service'
ssh production 'echo "WantedBy=default.target" >>.config/systemd/user/${{ vars.service_name }}.service'
- name: systemd reload
run: |
ssh production "systemctl --user daemon-reload"
- name: restart daemon
run: |
ssh production "systemctl --user enable ${{ vars.service_name }}"
ssh production "systemctl --user restart ${{ vars.service_name }}"
ssh production "systemctl --user status ${{ vars.service_name }}"