서비스 CI/CD를 위해 gitaction 사용하기로 결정
git aciton(build) -> S3에 code bundle 업로드 -> elasticbeanstalk deploy(eb deploy)
Classic_DRF/.github/workflows/main.yml
name: PlayplzAction-deploy
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create ZIP deployment package
run: zip -r deploy_package.zip ./
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEYID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Create env file
run: |
touch .env
echo SECRET_KEY="${{ secrets.SECRET_KEY }}" >> .env
echo VIMEO_SECRET_KEY = "${{ secrets.VIMEO_SECRET_KEY }}" >> .env
echo DEBUG = "${{ secrets.DEBUG }}" >> .env
echo DB_NAME= "${{ secrets.DB_NAME }}">> .env
echo DB_USER= "${{ secrets.DB_USER }}">> .env
echo DB_PASSWORD= "${{ secrets.DB_PASSWORD }}">> .env
echo DB_HOST= "${{ secrets.DB_HOST }}">> .env
echo DB_PORT= "${{ secrets.DB_PORT }}">> .env
echo AWS_ACCESS_KEYID= "${{ secrets.AWS_ACCESS_KEYID }}">> .env
echo AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> .env
echo AWS_STORAGE_BUCKET_NAME="${{ secrets.AWS_STORAGE_BUCKET_NAME }}" >> .env
echo AWS_REGION= "${{ secrets.AWS_REGION}}">> .env
cat .env
- name: Upload package to S3 bucket
run: aws s3 cp deploy_package.zip s3://playplz/gitaction/deploy-${{ github.sha }}.zip
- name: Create new ElasticBeanstalk Application Version
run: |
aws elasticbeanstalk create-application-version \
--application-name classic_DRF \
--source-bundle S3Bucket="playplz",S3Key="gitaction/deploy-${{ github.sha }}.zip" \
--version-label "ver-${{ github.sha }}" \
--description "commit-sha-${{ github.sha }}"
- name: Deploy new ElasticBeanstalk Application Version
run: aws elasticbeanstalk update-environment --environment-name Classicdrf-env --version-label "ver-${{ github.sha }}"
# - name: Generate deployment package
# run: zip -r deploy-${{ github.sha }}.zip . -x '*.git*'
# - name: Beanstalk Deploy for app
# uses: einaregilsson/beanstalk-deploy@v18
# with:
# aws_access_key: ${{secrets.AWS_ACCESS_KEYID}}
# aws_secret_key: ${{secrets.AWS_SECRET_ACCESS_KEY}}
# application_name: PLAYPLZ_NEW
# environment_name: Playplznew-dev
# region: ${{secrets.AWS_REGION}}
# version_label: "ver-${{ github.sha }}"
# deployment_package: deploy-${{ github.sha }}.zip
# use_existing_version_if_available : "true"
# existing_bucket_name : playplz
결과