From 72ba2796ec8824fa2965d97230a8be886f0afee4 Mon Sep 17 00:00:00 2001 From: "A.P.Rajshekhar" Date: Fri, 15 Sep 2023 14:28:35 +0530 Subject: [PATCH 1/4] Closes #3: Deploy to dev server --- .github/workflows/build_and_deploy.yaml | 46 ++++++++++++++++++ .github/workflows/publish.yaml | 57 +++++++++++++++++++++++ deploy.sh | 48 +++++++++++++++++++ gamedoora-aggregation-proxy.service | 11 +++++ pom.xml | 2 + src/main/resources/application.properties | 1 + 6 files changed, 165 insertions(+) create mode 100644 .github/workflows/build_and_deploy.yaml create mode 100644 .github/workflows/publish.yaml create mode 100644 deploy.sh create mode 100644 gamedoora-aggregation-proxy.service diff --git a/.github/workflows/build_and_deploy.yaml b/.github/workflows/build_and_deploy.yaml new file mode 100644 index 0000000..ccc44a9 --- /dev/null +++ b/.github/workflows/build_and_deploy.yaml @@ -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 }} diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..75fb977 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -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' }} \ No newline at end of file diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..efd797c --- /dev/null +++ b/deploy.sh @@ -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-user-services.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 diff --git a/gamedoora-aggregation-proxy.service b/gamedoora-aggregation-proxy.service new file mode 100644 index 0000000..a37faa8 --- /dev/null +++ b/gamedoora-aggregation-proxy.service @@ -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 diff --git a/pom.xml b/pom.xml index 1830ed5..cd7c3bd 100644 --- a/pom.xml +++ b/pom.xml @@ -92,11 +92,13 @@ + gamedoora-aggregation-proxy org.springframework.boot spring-boot-maven-plugin + true org.projectlombok diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f55d0f5..3ac8cdf 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,2 +1,3 @@ spring.application.name=aggregationproxy +server.port=8090 spring.config.import=optional:configserver:${CONFIG_SERVER} From 775f7fa5158226b9b2604263de4efbaeb02dd178 Mon Sep 17 00:00:00 2001 From: "A.P.Rajshekhar" Date: Fri, 15 Sep 2023 14:35:57 +0530 Subject: [PATCH 2/4] Closes #3: Deploy to dev server --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cd7c3bd..6667feb 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,7 @@ com.gamedoora gamedoora-model - 0.2.1 + 0.2.2 org.springframework.boot From 88fae61d63967cf1c7f1f9012da9f6ddd734a150 Mon Sep 17 00:00:00 2001 From: "A.P.Rajshekhar" Date: Fri, 15 Sep 2023 14:37:49 +0530 Subject: [PATCH 3/4] Closes #3: Deploy to dev server --- pom.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pom.xml b/pom.xml index 6667feb..d6a88c8 100644 --- a/pom.xml +++ b/pom.xml @@ -109,5 +109,23 @@ + + + + github + GitHub gamedoora Apache Maven Packages for user services + https://maven.pkg.github.com/gamedoora/gamedoora-user-services + + + + + + + + github + GitHub gamedoora Apache Maven Packages for model + https://maven.pkg.github.com/gamedoora/gamedoora-model + + From c503e6a5f58132a7b8dce3f09c0c098040e68c7d Mon Sep 17 00:00:00 2001 From: "A.P.Rajshekhar" Date: Fri, 15 Sep 2023 14:51:32 +0530 Subject: [PATCH 4/4] Update deploy.sh --- deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy.sh b/deploy.sh index efd797c..ae0493f 100644 --- a/deploy.sh +++ b/deploy.sh @@ -23,7 +23,7 @@ DEST_PATH="/usr/lib/systemd/system/" echo "=====Copying files=========" pwd ls -sshpass -p $SSH_PASS scp -o StrictHostKeyChecking=no ./gamedoora-user-services.service "$SSH_USERNAME@$SSH_HOST:$DEST_PATH" +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