build(deps): bump tar from 7.5.7 to 7.5.9 in /app #64
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_call: | |
| secrets: | |
| CODECOV_TOKEN: | |
| required: false | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 | |
| with: | |
| node-version: 24 | |
| - name: Install dependencies | |
| run: | | |
| (cd app && npm ci) | |
| (cd e2e && npm ci) | |
| (cd ui && npm ci) | |
| - name: Lint app | |
| run: npm run lint | |
| working-directory: app | |
| - name: Lint e2e | |
| run: npm run lint | |
| working-directory: e2e | |
| - name: Lint ui | |
| run: npm run lint | |
| working-directory: ui | |
| - name: ESM readiness check | |
| run: ./scripts/esm-readiness.sh || true | |
| test: | |
| name: Test & Coverage | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 | |
| with: | |
| node-version: 24 | |
| - name: Install app dependencies | |
| run: npm ci | |
| working-directory: app | |
| - name: Install ui dependencies | |
| run: npm ci | |
| working-directory: ui | |
| - name: Run app tests | |
| run: npm test | |
| working-directory: app | |
| - name: Run ui tests | |
| run: npm run test:unit | |
| working-directory: ui | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: app/coverage/lcov.info,ui/coverage/lcov.info | |
| flags: app,ui | |
| fail_ci_if_error: false | |
| compose-trigger-log-smoke: | |
| name: Compose Trigger Log Smoke | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Start workload containers | |
| run: | | |
| docker run -d \ | |
| --name dd-compose-label-test \ | |
| --label dd.watch=true \ | |
| --label dd.compose.file=/tmp/ci-stack/docker-compose.yml \ | |
| --label dd.compose.auto=true \ | |
| --label dd.compose.prune=false \ | |
| alpine:3.21 sleep 600 | |
| docker run -d \ | |
| --name dd-compose-unlabeled-test \ | |
| --label dd.watch=true \ | |
| alpine:3.21 sleep 600 | |
| - name: Build drydock image | |
| run: docker build -t drydock:ci-trigger --build-arg DD_VERSION=ci . | |
| - name: Start drydock | |
| run: | | |
| docker run -d \ | |
| --name drydock-ci-trigger \ | |
| --volume /var/run/docker.sock:/var/run/docker.sock \ | |
| --env DD_WATCHER_LOCAL_WATCHBYDEFAULT=true \ | |
| --env DD_WATCHER_LOCAL_WATCHATSTART=true \ | |
| --env DD_WATCHER_LOCAL_WATCHEVENTS=true \ | |
| drydock:ci-trigger | |
| - name: Assert compose trigger creation from labels | |
| run: | | |
| found=0 | |
| for i in $(seq 1 60); do | |
| logs="$(docker logs drydock-ci-trigger 2>&1 || true)" | |
| if echo "$logs" | grep -Eq 'trigger\.dockercompose\..*dd-compose-label-test'; then | |
| found=1 | |
| echo "Found dockercompose trigger registration log" | |
| break | |
| fi | |
| sleep 2 | |
| done | |
| if [ "$found" -ne 1 ]; then | |
| echo "Did not find dockercompose trigger creation log for dd-compose-label-test" | |
| docker logs drydock-ci-trigger 2>&1 || true | |
| exit 1 | |
| fi | |
| logs="$(docker logs drydock-ci-trigger 2>&1 || true)" | |
| if ! echo "$logs" | grep -Eq '"auto":("true"|true)'; then | |
| echo "Did not find compose trigger auto configuration in logs" | |
| docker logs drydock-ci-trigger 2>&1 || true | |
| exit 1 | |
| fi | |
| if ! echo "$logs" | grep -Eq '"prune":("false"|false)'; then | |
| echo "Did not find compose trigger prune configuration in logs" | |
| docker logs drydock-ci-trigger 2>&1 || true | |
| exit 1 | |
| fi | |
| if ! echo "$logs" | grep -Eq '"requireinclude":("true"|true)'; then | |
| echo "Did not find scoped requireinclude=true configuration in logs" | |
| docker logs drydock-ci-trigger 2>&1 || true | |
| exit 1 | |
| fi | |
| if echo "$logs" | grep -Eq 'trigger\.dockercompose\..*dd-compose-unlabeled-test'; then | |
| echo "Unexpected dockercompose trigger registration for unlabeled container" | |
| docker logs drydock-ci-trigger 2>&1 || true | |
| exit 1 | |
| fi | |
| - name: Dump drydock logs on failure | |
| if: failure() | |
| run: docker logs drydock-ci-trigger 2>&1 || true | |
| - name: Cleanup containers | |
| if: always() | |
| run: | | |
| docker rm -f drydock-ci-trigger dd-compose-label-test dd-compose-unlabeled-test >/dev/null 2>&1 || true | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| needs: [lint, test] | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 | |
| with: | |
| node-version: 24 | |
| - name: Install ui dependencies | |
| run: npm ci | |
| working-directory: ui | |
| - name: Build ui | |
| run: npm run build | |
| working-directory: ui | |
| - name: Docker build (smoke test) | |
| run: docker build --no-cache -t drydock --build-arg DD_VERSION=ci . |