diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..d9a1a5d --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,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 <> .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 }}" +