diff --git a/.github/workflows/pr_quality_control.yaml b/.github/workflows/pr_quality_control.yaml deleted file mode 100644 index bfb43b8f..00000000 --- a/.github/workflows/pr_quality_control.yaml +++ /dev/null @@ -1,89 +0,0 @@ -name: Pull Request Quality Control - -on: - workflow_dispatch: - # pull_request: - # branches: [main] - -jobs: - formatting: - permissions: - contents: "write" - pull-requests: "write" - - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.ref }} - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Get Prettier version from package-lock.json - run: | - PRETTIER_VERSION=$(grep -m 1 'prettier' package-lock.json | cut -d '"' -f 4 | cut -c 2-) - echo $PRETTIER_VERSION - - - name: Run Prettier (specific version) - run: | - npx --yes prettier@$PRETTIER_VERSION --config .prettierrc --write . - - - name: Check for changes - id: check-changes - run: | - git config --global user.name "sPhil_PR_quality_ctl" - git config --global user.email "actions@github.com" - if [[ `git status --porcelain` ]]; then - git add . - git commit -m "ci: format code with Prettier [on behalf of ${{ github.event.pull_request.user.login }}]" - git push origin HEAD:${{ github.event.pull_request.head.ref }} - fi - - verification: - needs: formatting - runs-on: ubuntu-latest - steps: - - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - uses: actions/cache/restore@v4 - id: prepyrus-cache-restore - with: - path: target/release/prepyrus - key: ${{ runner.os }}-cargo-${{ hashFiles('scripts/prepyrus/Cargo.lock') }}-${{ hashFiles('scripts/prepyrus/src/**') }} - - - name: Install Rust - if: steps.prepyrus-cache-restore.outputs.cache-hit != 'true' - uses: actions-rust-lang/setup-rust-toolchain@v1 - - - name: Install dependencies - if: steps.prepyrus-cache-restore.outputs.cache-hit != 'true' - run: cargo build --release --package prepyrus - - - name: Run prepyrus script in verification mode - run: target/release/prepyrus absolute_bibliography.bib src/pages verify - - - name: Save Prepyrus to cache - id: prepyrus-cache-save - if: steps.prepyrus-cache-restore.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: target/release/prepyrus - key: ${{ runner.os }}-cargo-${{ hashFiles('scripts/prepyrus/Cargo.lock') }}-${{ hashFiles('scripts/prepyrus/src/**') }} - - - -# To include multiple paths for the cache: -# path: | -# ~/.cargo/bin/ -# ~/.cargo/registry/index/ -# ~/.cargo/registry/cache/ -# ~/.cargo/git/db/ -# target/ diff --git a/.github/workflows/verify_formatting.yaml b/.github/workflows/verify_formatting.yaml index b255e8b0..0fcf6dc8 100644 --- a/.github/workflows/verify_formatting.yaml +++ b/.github/workflows/verify_formatting.yaml @@ -7,17 +7,21 @@ on: jobs: formatting: - permissions: - contents: "write" - pull-requests: "write" - runs-on: ubuntu-latest steps: + - name: Generate COG token + id: create_token + uses: tibdex/github-app-token@v2 + with: + app_id: ${{ secrets.COG_APP_ID }} + private_key: ${{ secrets.COG_PRIVATE_KEY }} + - name: Checkout uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.ref }} + token: ${{ steps.create_token.outputs.token }} - name: Set up Node.js uses: actions/setup-node@v4 @@ -40,6 +44,6 @@ jobs: git config --global user.email "actions@github.com" if [[ `git status --porcelain` ]]; then git add . - git commit -m "ci: format code with Prettier [on behalf of ${{ github.event.pull_request.user.login }}]" + git commit -m "ci: format code [automated action on behalf of ${{ github.event.pull_request.user.login }}]" git push origin HEAD:${{ github.event.pull_request.head.ref }} fi diff --git a/.github/workflows/verify_mdx_content.yaml b/.github/workflows/verify_mdx_content.yaml index 49b84169..7f61b2cf 100644 --- a/.github/workflows/verify_mdx_content.yaml +++ b/.github/workflows/verify_mdx_content.yaml @@ -2,22 +2,19 @@ name: Verify MDX Content on: workflow_dispatch: - workflow_run: - workflows: ["Verify formatting"] - types: - - completed - + pull_request: + branches: [main] jobs: verification: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - # with: - # ref: ${{ github.event.pull_request.head.sha }} + - name: Checkout + uses: actions/checkout@v4 - - uses: actions/cache/restore@v4 + - name: Revive Prepyrus + uses: actions/cache/restore@v4 id: prepyrus-cache-restore with: path: target/release/prepyrus @@ -32,6 +29,7 @@ jobs: run: cargo build --release --package prepyrus - name: Run prepyrus script in verification mode + id: prepyrus-run run: target/release/prepyrus absolute_bibliography.bib src/pages verify - name: Save Prepyrus to cache @@ -42,8 +40,6 @@ jobs: path: target/release/prepyrus key: ${{ runner.os }}-cargo-${{ hashFiles('scripts/prepyrus/Cargo.lock') }}-${{ hashFiles('scripts/prepyrus/src/**') }} - - # To include multiple paths for the cache: # path: | # ~/.cargo/bin/ diff --git a/logs/deprecated/workflow_experiments.yaml b/logs/deprecated/workflow_experiments.yaml new file mode 100644 index 00000000..af3c200d --- /dev/null +++ b/logs/deprecated/workflow_experiments.yaml @@ -0,0 +1,109 @@ +name: Discarded workflow experiments + +on: + workflow_dispatch: + # inputs: + # pr_id: + # description: 'Pull Request ID' + # required: true + # workflow_run: + # workflows: ["Verify formatting"] + # types: + # - completed + pull_request: + branches: [main] + +env: + GH_TOKEN: ${{ github.token }} +# +# ! NOTE, these steps are not meant to be run together, +# ! they are just snippets from different workflows +# +jobs: + formatting: + permissions: + contents: "write" + pull-requests: "write" + actions: "write" + + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + token: ${{ steps.create_token.outputs.token }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Get Prettier version from package-lock.json + run: | + PRETTIER_VERSION=$(grep -m 1 'prettier' package-lock.json | cut -d '"' -f 4 | cut -c 2-) + echo $PRETTIER_VERSION + + - name: Run Prettier (specific version) + run: | + npx --yes prettier@$PRETTIER_VERSION --config .prettierrc --write . + + #extract the latest commit sha from the PR + - name: Check for changes + id: check-changes + run: | + git config --global user.name "sPhil_PR_quality_ctl" + git config --global user.email "actions@github.com" + if [[ `git status --porcelain` ]]; then + git add . + git commit -m "ci: format code with Prettier [on behalf of ${{ github.event.pull_request.user.login }}]" + git push origin HEAD:${{ github.event.pull_request.head.ref }} + COMMIT_SHA=$(git rev-parse HEAD) + echo "Commit SHA: $COMMIT_SHA" + echo "::set-output name=commit_sha::$COMMIT_SHA" + fi + + #extract the latest commit sha from the PR using script + - name: Get sha from PR number and save output + id: get-sha + uses: actions/github-script@v3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + console.log('PR number: ' + ${{ github.event.pull_request.number }}) + const pr = await github.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: ${{ github.event.pull_request.number }} + }) + console.log('PR Head sha: ' + pr.data.head.sha) + core.setOutput('sha', pr.data.head.sha) + + #invoke another workflow using custom inputs + - name: Invoke workflow + run: | + echo "SHA: ${{ steps.check-changes.outputs.commit_sha }}" + gh workflow run verify_mdx_content.yaml --ref ${{ github.event.pull_request.head.ref }} -f pr_id=${{ steps.check-changes.outputs.commit_sha }} + # pr_id=${{ steps.get-sha.outputs.sha }} + + #creating checks for the workflow + - name: Report tests check + uses: actions/github-script@v3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.checks.create({ + name: 'prepyrus verification', + head_sha: '${{ github.event.inputs.pr_id }}', + status: 'completed', + conclusion: '${{ steps.prepyrus-run.outcome }}', + output: { + title: 'Prepyrus verification', + summary: 'Results: ${{ steps.prepyrus-run.outcome }}' + }, + owner: context.repo.owner, + repo: context.repo.repo + }) + if: always() + + # head_sha: '${{ github.event.inputs.pr_id }}',