Skip to content

Merge pull request #279 from project-mos/refactor/#278 #180

Merge pull request #279 from project-mos/refactor/#278

Merge pull request #279 from project-mos/refactor/#278 #180

Workflow file for this run

name: ๐Ÿš€ Deploy workflow on test environment
on:
push:
branches: [ 'release/**', 'release' ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# ์ฝ”๋“œ ๋ณต์‚ฌ
- name: check out the repo
uses: actions/checkout@v4
- name: Create .env file
run: |
echo "CORS_ALLOWED_ORIGINS=${{secrets.CORS_ALLOWED_ORIGINS}}" >> .env
echo "KAKAO_CLIENT_ID=${{secrets.KAKAO_CLIENT_ID}}" >> .env
echo "KAKAO_CLIENT_SECRET=${{secrets.KAKAO_CLIENT_SECRET}}" >> .env
echo "KAKAO_REDIRECT_URI=${{secrets.KAKAO_REDIRECT_URI}}" >> .env
echo "GOOGLE_CLIENT_ID=${{secrets.GOOGLE_CLIENT_ID}}" >> .env
echo "GOOGLE_CLIENT_SECRET=${{secrets.GOOGLE_CLIENT_SECRET}}" >> .env
echo "GOOGLE_REDIRECT_URI=${{secrets.GOOGLE_REDIRECT_URI}}" >> .env
echo "NAVER_CLIENT_ID=${{secrets.NAVER_CLIENT_ID}}" >> .env
echo "NAVER_CLIENT_SECRET=${{secrets.NAVER_CLIENT_SECRET}}" >> .env
echo "NAVER_REDIRECT_URI=${{secrets.NAVER_REDIRECT_URI}}" >> .env
echo "JWT_SECRET=${{secrets.JWT_SECRET}}" >> .env
echo "JWT_ACCESS_EXPIRATION=${{secrets.JWT_ACCESS_EXPIRATION}}" >> .env
echo "JWT_ACCESS_HEADER_NAME=${{secrets.JWT_ACCESS_HEADER_NAME}}" >> .env
echo "JWT_ACCESS_COOKIE_NAME=${{secrets.JWT_ACCESS_COOKIE_NAME}}" >> .env
echo "JWT_REFRESH_EXPIRATION=${{secrets.JWT_REFRESH_EXPIRATION}}" >> .env
echo "JWT_REFRESH_HEADER_NAME=${{secrets.JWT_REFRESH_HEADER_NAME}}" >> .env
echo "JWT_REFRESH_COOKIE_NAME=${{secrets.JWT_REFRESH_COOKIE_NAME}}" >> .env
echo "DATASOURCE_URL=${{secrets.DATASOURCE_RELEASE_URL}}" >> .env
echo "GENERATE_DDL=${{secrets.GENERATE_DDL}}" >> .env
echo "DATABASE_USERNAME=${{secrets.DATABASE_USERNAME}}" >> .env
echo "DATABASE_PASSWORD=${{secrets.DATABASE_PASSWORD}}" >> .env
echo "DATABASE_DRIVER_CLASS_NAME=${{secrets.DATASOURCE_DRIVER_CLASS_NAME}}" >> .env
echo "DDL_AUTO=${{secrets.DDL_AUTH}}" >> .env
echo "REDIS_HOST=${{secrets.REDIS_RELEASE_HOST}}" >> .env
echo "REDIS_PORT=${{secrets.REDIS_PORT}}" >> .env
echo "REDIS_PRIVATE_CHAT_CHANNEL=${{secrets.REDIS_PRIVATE_CHAT_CHANNEL}}" >> .env
echo "REDIS_STUDY_CHAT_CHANNEL=${{secrets.REDIS_PRIVATE_CHAT_CHANNEL}}" >> .env
echo "REDIS_PRIVATE_CHAT_ROOM_INFO_CHANNEL=${{secrets.REDIS_PRIVATE_CHAT_ROOM_INFO_CHANNEL}}" >> .env
echo "REDIS_STUDY_CHAT_ROOM_INFO_CHANNEL=${{secrets.REDIS_STUDY_CHAT_ROOM_INFO_CHANNEL}}" >> .env
echo "AWS_ACCESS_KEY=${{secrets.AWS_ACCESS_KEY_ID}}" >> .env
echo "AWS_SECRET_KEY=${{secrets.AWS_SECRET_ACCESS_KEY}}" >> .env
echo "AWS_S3_BUCKET=${{secrets.AWS_S3_BUCKET}}" >> .env
echo "FIREBASE_SERVICE_ACCOUNT_KEY_PATH=${{secrets.FIREBASE_SERVICE_ACCOUNT_KEY_PATH}}" >> .env
- name: Create firebase directory
run: mkdir -p src/main/resources/firebase
# create serviceAccountKey.json
- name: create serviceAccountKey.json
id: create-json
uses: jsdaniell/[email protected]
with:
name: "serviceAccountKey.json"
json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_JSON }}
dir: 'src/main/resources/firebase'
# Gradle ํ…Œ์ŠคํŠธ ์‹คํ–‰ (ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์ค‘๋‹จ๋จ)
- name: Run tests
run: ./gradlew test --no-daemon
# ๋„์ปค ๋กœ๊ทธ์ธ
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ
- name: Build Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/mos:${{ github.sha }} .
docker tag ${{ secrets.DOCKER_USERNAME }}/mos:${{ github.sha }} ${{ secrets.DOCKER_USERNAME }}/mos:latest
docker push ${{ secrets.DOCKER_USERNAME }}/mos:${{ github.sha }}
docker push ${{ secrets.DOCKER_USERNAME }}/mos:latest
# AWS ์ž๊ฒฉ ์ฆ๋ช…
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
# ๋ฐฐํฌ ์‹œ์ž‘
- name: ๐Ÿš€ Deploy to EC2 with CodeDeploy
run: |
aws deploy create-deployment \
--application-name mos-deployer \
--deployment-config-name CodeDeployDefault.AllAtOnce \
--deployment-group-name mos-release \
--github-location repository=${{ github.repository }},commitId=${{ github.sha }}