From 0471a757d0e1f854bffa07dfd52f9109347f5340 Mon Sep 17 00:00:00 2001 From: skywalker Date: Thu, 29 Aug 2024 14:24:15 +0300 Subject: [PATCH] fix(staging): deploy to staging --- .github/workflows/cicd.yml | 216 +++++++++++++++++-------------------- 1 file changed, 97 insertions(+), 119 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 47451719..050673a9 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -182,11 +182,70 @@ jobs: with: distribution: temurin java-version: "21.0" + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - uses: actions/setup-node@v4 with: node-version: "20.16.0" + - name: "Install `Redocly`" + run: npm i -g @redocly/cli@latest + - name: Cache npm dependencies + uses: actions/cache@v2 + with: + path: '~/.npm' + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: Install Dependencies + run: npm install --prefix client + - name: Install SSH Key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.DEPLOY_SERVER_SSH_PRIVATE_KEY }} + known_hosts: 'just-a-placeholder-so-we-dont-get-errors' + - name: Adding Known Hosts + run: ssh-keyscan -H kiryuxa.com >> ~/.ssh/known_hosts + - name: Deploy at home lab + run: echo "$(pwd)" && ./tools/scripts/deploy.sh dev + env: + SSH_USER: ${{ secrets.SSH_USER }} + SSH_HOST: ${{ secrets.SSH_HOST }} + MUSE_DOCKER_DEFAULT_CONTEXT: default + MUSE_JWT_SECRET_KEY: ${{ secrets.MUSE_JWT_SECRET_KEY }} + CI: false # https://stackoverflow.com/questions/34917977/disable-npm-warnings-as-errors-build-definition-tfs + deploy-staging: + name: "[SERVER] Deploy to Staging" + if: github.event.ref == 'refs/heads/main' + needs: + - openapi-linter + - client-linter + - client-static-analyzer + - server-linter + - server-static-analyzer + - server-unit-tests + - server-sonarqube + runs-on: ubuntu-22.04 + environment: + name: staging + url: http://staging.muse.kiryuxa.com + steps: + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: myshx + password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: Checkout Code + uses: actions/checkout@v4 + - name: Set up JDK 21 (Temurin) + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21.0" - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - uses: actions/setup-node@v4 + with: + node-version: "20.16.0" - name: "Install `Redocly`" run: npm i -g @redocly/cli@latest - name: Cache npm dependencies @@ -206,83 +265,13 @@ jobs: - name: Adding Known Hosts run: ssh-keyscan -H kiryuxa.com >> ~/.ssh/known_hosts - name: Deploy at home lab - run: echo "$(pwd)" && ./tools/scripts/deploy.sh dev + run: echo "$(pwd)" && ./tools/scripts/deploy.sh staging env: SSH_USER: ${{ secrets.SSH_USER }} SSH_HOST: ${{ secrets.SSH_HOST }} MUSE_DOCKER_DEFAULT_CONTEXT: default MUSE_JWT_SECRET_KEY: ${{ secrets.MUSE_JWT_SECRET_KEY }} CI: false # https://stackoverflow.com/questions/34917977/disable-npm-warnings-as-errors-build-definition-tfs -# deploy-staging: -# name: "[SERVER] Deploy to Staging" -# if: github.event.ref == 'refs/heads/main' -# needs: -# - openapi-linter -# - client-linter -# - client-static-analyzer -# - server-linter -# - server-static-analyzer -# - server-unit-tests -# - server-sonarqube -# runs-on: ubuntu-22.04 -# environment: -# name: staging -# url: http://staging.muse.kiryuxa.com -# steps: -# - name: Set up JDK 21 (Temurin) -# uses: actions/setup-java@v4 -# with: -# distribution: temurin -# java-version: "21.0" -# - name: Check out the repo -# uses: actions/checkout@v4 -# - name: Log in to Docker Hub -# run: docker login -u myshx -p ${{ secrets.DOCKER_HUB_TOKEN }} -# - name: Build Server Docker Image -# run: > -# ./tools/scripts/server/buildJar.sh -# -# docker build . -t "myshx/muse-server:staging-${{ github.sha }}" -f ./server/Dockerfile -# - name: Push Server Docker Image -# run: docker push "myshx/muse-server:staging-${{ github.sha }}" -# - name: Run server at home lab -# uses: appleboy/ssh-action@master -# env: -# GIT_COMMIT_SHA: ${{ github.sha }} -# STAGING_PORT: ${{ env.STAGING_PORT }} -# with: -# host: ${{ secrets.SERVER_HOST }} -# username: ${{ secrets.SERVER_USERNAME }} -# password: ${{ secrets.SERVER_PASSWORD }} -# port: ${{ secrets.SERVER_PORT }} -# envs: GIT_COMMIT_SHA, STAGING_PORT -# script: > -# export GIT_COMMIT_SHA=$GIT_COMMIT_SHA -# -# export STAGING_PORT=$STAGING_PORT -# -# -# staging_container_ids=$(docker inspect --format='{{.Config.Image}} {{.Id}}' $(docker ps -aq) | grep -E 'myshx/muse-server:staging-\b[0-9a-f]{40}\b' | awk '{print $2}') -# -# staging_image_ids=$(docker inspect --format='{{.Config.Image}} {{.Image}}' $(docker ps -aq) | grep -E 'myshx/muse-server:staging-\b[0-9a-f]{40}\b' | awk '{print $2}') -# -# -# for container_id in $staging_container_ids; do -# docker stop "$container_id" -# done -# -# -# for container_id in $staging_container_ids; do -# docker rm "$container_id" -# done -# -# -# for image_id in $staging_image_ids; do -# docker rmi -f "$image_id"; -# done -# -# -# docker run -d -p $STAGING_PORT:8080 "myshx/muse-server:staging-$GIT_COMMIT_SHA" # deploy-prod: # name: "[SERVER] Deploy to Prod" # needs: @@ -292,57 +281,46 @@ jobs: # name: prod # url: http://prod.muse.kiryuxa.com # steps: +# - name: Login to Docker Hub +# uses: docker/login-action@v3 +# with: +# username: myshx +# password: ${{ secrets.DOCKER_HUB_TOKEN }} +# - name: Checkout Code +# uses: actions/checkout@v4 # - name: Set up JDK 21 (Temurin) # uses: actions/setup-java@v4 # with: # distribution: temurin # java-version: "21.0" -# - name: Check out the repo -# uses: actions/checkout@v4 -# - name: Log in to Docker Hub -# run: docker login -u myshx -p ${{ secrets.DOCKER_HUB_TOKEN }} -# - name: Build Server Docker Image -# run: > -# ./tools/scripts/server/buildJar.sh -# -# docker build . -t "myshx/muse-server:prod-${{ github.sha }}" -f ./server/Dockerfile -# - name: Push Server Docker Image -# run: docker push "myshx/muse-server:prod-${{ github.sha }}" -# - name: Run server at home lab -# uses: appleboy/ssh-action@master -# env: -# GIT_COMMIT_SHA: ${{ github.sha }} -# PROD_PORT: ${{ env.PROD_PORT }} +# - name: Set up Docker Buildx +# uses: docker/setup-buildx-action@v3 +# - uses: actions/setup-node@v4 +# with: +# node-version: "20.16.0" +# - name: "Install `Redocly`" +# run: npm i -g @redocly/cli@latest +# - name: Cache npm dependencies +# uses: actions/cache@v2 # with: -# host: ${{ secrets.SERVER_HOST }} -# username: ${{ secrets.SERVER_USERNAME }} -# password: ${{ secrets.SERVER_PASSWORD }} -# port: ${{ secrets.SERVER_PORT }} -# envs: GIT_COMMIT_SHA, PROD_PORT -# script: > -# export GIT_COMMIT_SHA=$GIT_COMMIT_SHA -# -# export PROD_PORT=$PROD_PORT -# -# -# prod_container_ids=$(docker inspect --format='{{.Config.Image}} {{.Id}}' $(docker ps -aq) | grep -E 'myshx/muse-server:prod-\b[0-9a-f]{40}\b' | awk '{print $2}') -# -# prod_image_ids=$(docker inspect --format='{{.Config.Image}} {{.Image}}' $(docker ps -aq) | grep -E 'myshx/muse-server:prod-\b[0-9a-f]{40}\b' | awk '{print $2}') -# -# -# for container_id in $prod_container_ids; do -# docker stop "$container_id" -# done -# -# -# for container_id in $prod_container_ids; do -# docker rm "$container_id" -# done -# -# -# for image_id in $prod_image_ids; do -# docker rmi -f "$image_id"; -# done -# -# -# docker run -d -p $PROD_PORT:8080 "myshx/muse-server:prod-$GIT_COMMIT_SHA" +# path: '~/.npm' +# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} +# restore-keys: | +# ${{ runner.os }}-node- +# - name: Install Dependencies +# run: npm install --prefix client +# - name: Install SSH Key +# uses: shimataro/ssh-key-action@v2 +# with: +# key: ${{ secrets.DEPLOY_SERVER_SSH_PRIVATE_KEY }} +# known_hosts: 'just-a-placeholder-so-we-dont-get-errors' +# - name: Adding Known Hosts +# run: ssh-keyscan -H kiryuxa.com >> ~/.ssh/known_hosts +# - name: Deploy at home lab +# run: echo "$(pwd)" && ./tools/scripts/deploy.sh prod +# env: +# SSH_USER: ${{ secrets.SSH_USER }} +# SSH_HOST: ${{ secrets.SSH_HOST }} +# MUSE_DOCKER_DEFAULT_CONTEXT: default +# MUSE_JWT_SECRET_KEY: ${{ secrets.MUSE_JWT_SECRET_KEY }} +# CI: false # https://stackoverflow.com/questions/34917977/disable-npm-warnings-as-errors-build-definition-tfs \ No newline at end of file