Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build(dev): dev용 배포 workflow #84

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: fogfog-server-dev

on:
push:
branches: [feature/83]

jobs:
build:
name: build pipeline
# env:
# PORT: ${{ secrets.PORT }}
# MONGODB_URI_DEV: ${{ secrets.MONGODB_URI_DEV }}
# MONGODB_URI_PROD: ${{ secrets.MONGODB_URI_PROD }}
# REGION: ${{ secrets.REGION }}

runs-on: ubuntu-22.04

strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v2

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}

- name: Install dependencies
run: yarn
- name: Run build
run: yarn build

deploy:
name: deploy pipeline
runs-on: ubuntu-22.04

strategy:
matrix:
node-version: ['20.x']
needs: build
steps:
- uses: actions/checkout@v2
- name: Create .env file
run: |
touch .env
echo PORT=8081 >> .env
echo DATABASE_URL=${{ secrets.DATABASE_URL }} >> .env
echo SENTRY_WEBHOOK_URL=${{ secrets.SENTRY_WEBHOOK_URL }} >> .env
echo SENTRY_DSN=${{ secrets.SENTRY_DSN }} >> .env
echo KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }} >> .env
echo KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }} >> .env
echo KAKAO_ADMIN_KEY=${{ secrets.KAKAO_ADMIN_KEY }} >> .env
echo ACCESS_TOKEN_SECRET=${{ secrets.ACCESS_TOKEN_SECRET }} >> .env
echo REFRESH_TOKEN_SECRET=${{ secrets.REFRESH_TOKEN_SECRET }} >> .env
echo DEFAULT_IMAGE=${{ secrets.DEFAULT_IMAGE }} >> .env
echo APPLE_CLIENTID=${{ secrets.APPLE_CLIENTID }} >> .env
echo APPLE_TEAMID=${{ secrets.APPLE_TEAMID }} >> .env
echo APPLE_KEYFILE_PATH=${{ secrets.APPLE_KEYFILE_PATH }} >> .env
echo APPLE_KEYID=${{ secrets.APPLE_KEYID }} >> .env
cat .env

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}

- name: Install dependencies
run: yarn
- name: Run build
run: yarn build

- name: Create apple .p8
run: |
cd dist
touch ${{ secrets.APPLE_KEYFILE_PATH }}
echo "${{ secrets.APPLE_PRIVATE_KEY }}" > ${{ secrets.APPLE_KEYFILE_PATH }}

- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{secrets.DOCKER_HUB_USERNAME}}
password: ${{secrets.DOCKER_HUB_TOKEN}}

- name: build and tagging release to DockerHub
env:
NAME: ${{secrets.DOCKER_HUB_USERNAME}}
REPO: fogfogdev
run: |
shortHash=$(git rev-parse --short ${{ github.sha }})
docker build -t $REPO -f Dockerfile.dev .
docker tag $REPO:latest $NAME/$REPO:latest
docker tag $REPO:latest $NAME/$REPO:dev
docker tag $REPO:latest $NAME/$REPO:dev-$shortHash
docker push $NAME/$REPO:latest
docker push $NAME/$REPO:dev
docker push $NAME/$REPO:dev-$shortHash

# - name: Run Deploy Script
# uses: appleboy/ssh-action@master
# with:
# host: ${{ secrets.REMOTE_IP }}
# username: ${{ secrets.REMOTE_SSH_ID }}
# key: ${{ secrets.REMOTE_SSH_KEY }}
# port: ${{ secrets.REMOTE_SSH_PORT }}
# script: |
# cd /opt/fogfog/docker
# sudo /opt/fogfog/docker/dev-deploy.sh

- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
author_name: Github Action Push Server
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required
if: always() # Pick up events even if the job fails or is canceled.
12 changes: 7 additions & 5 deletions dockerfile.dev → Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -1,34 +1,36 @@
FROM node:20-alpine AS base

# node prune 설정
RUN apk add curl bash && curl -sfL https://gobinaries.com/tj/node-prune | bash -s -- -b /usr/local/bin

WORKDIR /usr/src/app

COPY package.json ./
COPY prisma ./
COPY .env ./

RUN ls -a && yarn

FROM base AS dev

COPY . .

RUN ls -a && yarn build
RUN yarn build

# run node prune - 사용하지 않는 모듈 제거
RUN /usr/local/bin/node-prune
# RUN /usr/local/bin/node-prune

FROM node:20-alpine

COPY --from=base /usr/src/app/package.json ./
COPY --from=base /usr/src/app/.env ./
COPY --from=dev /usr/src/app/dist/ ./dist/
COPY --from=dev /usr/src/app/node_modules/ ./node_modules/

# port 설정
EXPOSE 3000
EXPOSE 8081

# 환경 변수 설정
ENV NODE_ENV=development

# start
CMD ["node", "dist/src/main.js"]
CMD ["node", "dist/main.js"]
Loading