Company
Word count
330
Language
English
Contains code?

Text

Nx is a popular build framework for monorepos that focuses in simplicity. Like many other distributed build frameworks, the core concept is around identifying the targets that are affected in a change, and using a build cache. These same concepts can also be used for optimizing MergeQueue builds. GitHub Action GitHub action might be the easiest way to fetch the affected targets and push that to Aviator API. Here’s an example of how you can setup such a GitHub Action. You can also find this code in action in nx-examples repository fork . Copy

name: Fetch Aviator targets

on:
  pull_request:

jobs:
  nextjs-build:
    runs-on: ubuntu-latest
    defaults:
      run:
         working-directory: .
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'yarn'
      - run: yarn install
      - run: |
          set -euo pipefail
          git fetch origin $GITHUB_BASE_REF
          PR_NUMBER=${{ github.event.number }}
          TARGETS_JSON=$(npx nx show projects --affected --base FETCH_HEAD --head HEAD --json)
          curl -X POST -H "Authorization: Bearer ${{ secrets.AVIATOR_API_TOKEN }}" \
          -H "Content-Type: application/json" \
          -d '{
            "action": "update",
            "pull_request": {
                "number": '"$PR_NUMBER"',
                "repository": {"name": "nx-examples", "org": "aviator-co"},
                "affected_targets": '"$TARGETS_JSON"'
            }
          }' https://api.aviator.co/api/v1/pull_request/

A few things to note It is recommended to store the API access token as

AVIATOR_API_TOKEN

in GitHub secrets. or replace the secrets above There are two separate

action

for the

pull_request

API:

update

and

queue

. If you use

update

API, these affected targets information is sent to Aviator. A developer can then queue the PR asynchronously. If using the

update

API, you should call this GitHub action every time a new commit is added to the PR. Alternatively, you can submit this as a

queue

action when the PR is ready to be queued. In that case, the information is submitted to the Aviator MergeQueue while queueing the PR in the same step. Previous Directory-Based Affected Targets Next GitHub Actions based Affected Targets Last updated 11 months ago Was this helpful?

Analysis

No analysis created yet for this page.