Last active
March 31, 2020 11:01
-
-
Save karl-gustav/f83d984b5742095c6325287ed65a7ae3 to your computer and use it in GitHub Desktop.
Makefile for deploying a go executable as a service to an ssh machine
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| SSH_SERVER=34.32.31.30 | |
| SERVICE_NAME=flexit_web | |
| test:: | |
| go test ./... | |
| build:: | |
| GOOS=linux GOARCH=arm GOARM=6 go build -o $(SERVICE_NAME) main.go | |
| deploy:: build | |
| @tar czf - $(SERVICE_NAME) *.html *.css *.js *.service | ssh $(SSH_SERVER) 'echo ≫ Backing up old executable...\ | |
| && test -f /srv/$(SERVICE_NAME)/$(SERVICE_NAME)\ | |
| && mv /srv/$(SERVICE_NAME)/$(SERVICE_NAME){,.old}\ | |
| && echo ≫ Extracting into /srv/$(SERVICE_NAME)/...\ | |
| ; tar xzf - -C /srv/$(SERVICE_NAME)/\ | |
| && echo ≫ Restarting service...\ | |
| && sudo systemctl daemon-reload\ | |
| && sudo service $(SERVICE_NAME) restart\ | |
| && echo ≫ Checking status...\ | |
| && sudo service $(SERVICE_NAME) status\ | |
| && echo ≫ Done' | |
| setup:: | |
| echo "Running command on $(SSH_SERVER): $$SETUP_CMD" | |
| echo "$$SERVICE_FILE" | ssh $(SSH_SERVER) "$$SETUP_CMD" | |
| define SETUP_CMD | |
| echo Making directory \ | |
| && sudo mkdir -p /srv/$(SERVICE_NAME)/ \ | |
| && echo Creating service file \ | |
| && sudo cat > /srv/$(SERVICE_NAME)/$(SERVICE_NAME).service \ | |
| && echo Setting folder permissions \ | |
| && sudo chown $$USER -R /srv/$(SERVICE_NAME)/ \ | |
| && echo Enabling service \ | |
| && sudo sudo systemctl enable /srv/$(SERVICE_NAME)/$(SERVICE_NAME).service \ | |
| && sudo systemctl daemon-reload | |
| endef | |
| export SETUP_CMD | |
| define SERVICE_FILE | |
| [Unit] | |
| Description=$(SERVICE_NAME) | |
| [Service] | |
| Type=simple | |
| WorkingDirectory=/srv/$(SERVICE_NAME)/ | |
| ExecStart=/srv/$(SERVICE_NAME)/$(SERVICE_NAME) -s /dev/ttyUSB.RS485 | |
| Restart=always | |
| RestartSec=90 | |
| StartLimitInterval=400 | |
| StartLimitBurst=3 | |
| [Install] | |
| WantedBy=multi-user.target | |
| endef | |
| export SERVICE_FILE |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment