diff --git a/.github/workflows/cache-verify.yml b/.github/workflows/cache-verify.yml index f1e5a2bb4..6c2f33e83 100644 --- a/.github/workflows/cache-verify.yml +++ b/.github/workflows/cache-verify.yml @@ -7,32 +7,17 @@ on: workflow_dispatch: jobs: - test-cache: - name: Verify Node Modules Cache + verify-cache: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Generate cache key + - uses: actions/setup-node@v4 + with: { node-version: '20' } + - run: echo "key=node-modules-${{ runner.os }}-${{ env.LOCK_HASH }}" >> $GITHUB_OUTPUT id: cache-key - run: echo "key=node-modules-${{ runner.os }}-${{ env.LOCK_HASH }}" >> $GITHUB_OUTPUT - env: - LOCK_HASH: ${{ hashFiles('backend/yarn.lock', 'webapp/yarn.lock') }} - - - name: Show lockfile hashes (debug) - run: | - echo "backend/yarn.lock hash: ${{ hashFiles('backend/yarn.lock') }}" - echo "webapp/yarn.lock hash: ${{ hashFiles('webapp/yarn.lock') }}" - - - name: Restore node_modules cache - id: restore-cache - uses: actions/cache@v4 + env: { LOCK_HASH: ${{ hashFiles('backend/yarn.lock', 'webapp/yarn.lock') }} } + - uses: actions/cache@v4 + id: restore with: path: | backend/node_modules @@ -41,44 +26,26 @@ jobs: restore-keys: | node-modules-${{ runner.os }}- node-modules- + - run: echo "Cache: ${{ steps.restore.outputs.cache-hit }}" + - run: cd backend && yarn install && yarn build + - run: cd webapp && yarn install && yarn build - - name: Show cache hit status - run: | - if [[ "${{ steps.restore-cache.outputs.cache-hit }}" == "true" ]]; then - echo "✅ Cache was hit!" - else - echo "❌ Cache was missed." - fi - - - name: Install backend deps - run: | - cd backend - yarn install - yarn build - - - name: Install webapp deps - run: | - cd webapp - yarn install - yarn build - - - name: Start webapp (static or fallback) - run: | - if [ -d "webapp/out" ]; then - echo "Serving webapp/out statically..." + verify-wait: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: { node-version: '20' } + - run: cd webapp && yarn install && yarn build + - run: | + if [ -d webapp/out ]; then npx serve -s webapp/out -l 3000 & else - echo "webapp/out not found – falling back to yarn start..." - cd webapp - yarn start & + cd webapp && yarn start & fi - - - name: Test HTTP wait logic - run: | - echo "Waiting for http://localhost:3000 to respond..." + - run: | for i in {1..15}; do - curl -sf http://localhost:3000 && echo "✅ Service ready." && exit 0 - echo "Attempt $i failed. Retrying..." - sleep 2 + curl -sf http://localhost:3000 && echo "✅ up" && exit 0 + echo "$i..." && sleep 2 done - echo "❌ Service did not respond in time." && exit 1 + echo "❌ no response" && exit 1 \ No newline at end of file