diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index 47b04bd416ee..b06ae635762d 100644 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -1,44 +1,78 @@ -name: Build Dev +name: Dev build on: workflow_dispatch: inputs: - username: - description: "GitHub username to check" - required: true - type: string - org: - description: "GitHub organization name" - required: true + submodule_path_regex: + description: + Regex of submodule paths to updated to HEAD before building. + default: content-modules type: string jobs: - test-membership: + build-and-test: + name: BUILD and CHECK LINKS runs-on: ubuntu-latest - steps: - - name: Install GitHub CLI - run: sudo apt-get install gh -y + - uses: actions/checkout@v4 - - name: Check if user is a member of the org - id: check-membership + - name: Create NPM cache-hash input file run: | - USERNAME="${{ inputs.username }}" - ORG="${{ inputs.org }}" - STATUS=$(gh api "orgs/$ORG/members/$USERNAME" --silent && echo "true" || echo "false") - - if [[ "$STATUS" == "true" ]]; then - echo "MEMBER_FOUND=true" >> $GITHUB_ENV - else - echo "MEMBER_FOUND=false" >> $GITHUB_ENV - fi + mkdir -p tmp + jq '{devDependencies, dependencies, engines, gitHubActionCacheKey}' package.json > tmp/package-ci.json + + - name: Create and use reduced-dependencies package.json + run: | + jq 'del(.dependencies, .optionalDependencies)' \ + package.json > tmp/package-min.json + cp tmp/package-min.json package.json + + - uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: npm + cache-dependency-path: tmp/package-ci.json + + - run: npm install --omit=optional + + - run: npm run log:test-and-fix env: - GH_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }} + CMD_SKIP: i18n|registry + GET: no # For details, see: https://opentelemetry.io/docs/contributing/development/#submodule-changes + PIN_SKIP: ${{ inputs.submodule_path_regex }} + + - uses: actions/upload-artifact@v4 + with: + name: build-log-etc + path: | + tmp/build-log.txt + tmp/package*.json + static/refcache.json - - name: Comment on the check result + check-refcache: + name: REFCACHE updates? + needs: build-and-test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: { name: build-log-etc } + - name: Fail when refcache contains entries with HTTP status 4XX run: | - if [[ "$MEMBER_FOUND" == "true" ]]; then - echo "✅ $USERNAME is a member of the $ORG organization." - else - echo "❌ $USERNAME is NOT a member of the $ORG organization." + if grep -B 1 -e '"StatusCode": 4' static/refcache.json; then + echo "Run 'npx gulp prune' to remove 4xx entries from the refcache" + exit 1 fi + - name: Does the refcache need updating? + run: npm run diff:fail + + check-build-log-for-issues: + name: WARNINGS in build log? + needs: build-and-test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: { name: build-log-etc } + - run: cat tmp/build-log.txt + - run: scripts/check-build-log.sh