diff --git a/.github/workflows/Backend-CD.yml b/.github/workflows/Backend-CD.yml new file mode 100644 index 000000000..a02f48e28 --- /dev/null +++ b/.github/workflows/Backend-CD.yml @@ -0,0 +1,71 @@ +name: Backend CD + +on: + pull_request: + branches: [ "be/develop" ] + push: + branches: [ "be/develop" ] + +permissions: + contents: read + +jobs: + build: + runs-on: self-hosted + steps: + + - name: Checkout + uses: actions/checkout@v3 + with: + token: ${{ secrets.ACTION_TOKEN }} + submodules: true + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Build with Gradle + run: ./gradlew bootJar + working-directory: ./backend/pokerogue + + - name: Docker build and push + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + + docker build -t ${{ secrets.DOCKER_SERVER_IMAGE }} -f ./backend/pokerogue/docker/Dockerfile ./backend/pokerogue + docker push ${{ secrets.DOCKER_SERVER_IMAGE }} + + docker build -t ${{ secrets.DOCKER_NGINX_IMAGE }} -f ./backend/pokerogue/docker/Dockerfile-nginx ./backend/pokerogue/docker + docker push ${{ secrets.DOCKER_NGINX_IMAGE }} + + deploy: + needs: build + runs-on: self-hosted + steps: + + - name: Change permission + run: | + sudo chown -R ubuntu:ubuntu /home/ubuntu/actions-runner/_work/2024-pokerogue-helper + + - name: Deploy + run: | + cd /home/ubuntu + + sudo touch docker-compose.yml + echo "${{ vars.DOCKER_COMPOSE }}" | sudo tee docker-compose.yml > /dev/null + + sudo chmod 666 /var/run/docker.sock + + if [ "$(docker ps -qa)" ]; then + sudo docker rm -f $(docker ps -qa) + else + echo "No containers to remove." + fi + + sudo docker pull ${{ secrets.DOCKER_SERVER_IMAGE }} + sudo docker pull ${{ secrets.DOCKER_NGINX_IMAGE }} + + docker-compose -f docker-compose.yml up -d + docker image prune -f diff --git a/.github/workflows/Backend-CI.yml b/.github/workflows/Backend-CI.yml new file mode 100644 index 000000000..e53e0ee09 --- /dev/null +++ b/.github/workflows/Backend-CI.yml @@ -0,0 +1,31 @@ +name: Backend CI + +on: + pull_request: + branches: [ "be/develop" ] + push: + branches: [ "be/develop" ] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + + - name: Checkout + uses: actions/checkout@v3 + with: + token: ${{ secrets.ACTION_TOKEN }} + submodules: true + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Run Test + run: SPRING_PROFILES_ACTIVE=h2 ./gradlew clean test + working-directory: ./backend/pokerogue diff --git a/backend/pokerogue/build.gradle b/backend/pokerogue/build.gradle index 83eec08b1..e23860d9e 100644 --- a/backend/pokerogue/build.gradle +++ b/backend/pokerogue/build.gradle @@ -37,6 +37,9 @@ dependencies { // mySql runtimeOnly 'com.mysql:mysql-connector-j' + // H2 + runtimeOnly 'com.h2database:h2' + // JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' diff --git a/backend/pokerogue/docker/Dockerfile b/backend/pokerogue/docker/Dockerfile new file mode 100644 index 000000000..078d0c298 --- /dev/null +++ b/backend/pokerogue/docker/Dockerfile @@ -0,0 +1,4 @@ +FROM openjdk:17 +ARG JAR_FILE=/build/libs/*.jar +COPY ${JAR_FILE} app.jar +ENTRYPOINT ["java","-jar", "/app.jar"] diff --git a/backend/pokerogue/docker/Dockerfile-nginx b/backend/pokerogue/docker/Dockerfile-nginx new file mode 100644 index 000000000..e20000b51 --- /dev/null +++ b/backend/pokerogue/docker/Dockerfile-nginx @@ -0,0 +1,4 @@ +FROM nginx +RUN rm -rf /etc/nginx/conf.d/default.conf +COPY ./nginx/conf.d/nginx.conf /etc/nginx/conf.d +CMD ["nginx", "-g", "daemon off;"] diff --git a/backend/pokerogue/docker/nginx/conf.d/nginx.conf b/backend/pokerogue/docker/nginx/conf.d/nginx.conf new file mode 100644 index 000000000..d2a386ef6 --- /dev/null +++ b/backend/pokerogue/docker/nginx/conf.d/nginx.conf @@ -0,0 +1,44 @@ +server { + listen [::]:80 default_server; + root /var/www/html; + server_name _; + + location / { + resolver 8.8.8.8 ipv6=off; + proxy_pass http://server:8080; + proxy_set_header X-Real_IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + } +} + +server { + root /var/www/html; + server_name pokerogue-helper.com; + + location / { + resolver 8.8.8.8 ipv6=off; + proxy_pass http://server:8080; + proxy_set_header X-Real_IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + } + + listen [::]:443 ssl ipv6only=on; + listen 443 ssl; + ssl_certificate /etc/letsencrypt/live/pokerogue-helper.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/pokerogue-helper.com/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; +} + +server { + if ($host = pokerogue-helper.com) { + return 301 https://$host$request_uri; + } + + listen 80 ; + listen [::]:80 ; + server_name pokerogue-helper.com; + return 404; +} diff --git a/backend/pokerogue/src/main/resources b/backend/pokerogue/src/main/resources index 9cdef5785..ad6414e8a 160000 --- a/backend/pokerogue/src/main/resources +++ b/backend/pokerogue/src/main/resources @@ -1 +1 @@ -Subproject commit 9cdef57854f253e41c63f2d213658d1977d15efa +Subproject commit ad6414e8a8b280f5e6ae74c3210d591abae40e6b