diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 0000000..100bfbe --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,53 @@ +name: Eatery Prod Server - CI/CD + +on: + push: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Setup environment variables + run: echo "${{ secrets.ENV_PROPERTIES }}" > ./src/main/resources/env.properties + + - name: Build with Gradle + uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 + with: + arguments: build + + - name: Docker build and push + if: ${{ !failure() }} + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -t ${{ secrets.DOCKER_REPO }} -f Dockerfile . + docker push ${{ secrets.DOCKER_REPO }} + + - name: Executing remote ssh commands with docker compose for Continuous Delivery + if: ${{ !failure() }} + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.AWS_EC2_HOST }} + username: ubuntu + key: ${{ secrets.AWS_EC2_KEY }} + script: | + cd /home/ubuntu/eatery + sudo docker compose down + sudo docker pull ${{ secrets.DOCKER_REPO }} + sudo docker compose up -d + + - name: Upload Jacoco Report + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v3 + with: + name: jacoco-report + path: build/reports/jacoco/test/html \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c230f8..32d95bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,6 @@ name: Hertz Server - CI on: - push: - branches: [ "main" ] pull_request: branches: [ "main" ]