Add Callro to Mobile Apps #716
Workflow file for this run
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: PR Check | |
| on: | |
| pull_request: | |
| branches: [main] | |
| types: [opened, edited, synchronize, reopened] | |
| paths: | |
| - 'awesome-privacy.yml' | |
| - '.github/README.md' | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| security-events: read | |
| jobs: | |
| pr-compliance: | |
| name: PR Compliance | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Find merge base with ${{ github.event.pull_request.base.ref }} | |
| id: mb | |
| env: | |
| BASE_SHA: ${{ github.event.pull_request.base.sha }} | |
| BASE_REF: ${{ github.event.pull_request.base.ref }} | |
| run: | | |
| git fetch origin "$BASE_REF" || git fetch --depth=1 origin "$BASE_SHA" || true | |
| MB=$(git merge-base FETCH_HEAD HEAD 2>/dev/null || echo "") | |
| git cat-file -e "${MB}^{commit}" 2>/dev/null || MB="" | |
| echo "sha=${MB:-$BASE_SHA}" >> "$GITHUB_OUTPUT" | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Check README edits | |
| id: readme | |
| continue-on-error: true | |
| run: python lib/checks/check-readme-edits.py --base-ref ${{ steps.mb.outputs.sha }} | |
| - name: Check PR metadata | |
| id: meta | |
| env: | |
| PR_TITLE: ${{ github.event.pull_request.title }} | |
| PR_BODY: ${{ github.event.pull_request.body }} | |
| PR_DRAFT: ${{ github.event.pull_request.draft }} | |
| BASE_REF: ${{ steps.mb.outputs.sha }} | |
| README_FAILED: ${{ steps.readme.outcome == 'failure' && 'true' || 'false' }} | |
| run: python lib/checks/check-pr-meta.py | |
| - name: Upload findings | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: findings-compliance | |
| path: /tmp/findings-compliance.json | |
| if-no-files-found: ignore | |
| - name: Fail if critical | |
| if: steps.readme.outcome == 'failure' || steps.meta.outcome == 'failure' | |
| run: exit 1 | |
| data-validation: | |
| name: Data Validation | |
| runs-on: ubuntu-latest | |
| outputs: | |
| yaml_changed: ${{ steps.changes.outputs.yaml_changed }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Find merge base with ${{ github.event.pull_request.base.ref }} | |
| id: mb | |
| env: | |
| BASE_SHA: ${{ github.event.pull_request.base.sha }} | |
| BASE_REF: ${{ github.event.pull_request.base.ref }} | |
| run: | | |
| git fetch origin "$BASE_REF" || git fetch --depth=1 origin "$BASE_SHA" || true | |
| MB=$(git merge-base FETCH_HEAD HEAD 2>/dev/null || echo "") | |
| git cat-file -e "${MB}^{commit}" 2>/dev/null || MB="" | |
| echo "sha=${MB:-$BASE_SHA}" >> "$GITHUB_OUTPUT" | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Detect changes | |
| id: changes | |
| run: python lib/checks/detect-changes.py --base-ref ${{ steps.mb.outputs.sha }} | |
| - name: Install dependencies | |
| if: steps.changes.outputs.yaml_changed == 'true' | |
| run: pip install -q -r lib/requirements.txt | |
| - name: Schema validation | |
| if: steps.changes.outputs.yaml_changed == 'true' | |
| id: schema | |
| continue-on-error: true | |
| run: make validate | |
| - name: YAML diff | |
| if: steps.changes.outputs.yaml_changed == 'true' | |
| id: diff | |
| continue-on-error: true | |
| run: python lib/checks/check-yaml-diff.py --base-ref ${{ steps.mb.outputs.sha }} | |
| - name: Check additions | |
| if: steps.changes.outputs.yaml_changed == 'true' | |
| id: additions | |
| continue-on-error: true | |
| env: | |
| SCHEMA_OUTCOME: ${{ steps.schema.outcome }} | |
| run: python lib/checks/check-additions.py | |
| - name: Upload diff data | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: pr-diff | |
| path: | | |
| /tmp/pr-diff.json | |
| /tmp/pr-diff-summary.md | |
| if-no-files-found: ignore | |
| - name: Upload findings | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: findings-data | |
| path: /tmp/findings-data.json | |
| if-no-files-found: ignore | |
| - name: Fail if critical | |
| if: steps.changes.outputs.yaml_changed == 'true' && (steps.schema.outcome == 'failure' || steps.diff.outcome == 'failure' || steps.additions.outcome == 'failure') | |
| run: exit 1 | |
| submission-eligibility: | |
| name: Submission Eligibility | |
| needs: data-validation | |
| if: "!cancelled() && needs.data-validation.outputs.yaml_changed == 'true'" | |
| runs-on: ubuntu-latest | |
| outputs: | |
| has_repo_stats: ${{ steps.repo-stats.outputs.exists }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - run: pip install -q -r lib/requirements.txt | |
| - name: Download diff data | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: pr-diff | |
| path: /tmp | |
| continue-on-error: true | |
| - name: Check project health | |
| env: | |
| PR_USER: ${{ github.event.pull_request.user.login }} | |
| PR_BODY: ${{ github.event.pull_request.body }} | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: python lib/checks/check-project.py | |
| - name: Generate repo stats | |
| continue-on-error: true | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| API_TOKEN: ${{ secrets.API_TOKEN }} | |
| run: python lib/checks/make-info-stats.py | |
| - name: Check for repo stats | |
| if: always() | |
| id: repo-stats | |
| run: test -f /tmp/repo-stats.md && echo "exists=true" >> "$GITHUB_OUTPUT" || echo "exists=false" >> "$GITHUB_OUTPUT" | |
| - name: Upload repo stats | |
| if: steps.repo-stats.outputs.exists == 'true' | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: repo-stats | |
| path: /tmp/repo-stats.md | |
| - name: Upload findings | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: findings-project | |
| path: /tmp/findings-project.json | |
| if-no-files-found: ignore | |
| summary: | |
| name: Summary | |
| if: always() | |
| needs: [pr-compliance, data-validation, submission-eligibility] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Download all findings | |
| uses: actions/download-artifact@v7 | |
| with: | |
| pattern: findings-* | |
| path: /tmp/artifacts | |
| merge-multiple: true | |
| continue-on-error: true | |
| - name: Download diff data | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: pr-diff | |
| path: /tmp/artifacts | |
| continue-on-error: true | |
| - name: Download repo stats | |
| if: needs.submission-eligibility.outputs.has_repo_stats == 'true' | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: repo-stats | |
| path: /tmp/artifacts | |
| continue-on-error: true | |
| - name: Format comment | |
| env: | |
| PR_USER: ${{ github.event.pull_request.user.login }} | |
| PR_NUMBER: ${{ github.event.pull_request.number }} | |
| RUN_ID: ${{ github.run_id }} | |
| run: python lib/checks/format-comment.py | |
| - name: Upload PR metadata | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: pr-meta | |
| path: /tmp/pr-meta/ |