buildAndRelease.yml 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. name: Release
  2. env:
  3. MONGO: ${{ secrets.MONGO }}
  4. on:
  5. push:
  6. branches: [ main ]
  7. jobs:
  8. build-and-test:
  9. name: Build and Test
  10. runs-on: ubuntu-latest
  11. steps:
  12. - uses: actions/checkout@v3
  13. - name: Set up JDK
  14. uses: actions/setup-java@v3
  15. with:
  16. java-version: '17'
  17. distribution: 'temurin'
  18. - name: Build with Maven
  19. run: chmod +x ./mvnw && ./mvnw clean package test
  20. dockerize:
  21. name: Dockerize Application
  22. needs: build-and-test
  23. runs-on: ubuntu-latest
  24. steps:
  25. - uses: actions/checkout@v3
  26. - name: Build the Docker image
  27. run: ./mvnw spring-boot:build-image
  28. - name: Login to Docker Hub
  29. uses: docker/login-action@v2
  30. with:
  31. username: ${{ secrets.DOCKERHUB_USERNAME }}
  32. password: ${{ secrets.DOCKERHUB_TOKEN }}
  33. - name: Push image
  34. run: docker push lhamacorp/stocks-be
  35. deploy:
  36. name: Deploy to Server
  37. needs: dockerize
  38. runs-on: ubuntu-latest
  39. steps:
  40. - name: Deploy to Server
  41. uses: appleboy/ssh-action@master
  42. with:
  43. host: ${{ secrets.SERVER_IP }}
  44. username: ${{ secrets.SERVER_USER }}
  45. key: ${{ secrets.SSH_PRIVATE_KEY }}
  46. script: |
  47. docker pull lhamacorp/stocks-be:latest
  48. docker stop stocks-be || true
  49. docker rm stocks-be || true
  50. docker run -d --name stocks-be -p 42902:8080 -e mongo=${{ secrets.MONGO }} -e database=${{ secrets.DATABASE }} -e provider=${{ secrets.PROVIDER_URL }} -e key=${{ secrets.PROVIDER_KEY }} lhamacorp/stocks-be:latest