diff --git a/.github/workflows/deploy-Dataspace-dev.yml b/.github/workflows/deploy-Dataspace-dev.yml index 1daa65e4..90e625e5 100644 --- a/.github/workflows/deploy-Dataspace-dev.yml +++ b/.github/workflows/deploy-Dataspace-dev.yml @@ -1,26 +1,12 @@ name: Update DataSpace Dev on: - workflow_call: - secrets: - KEYCLOAK_CLIENT_ID: { required: true } - KEYCLOAK_CLIENT_SECRET: { required: true } - AUTH_ISSUER: { required: true } - NEXTAUTH_URL: { required: true } - NEXT_PUBLIC_NEXTAUTH_URL: { required: true } - NEXTAUTH_SECRET: { required: true } - END_SESSION_URL: { required: true } - REFRESH_TOKEN_URL: { required: true } - NEXT_PUBLIC_BACKEND_URL: { required: true } - BACKEND_GRAPHQL_URL: { required: true } - NEXT_PUBLIC_ENABLE_ACCESSMODEL: { required: true } - NEXT_PUBLIC_BACKEND_GRAPHQL_URL: { required: true } - BACKEND_URL: { required: true } - NEXT_PUBLIC_PLATFORM_URL: { required: true } - NEXT_PUBLIC_ANALYTICS_URL: { required: true } + push: + branches: ['dev'] jobs: deploy: + name: Deploy to Dev Server runs-on: ubuntu-latest env: KEYCLOAK_CLIENT_ID: ${{ secrets.KEYCLOAK_CLIENT_ID }} @@ -58,6 +44,16 @@ jobs: - name: Rename public to public2 run: mv public public2 + - name: Backup existing .next and public folders + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST_DEV_DS }} + username: ${{ secrets.EC2_USERNAME_DS }} + key: ${{ secrets.EC2_PRIVATE_KEY }} + script: | + cp -r DataExchange/DataExFrontend/.next DataExchange/DataExFrontend/.next_backup || true + cp -r DataExchange/DataExFrontend/public DataExchange/DataExFrontend/public_backup || true + - name: Send .next2 to EC2 uses: appleboy/scp-action@master with: @@ -87,4 +83,46 @@ jobs: rm -rf DataExchange/DataExFrontend/public mv DataExchange/DataExFrontend/.next2 DataExchange/DataExFrontend/.next mv DataExchange/DataExFrontend/public2 DataExchange/DataExFrontend/public - /home/ubuntu/.nvm/versions/node/v20.11.1/bin/pm2 restart dataspace \ No newline at end of file + /home/ubuntu/.nvm/versions/node/v20.11.1/bin/pm2 restart dataspace + + smoke: + name: Run Smoke Tests from QA Repo + needs: deploy + uses: saqibmanan/CivicDataSpace-test/.github/workflows/run-smoke.yml@dev + secrets: + BASE_URL: ${{ secrets.BASE_URL }} + HOME_URL_DEV: ${{ secrets.HOME_URL_DEV }} + TEST_EMAIL_1: ${{ secrets.TEST_EMAIL_1 }} + TEST_PASSWORD_1: ${{ secrets.TEST_PASSWORD_1 }} + TEST_EMAIL_2: ${{ secrets.TEST_EMAIL_2 }} + TEST_PASSWORD_2: ${{ secrets.TEST_PASSWORD_2 }} + QA_REPO_PAT: ${{ secrets.QA_REPO_PAT }} + + revert_deploy: + name: Revert Deployment on Smoke Test Failure + needs: smoke_tests + if: failure() + runs-on: ubuntu-latest + + steps: + - name: Revert to Backup Build on EC2 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST_DEV_DS }} + username: ${{ secrets.EC2_USERNAME_DS }} + key: ${{ secrets.EC2_PRIVATE_KEY }} + script: | + rm -rf DataExchange/DataExFrontend/.next + rm -rf DataExchange/DataExFrontend/public + mv DataExchange/DataExFrontend/.next_backup DataExchange/DataExFrontend/.next + mv DataExchange/DataExFrontend/public_backup DataExchange/DataExFrontend/public + /home/ubuntu/.nvm/versions/node/v20.11.1/bin/pm2 restart dataspace + + notify_success: + name: ✅ Deployment & Smoke Test Passed + needs: smoke_tests + if: success() + runs-on: ubuntu-latest + + steps: + - run: echo "✅ Smoke tests passed. Deployment is stable." \ No newline at end of file diff --git a/.github/workflows/pre-merge.yml b/.github/workflows/pre-merge.yml index 8c534cfd..a35fa0be 100644 --- a/.github/workflows/pre-merge.yml +++ b/.github/workflows/pre-merge.yml @@ -1,11 +1,10 @@ -name: Build → Smoke → Deploy Dev +name: Build Status on: push: branches: ['dev'] pull_request: branches: ['dev'] - workflow_dispatch: jobs: build: @@ -28,35 +27,4 @@ jobs: - run: npm ci --force - run: npm run generate - - run: npm run build --if-present - - smoke: - needs: build - uses: saqibmanan/CivicDataSpace-test/.github/workflows/run-smoke.yml@main - secrets: - BASE_URL: ${{ secrets.BASE_URL }} - HOME_URL_DEV: ${{ secrets.HOME_URL_DEV }} - TEST_EMAIL_1: ${{ secrets.TEST_EMAIL_1 }} - TEST_PASSWORD_1: ${{ secrets.TEST_PASSWORD_1 }} - TEST_EMAIL_2: ${{ secrets.TEST_EMAIL_2 }} - TEST_PASSWORD_2: ${{ secrets.TEST_PASSWORD_2 }} - - deploy: - needs: smoke - uses: saqibmanan/DataSpaceFrontend/.github/workflows/run-deploy-dev.yml@main - secrets: - KEYCLOAK_CLIENT_ID: ${{ secrets.KEYCLOAK_CLIENT_ID }} - KEYCLOAK_CLIENT_SECRET: ${{ secrets.KEYCLOAK_CLIENT_SECRET }} - AUTH_ISSUER: ${{ secrets.AUTH_ISSUER }} - NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }} - NEXT_PUBLIC_NEXTAUTH_URL: ${{ secrets.NEXT_PUBLIC_NEXTAUTH_URL }} - NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} - END_SESSION_URL: ${{ secrets.END_SESSION_URL }} - REFRESH_TOKEN_URL: ${{ secrets.REFRESH_TOKEN_URL }} - NEXT_PUBLIC_BACKEND_URL: ${{ secrets.NEXT_PUBLIC_BACKEND_URL }} - BACKEND_GRAPHQL_URL: ${{ secrets.BACKEND_GRAPHQL_URL }} - NEXT_PUBLIC_ENABLE_ACCESSMODEL: ${{ secrets.NEXT_PUBLIC_ENABLE_ACCESSMODEL }} - NEXT_PUBLIC_BACKEND_GRAPHQL_URL: ${{ secrets.NEXT_PUBLIC_BACKEND_GRAPHQL_URL }} - BACKEND_URL: ${{ secrets.BACKEND_URL }} - NEXT_PUBLIC_PLATFORM_URL: ${{ secrets.NEXT_PUBLIC_PLATFORM_URL }} - NEXT_PUBLIC_ANALYTICS_URL: ${{ secrets.NEXT_PUBLIC_ANALYTICS_URL }} \ No newline at end of file + - run: npm run build --if-present \ No newline at end of file