name: Test Gitea Actions Workflow on: push: branches: - beta - testing - staging - production pull_request: branches: - main - beta - testing - client - staging - production jobs: build_test: name: Build and Test PR if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Install Dependencies run: npm i --legacy-peer-deps - name: Check Build run: npm run build - name: Audit Node Dependencies run: npm audit --audit-level=critical - name: Checkout Code (Full History) uses: actions/checkout@v3 with: fetch-depth: 0 - name: SonarQube Scan uses: kitabisa/sonarqube-action@v1.2.0 with: host: ${{ secrets.SONARQUBE_HOST }} login: ${{ secrets.SONARQUBE_TOKEN }} react_deploy: name: Deploy React App if: github.event_name == 'push' runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 # -------------------------------------------------------- # Determine SSH Host & Deployment Folder Based on Branch # -------------------------------------------------------- - name: Determine SSH & Deployment Path run: | echo "Detected branch: ${{ gitea.ref_name }}" BRANCH_NAME="${{ gitea.ref_name }}" case "$BRANCH_NAME" in beta) echo "DEPLOY_HOST=${{ vars.BETA_SERVER_HOST }}" >> $GITEA_ENV echo "DEPLOY_USER=${{ vars.BETA_SERVER_USER }}" >> $GITEA_ENV echo "DEPLOY_PASS=${{ secrets.BETA_SERVER_PASSWORD }}" >> $GITEA_ENV echo "DEPLOY_PORT=${{ secrets.BETA_SERVER_PORT }}" >> $GITEA_ENV echo "AUTH_TYPE=password" >> $GITEA_ENV PROJECT_PATH="/home/deployauto/Sprint_Release" ;; testing|client) echo "DEPLOY_HOST=${{ vars.BETA_SERVER_HOST }}" >> $GITEA_ENV echo "DEPLOY_USER=${{ vars.BETA_SERVER_USER }}" >> $GITEA_ENV echo "DEPLOY_PASS=${{ secrets.BETA_SERVER_PASSWORD }}" >> $GITEA_ENV echo "DEPLOY_PORT=${{ secrets.BETA_SERVER_PORT }}" >> $GITEA_ENV echo "AUTH_TYPE=password" >> $GITEA_ENV PROJECT_PATH="null" ;; staging) echo "DEPLOY_HOST=${{ vars.STAGING_SERVER_HOST }}" >> $GITEA_ENV echo "DEPLOY_USER=${{ vars.STAGING_SERVER_USER }}" >> $GITEA_ENV echo "DEPLOY_KEY=${{ secrets.STAGING_SERVER_PASSWORD }}" >> $GITEA_ENV echo "DEPLOY_PORT=${{ secrets.STAGING_SERVER_PORT }}" >> $GITEA_ENV echo "AUTH_TYPE=ssh" >> $GITEA_ENV PROJECT_PATH="null" ;; production) echo "DEPLOY_HOST=${{ vars.PRODUCTION_SERVER_HOST }}" >> $GITEA_ENV echo "DEPLOY_USER=${{ vars.PRODUCTION_SERVER_USER }}" >> $GITEA_ENV echo "DEPLOY_KEY=${{ secrets.PRODUCTION_SERVER_PASSWORD }}" >> $GITEA_ENV echo "DEPLOY_PORT=${{ secrets.PRODUCTION_SERVER_PORT }}" >> $GITEA_ENV echo "AUTH_TYPE=ssh" >> $GITEA_ENV PROJECT_PATH="null" ;; *) echo "Unknown branch: $BRANCH_NAME" exit 1 ;; esac echo "PROJECT_PATH=$PROJECT_PATH" >> $GITEA_ENV echo "BRANCH_NAME=$BRANCH_NAME" >> $GITEA_ENV - name: Deploy via Password Auth if: env.AUTH_TYPE == 'password' uses: appleboy/ssh-action@v1 env: BRANCH_NAME: ${{ env.BRANCH_NAME }} PROJECT_PATH: ${{ env.PROJECT_PATH }} with: host: ${{ env.DEPLOY_HOST }} username: ${{ env.DEPLOY_USER }} password: ${{ env.DEPLOY_PASS }} port: ${{ env.DEPLOY_PORT }} envs: PROJECT_PATH,BRANCH_NAME script: | cd "$PROJECT_PATH/reactautodeploy" git pull origin $BRANCH_NAME npm i && npm run build - name: Deploy via SSH Key if: env.AUTH_TYPE == 'ssh' uses: appleboy/ssh-action@v1 env: BRANCH_NAME: ${{ env.BRANCH_NAME }} PROJECT_PATH: ${{ env.PROJECT_PATH }} with: host: ${{ env.DEPLOY_HOST }} username: ${{ env.DEPLOY_USER }} key: ${{ env.DEPLOY_KEY }} port: ${{ env.DEPLOY_PORT }} envs: PROJECT_PATH,BRANCH_NAME script: | cd "$PROJECT_PATH/reactautodeploy" git pull origin $BRANCH_NAME npm i && npm run build