From 9e3fe26601f53a3eb5d258fdd6b7a6046f69b134 Mon Sep 17 00:00:00 2001 From: jokj624 Date: Mon, 8 Jan 2024 00:48:32 +0900 Subject: [PATCH] Feat: prod actions script (test) --- .github/workflows/main-test.yml | 91 +++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 .github/workflows/main-test.yml diff --git a/.github/workflows/main-test.yml b/.github/workflows/main-test.yml new file mode 100644 index 0000000..ae13859 --- /dev/null +++ b/.github/workflows/main-test.yml @@ -0,0 +1,91 @@ +name: havit-server-prod-test + +on: + push: + branches: [feature/48] + +jobs: + build: + env: + PORT: ${{ secrets.PORT }} + MONGODB_URI_DEV: ${{ secrets.MONGODB_URI_DEV }} + MONGODB_URI_PROD: ${{ secrets.MONGODB_URI_PROD }} + REGION: ${{ secrets.REGION }} + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.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: Create .env file + run: | + touch .env + echo MONGODB_URI_DEV=${{ secrets.MONGODB_URI_DEV }} >> .env + echo MONGODB_URI_PROD=${{ secrets.MONGODB_URI_PROD }} >> .env + echo PORT=${{ secrets.PORT }} >> .env + echo DEV_PORT=${{ secrets.DEV_PORT }} >> .env + echo DOCKERFILE=Dockerfile >> .env + cat .env + + - name: create-json + id: create-json + uses: jsdaniell/create-json@v1.2.1 + with: + name: 'fcm-admin-credentials.json' + json: ${{ secrets.FIREBASE_JSON_DEV }} + dir: 'src/' + + - name: Install dependencies + run: yarn + - name: Run build + run: yarn build + + - 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: havit-push + run: | + shortHash=$(git rev-parse --short ${{ github.sha }}) + docker build -t $REPO -f Dockerfile . + docker tag $REPO:latest $NAME/$REPO:latest + docker tag $REPO:latest $NAME/$REPO:prod + docker tag $REPO:latest $NAME/$REPO:prod-$shortHash + docker push $NAME/$REPO:latest + docker push $NAME/$REPO:prod + docker push $NAME/$REPO:prod-$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/havit/docker + # sudo /opt/havit/docker/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_DEV }} # required + if: always() # Pick up events even if the job fails or is canceled.