diff --git a/.github/workflows/ci.yml b/.github/workflows/develop-ci.yml similarity index 59% rename from .github/workflows/ci.yml rename to .github/workflows/develop-ci.yml index 58a97f4f..5a0e09bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/develop-ci.yml @@ -4,7 +4,9 @@ on: pull_request: branches: - 'develop' - - 'master' + push: + branches: + - 'develop' jobs: build: @@ -34,3 +36,15 @@ jobs: - name: Build with Gradle run: ./gradlew build + + - name: Login Dockerhub + env: + DOCKER_USERNAME: ${{secrets.DOCKERHUB_USERNAME}} + DOCKER_PASSWORD: ${{secrets.DOCKERHUB_TOKEN}} + run: docker login -u ${{secrets.DOCKERHUB_USERNAME}} -p ${{secrets.DOCKERHUB_TOKEN}} + + - name: Build the Docker image + run: docker build --platform linux/amd64 --build-arg DEPENDENCY=build/dependency -f DockerfileDev -t ${{secrets.DOCKERHUB_USERNAME}}/dotori-dev . + + - name: Docker Push + run: docker push ${{secrets.DOCKERHUB_USERNAME}}/dotori-dev diff --git a/.github/workflows/dotori-develop-cd.yml b/.github/workflows/dotori-develop-cd.yml index c79deab9..97606b24 100644 --- a/.github/workflows/dotori-develop-cd.yml +++ b/.github/workflows/dotori-develop-cd.yml @@ -1,63 +1,51 @@ -name: Dotori Develop Server CD +name: Java CICD with Gradle on: push: - branches: [ develop ] - -env: - S3_BUCKET_NAME: dotori-deploy-bucket - PROJECT_NAME: Dotori-V2-Dev + branches: + - 'develop' jobs: build: - name: CD - runs-on: ubuntu-latest + + runs-on: self-hosted steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: '11' - distribution: 'zulu' - - - name: Grant execute permission for gradlew - run: chmod +x ./gradlew - shell: bash + distribution: 'temurin' - - name: Create application.yml on dev + - name: Create application.yml run: | + mkdir ./src/main/resources touch ./src/main/resources/application.yml - echo "${{ secrets.APPLICATION_YML }}" >> ./src/main/resources/application.yml - shell: bash + echo "${{ secrets.APPLICATION_YML }}" >> ./src/main/resources/application.yml + + - name: Create application-dev.yml + run: | + touch ./src/main/resources/application-dev.yml + echo "${{ secrets.APPLICATION_DEV_YML }}" >> ./src/main/resources/application-dev.yml + + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew - name: Build with Gradle run: ./gradlew build - shell: bash - - - name: Make zip file - run: zip -r ./$GITHUB_SHA.zip . - shell: bash - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }} - aws-region: ${{ secrets.AWS_REGION }} + username: ${{secrets.DOCKERHUB_USERNAME}} + password: ${{secrets.DOCKERHUB_TOKEN}} - - name: Copy script - run: cp ./deploy-execute.sh ./deploy + - name: Pull Docker image + run: sudo docker pull ${{secrets.DOCKERHUB_USERNAME}}/dotori-dev - - name: Upload to S3 - run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$PROJECT_NAME/$GITHUB_SHA.zip + - name: Delete Old docker container + run: sudo docker rm -f dotori-dev || true - - name: Deploy - run: | - aws deploy create-deployment \ - --application-name dotori-v2 \ - --deployment-config-name CodeDeployDefault.OneAtATime \ - --deployment-group-name dotori-deploy-group \ - --file-exists-behavior OVERWRITE \ - --s3-location bucket=dotori-deploy-bucket,bundleType=zip,key=Dotori-V2-Dev/$GITHUB_SHA.zip \ - --region ap-northeast-2 \ \ No newline at end of file + - name: Run Docker Container + run: sudo docker run -d -p 8080:8080 --name dotori-dev ${{secrets.DOCKERHUB_USERNAME}}/dotori-dev \ No newline at end of file diff --git a/.github/workflows/master-cd.yml b/.github/workflows/dotori-master-cd.yml similarity index 72% rename from .github/workflows/master-cd.yml rename to .github/workflows/dotori-master-cd.yml index b057d204..a06352c7 100644 --- a/.github/workflows/master-cd.yml +++ b/.github/workflows/dotori-master-cd.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: self-hosted steps: - uses: actions/checkout@v3 @@ -20,6 +20,7 @@ jobs: - name: Create application.yml run: | + mkdir ./src/main/resources touch ./src/main/resources/application.yml echo "${{ secrets.APPLICATION_YML }}" >> ./src/main/resources/application.yml @@ -40,8 +41,11 @@ jobs: username: ${{secrets.DOCKERHUB_USERNAME}} password: ${{secrets.DOCKERHUB_TOKEN}} - - name: Build the Docker image - run: docker build --platform linux/amd64 --build-arg DEPENDENCY=build/dependency -f DockerfileProd -t ${{secrets.DOCKERHUB_USERNAME}}/dotori-prod . + - name: Pull Docker image + run: sudo docker pull ${{secrets.DOCKERHUB_USERNAME}}/dotori - - name: Docker Push - run: docker push ${{secrets.DOCKERHUB_USERNAME}}/dotori-prod + - name: Delete Old docker container + run: sudo docker rm -f dotori || true + + - name: Run Docker Container + run: sudo docker run -d -p 8080:8080 --name dotori ${{secrets.DOCKERHUB_USERNAME}}/dotori \ No newline at end of file diff --git a/.github/workflows/master-ci.yml b/.github/workflows/master-ci.yml new file mode 100644 index 00000000..fc5d9718 --- /dev/null +++ b/.github/workflows/master-ci.yml @@ -0,0 +1,50 @@ +name: Java CICD with Gradle + +on: + pull_request: + branches: + - 'master' + push: + branches: + - 'master' + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + + - name: Create application.yml + run: | + touch ./src/main/resources/application.yml + echo "${{ secrets.APPLICATION_YML }}" >> ./src/main/resources/application.yml + + - name: Create application-prod.yml + run: | + touch ./src/main/resources/application-dev.yml + echo "${{ secrets.APPLICATION_PROD_YML }}" >> ./src/main/resources/application-prod.yml + + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew + + - name: Build with Gradle + run: ./gradlew build + + - name: Login Dockerhub + env: + DOCKER_USERNAME: ${{secrets.DOCKERHUB_USERNAME}} + DOCKER_PASSWORD: ${{secrets.DOCKERHUB_TOKEN}} + run: docker login ${{secrets.DOCKERHUB_USERNAME}} -p ${{secrets.DOCKERHUB_TOKEN}} + + - name: Build the Docker image + run: docker build --platform linux/amd64 --build-arg DEPENDENCY=build/dependency -f DockerfileProd -t ${{secrets.DOCKERHUB_USERNAME}}/dotori . + + - name: Docker Push + run: docker push ${{secrets.DOCKERHUB_USERNAME}}/dotori