diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..bcc25302 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,64 @@ +name: CD with Gradle + +on: + push: + branches: [ "main", "develop" ] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'oracle' + + - name: Make env file + run: | + echo "${{ secrets.ENV }}" | base64 --decode > .env + + - name: Make docker-compose file + run: | + echo "\n${{ secrets.DOCKER_COMPOSE }}\n" | base64 --decode >> ./docker-compose.yml + + - name: Grant execute permission for gradlew + run: | + chmod +x gradlew + + - name: Build with Gradle + uses: gradle/gradle-build-action@v2.6.0 + with: + arguments: build + + - name: Docker Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Docker build & push to Docker Repo + run: | + docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }} . + docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }} + + - name: Deploy to server + uses: appleboy/ssh-action@master + id: deploy + with: + host: ${{ secrets.AWS_HOST }} + username: ubuntu + key: ${{ secrets.AWS_SSH_KEY }} + envs: GITHUB_SHA + script: | + sudo docker rm -f $(docker ps -qa) + sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }} + sudo docker-compose up -d + sudo docker image prune -f diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 00000000..b0bc5ecf --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,58 @@ +name: CI + +on: + push: + branches: [ "main", "develop" ] + pull_request: + branches: [ "main", "develop" ] + +permissions: + contents: read + checks: write + pull-requests: write + +jobs: + build: + name: Build and test project + runs-on: ubuntu-latest + + steps: + - name: Checkout the code + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'oracle' + + - name: Make env file + run: | + echo "${{ secrets.ENV }}" | base64 --decode > .env + + - name: Make docker-compose file + run: | + echo "\n${{ secrets.DOCKER_COMPOSE }}\n" | base64 --decode >> ./docker-compose.yml + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + uses: gradle/gradle-build-action@v2.6.0 + with: + arguments: build + cache-read-only: ${{ github.ref != 'ref/heads/main' && github.ref != 'ref/heads/develop' }} + + - name: Publish result of unit test + uses: EnricoMi/publish-unit-test-result-action@v2 + if: always() + with: + files: "**/build/test-results/test/TEST-*.xml" + github_token: ${{ github.token }} + + - name: Publish failure of unit test + uses: mikepenz/action-junit-report@v3 + if: always() + with: + report_paths: '**/build/test-results/test/TEST-*.xml' + github_token: ${{ github.token }}