name: Build Dashboard UI on: workflow_call: jobs: build: runs-on: ubuntu-latest env: RUNNER_TOOL_CACHE: /toolcache steps: - name: Configure git auth for submodules run: git config --global url."https://x-access-token:${{ secrets.BUILD_TOKEN }}@git.datadunia.com/".insteadOf "https://git.datadunia.com/" - uses: actions/checkout@v4 with: submodules: true fetch-depth: 0 token: ${{ secrets.BUILD_TOKEN }} persist-credentials: true - uses: actions/setup-node@v4 with: node-version: '24' - name: Hash source files id: hash-src run: echo "hash=$(find apps/dashboard-ui -type f \( -name '*.vue' -o -name '*.ts' -o -name '*.js' -o -name '*.css' -o -name '*.json' -o -name '*.html' \) | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)" >> "$GITHUB_OUTPUT" - uses: actions/cache@v3 id: cache-build with: path: apps/dashboard-ui/dist key: build-dashboard-${{ steps.hash-src.outputs.hash }} - name: Hash package-lock id: hash-npm run: echo "hash=$(sha256sum apps/dashboard-ui/package-lock.json | cut -d' ' -f1)" >> "$GITHUB_OUTPUT" - uses: actions/cache@v3 id: cache-npm with: path: ~/.npm key: npm-dashboard-${{ steps.hash-npm.outputs.hash }} restore-keys: npm-dashboard- - name: Install if: steps.cache-build.outputs.cache-hit != 'true' working-directory: apps/dashboard-ui run: npm ci || npm install - name: Build if: steps.cache-build.outputs.cache-hit != 'true' working-directory: apps/dashboard-ui run: npm run build - name: Upload artifact uses: actions/upload-artifact@v3 with: name: dashboard-ui-dist path: apps/dashboard-ui/dist/