Skip to content

Commit

Permalink
Created github action workflow for deployment on cse3310 VPS
Browse files Browse the repository at this point in the history
  • Loading branch information
NotVeridion committed Apr 12, 2024
1 parent bfff3a0 commit 026509b
Show file tree
Hide file tree
Showing 12 changed files with 87 additions and 51 deletions.
109 changes: 70 additions & 39 deletions .github/workflows/static.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,74 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

# 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:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
name: "Deploy to server"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload entire repository
path: '.'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- 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 }}"
29 changes: 17 additions & 12 deletions src/main/java/com/cse3310/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,17 +92,22 @@ public void onStart() {

public static void main(String[] args) {
// Set up the http server
String envPort = System.getenv("HTTP_PORT");
int httpPort = Integer.parseInt(envPort);
HttpServer H = new HttpServer(httpPort, "./html");
H.start();
System.out.println("http Server started on port:" + httpPort);

// create and start the websocket server
envPort = System.getenv("WEBSOCKET_PORT");
int socketPort = Integer.parseInt("envPort");
App A = new App(socketPort);
A.start();
System.out.println("websocket Server started on port: " + socketPort);
try{
String envPort = System.getenv("HTTP_PORT");
int httpPort = Integer.parseInt(envPort);
HttpServer H = new HttpServer(httpPort, "./html");
H.start();
System.out.println("http Server started on port:" + httpPort);

// create and start the websocket server
envPort = System.getenv("WEBSOCKET_PORT");
int socketPort = Integer.parseInt("envPort");
App A = new App(socketPort);
A.start();
System.out.println("websocket Server started on port: " + socketPort);
}
catch (NullPointerException e){ // Checks for environment variable
e.printStackTrace();
}
}
}
Binary file modified target/classes/com/cse3310/App.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/Coordinate.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/Game.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/HttpServer$1.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/HttpServer.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/Locations.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/ServerEvent.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/User.class
Binary file not shown.
Binary file modified target/classes/com/cse3310/UserEvent.class
Binary file not shown.
Binary file modified target/test-classes/com/cse3310/AppTest.class
Binary file not shown.

0 comments on commit 026509b

Please sign in to comment.