name: External Plugin Quality Gates on: workflow_call: inputs: plugin-json: description: Canonical plugin payload JSON from intake parsing required: true type: string outputs: quality-result: description: JSON result for quality checks value: ${{ jobs.quality.outputs.quality-result }} quality-log-url: description: URL for the full quality gate log artifact value: ${{ jobs.quality.outputs.quality-log-url }} permissions: contents: read jobs: quality: runs-on: ubuntu-latest outputs: quality-result: ${{ steps.quality.outputs.quality-result }} quality-log-url: ${{ steps.upload-logs.outputs.artifact-url }} steps: - name: Checkout main branch uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: ref: main persist-credentials: false submodules: false - name: Setup Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 22 - name: Install GitHub Copilot CLI run: npm install -g @github/copilot - name: Install node packages run: npm ci - name: Run external plugin quality gates id: quality env: PLUGIN_JSON: ${{ inputs.plugin-json }} run: | result=$(node ./eng/external-plugin-quality-gates.mjs \ --plugin-json "$PLUGIN_JSON" \ --log-file "${RUNNER_TEMP}/external-plugin-quality-logs/quality-gates.log") { echo 'quality-result<> "$GITHUB_OUTPUT" - name: Upload full quality gate logs id: upload-logs if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: external-plugin-quality-logs path: ${{ runner.temp }}/external-plugin-quality-logs if-no-files-found: warn retention-days: 14