diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml new file mode 100644 index 00000000..765330d2 --- /dev/null +++ b/.github/workflows/CD.yml @@ -0,0 +1,54 @@ +# workflow의 이름 +name: CD + +# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정 +on: + push: + branches: [ develop ] # main branch로 push 될 때 실행됩니다. + +# 해당 yml 내에서 사용할 key - value +env: + S3_BUCKET_NAME: tuenfun-dev-deploy + +# workflow는 한개 이상의 job을 가지며, 각 job은 여러 step에 따라 단계를 나눌 수 있습니다. +jobs: + build: + name: CD + # 해당 jobs에서 아래의 steps들이 어떠한 환경에서 실행될 것인지를 지정합니다. + runs-on: ubuntu-latest + + steps: + # 작업에서 액세스할 수 있도록 $GITHUB_WORKSPACE에서 저장소를 체크아웃합니다. + - uses: actions/checkout@v2 + - name: Set up JDK 21 + uses: actions/setup-java@v2 + with: + java-version: '21' + distribution: 'zulu' + + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew + shell: bash + + - 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 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + + # script files 복사 + - name: Copy script + run: cp ./scripts/*.sh ./deploy + + # S3에 업로드 + - name: Upload to S3 + run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \ No newline at end of file