Skip to content

Commit

Permalink
Merge pull request #4 from gamedoora/ap_deploy
Browse files Browse the repository at this point in the history
Closes #3: Deploy to dev server
  • Loading branch information
aprajshekhar authored Oct 1, 2023
2 parents e280f8f + c503e6a commit 665b1f2
Show file tree
Hide file tree
Showing 6 changed files with 184 additions and 1 deletion.
46 changes: 46 additions & 0 deletions .github/workflows/build_and_deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Build and Deploy

on:
push:
branches:
- main
- feat/ci-cd
pull_request:
branches:
- main
- feat/ci-cd
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
server-id: github
server-username: GITHUB_USER_REF
server-password: GITHUB_TOKEN_REF

- name: Build with Maven
run: mvn -B package --file pom.xml
env:
GITHUB_USER_REF: ${{ secrets.PACKAGE_ACCESS_USER }}
GITHUB_TOKEN_REF: ${{ secrets.PACKAGE_ACCESS_TOKEN }}

- name: Add execute permissions to script
run: chmod +x ./deploy.sh

- name: Copy JAR over SSH and restart service
id: deploy
run: ./deploy.sh
env:
SSH_PASS: ${{ secrets.SSH_PASSWORD }}
SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
SSH_HOST: ${{ secrets.SSH_HOST }}
57 changes: 57 additions & 0 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Publish

on:
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
server-id: github
server-username: GITHUB_USER_REF
server-password: GITHUB_TOKEN_REF

- name: Build with Maven
run: mvn -B package --file pom.xml
env:
GITHUB_USER_REF: ${{ secrets.PACKAGE_ACCESS_USER }}
GITHUB_TOKEN_REF: ${{ secrets.PACKAGE_ACCESS_TOKEN }}

- name: Add execute permissions to script
run: chmod +x ./check-version.sh

- name: Check if version exists
id: chkvrsn
run: ./check-version.sh
env:
PAT: ${{ secrets.PACKAGE_ACCESS_TOKEN }}
USER: ${{ secrets.PACKAGE_ACCESS_USER }}

- name: Publish to GitHub Packages
run: mvn deploy
env:
GITHUB_USER_REF: ${{ secrets.PACKAGE_ACCESS_USER }}
GITHUB_TOKEN_REF: ${{ secrets.PACKAGE_ACCESS_TOKEN }}
if: ${{ steps.chkvrsn.outputs.exists == 'false' }}

## While I've used a common technique for publishing package to repositories, the process for publishing packages to GitHub Packages differs slightly. If any issues arise,replace the "Publish to GitHub Packages" stage above with the following stages.
## Details are available here https://docs.github.com/en/actions/publishing-packages/publishing-java-packages-with-maven#publishing-packages-to-github-packages
# - name: Set up JDK
# uses: actions/setup-java@v2
# with:
# java-version: '17'
# distribution: 'adopt'
# - name: Publish to GitHub Packages
# run: mvn deploy
# env:
# GITHUB_TOKEN: ${{ secrets.PACKAGE_ACCESS_TOKEN }}
# if: ${{ steps.chkvrsn.outputs.exists == 'false' }}
48 changes: 48 additions & 0 deletions deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash

JAR_FILE=target/*.jar
REMOTE_DIRECTORY=/opt/gamedoora/
REMOTE_JAR_FILE=gamedoora-aggregation-proxy.jar

echo $SSH_USERNAME
echo $SSH_HOST

# connect to the Server instance and set up the remote directory
sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no "$SSH_USERNAME@$SSH_HOST" "
if [ -d $REMOTE_DIRECTORY ]; then
cd $REMOTE_DIRECTORY
if [ -f $REMOTE_JAR_FILE ]; then
rm -f $REMOTE_JAR_FILE
fi
else
mkdir -p $REMOTE_DIRECTORY
fi"

#COPY SYSTEMD INTO LOCAL
DEST_PATH="/usr/lib/systemd/system/"
echo "=====Copying files========="
pwd
ls
sshpass -p $SSH_PASS scp -o StrictHostKeyChecking=no ./gamedoora-aggregation-proxy.service "$SSH_USERNAME@$SSH_HOST:$DEST_PATH"
echo "==========================="
echo "==Stopping service======="
# Stop the service
sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=no "$SSH_USERNAME@$SSH_HOST" 'sudo systemctl daemon-reload; sudo systemctl stop gamedoora-aggregation-proxy'
echo "========================="

echo "=====Copying jars========="

# copy the new JAR file to the remote directory and rename it

sshpass -p $SSH_PASS scp -v -o StrictHostKeyChecking=no $JAR_FILE "$SSH_USERNAME@$SSH_HOST:$REMOTE_DIRECTORY/$REMOTE_JAR_FILE"
echo "=========================="
echo "==Starting service======="
sshpass -p $SSH_PASS ssh "$SSH_USERNAME@$SSH_HOST" 'chown -R gamedoora:gamedoora /opt/gamedoora; chmod ug+rwx /opt/gamedoora/*.jar; systemctl restart gamedoora-aggregation-proxy; systemctl is-active --quiet gamedoora-aggregation-proxy && echo Service is running'
echo "========================="
# # Check the exit status of the previous command and set an output variable accordingly

if [ $? -eq 0 ]; then
echo "::set-output name=status::success"
else
echo "::set-output name=status::failure"
fi
11 changes: 11 additions & 0 deletions gamedoora-aggregation-proxy.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[Unit]
Description=gamedoora-aggregation-proxy
After=syslog.target gamedoora-config-server.service

[Service]
User=gamedoora
ExecStart=/opt/gamedoora/gamedoora-aggregation-proxy.jar
SuccessExitStatus=143
Environment="CONFIG_SERVER=http://localhost:8888"
[Install]
WantedBy=multi-user.target
22 changes: 21 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<dependency>
<groupId>com.gamedoora</groupId>
<artifactId>gamedoora-model</artifactId>
<version>0.2.1</version>
<version>0.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -92,11 +92,13 @@
</dependencyManagement>

<build>
<finalName>gamedoora-aggregation-proxy</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
Expand All @@ -107,5 +109,23 @@
</plugin>
</plugins>
</build>
<!-- for managing artifact upload to GitHub maven package manager-->
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub gamedoora Apache Maven Packages for user services</name>
<url>https://maven.pkg.github.com/gamedoora/gamedoora-user-services</url>
</repository>
</distributionManagement>


<!-- for downloading artifact from GitHub maven package manager-->
<repositories>
<repository>
<id>github</id>
<name>GitHub gamedoora Apache Maven Packages for model</name>
<url>https://maven.pkg.github.com/gamedoora/gamedoora-model</url>
</repository>
</repositories>

</project>
1 change: 1 addition & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
spring.application.name=aggregationproxy
server.port=8090
spring.config.import=optional:configserver:${CONFIG_SERVER}

0 comments on commit 665b1f2

Please sign in to comment.