Skip to content

Uses SnoopCompile to evaluate number of invalidations caused by `using Package` or a provided script

Notifications You must be signed in to change notification settings

julia-actions/julia-invalidations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

julia-invalidations

Uses SnoopCompile.@snoopr to evaluate number of invalidations caused by using Package or a provided script.

Currently this action uses SnoopCompile v2. In a future release, we will upgrade to SnoopCompile v3.

Usage

This is a composite github action, that can be inserted into a github action on the target repo to evaluate number of invalidations

For instance, the example below will evaluate number of invalidations that branch/PR has vs. the default branch, and fail if the number increases. Both runs happen on the same julia version, so that the comparison in # invalidations is less sensitive to changes in Julia.

  • Create an action file in the desired repo. i.e. .github/workflows/Invalidations.yml
name: Invalidations

on:
  pull_request:

concurrency:
  # Skip intermediate builds: always.
  # Cancel intermediate builds: always.
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  evaluate:
    # Only run on PRs to the default branch.
    # In the PR trigger above branches can be specified only explicitly whereas this check should work for master, main, or any other default branch
    if: github.base_ref == github.event.repository.default_branch
    runs-on: ubuntu-latest
    steps:
    - uses: julia-actions/setup-julia@v1
      with:
        version: '1'
    - uses: actions/checkout@v3
    - uses: julia-actions/julia-buildpkg@v1
    - uses: julia-actions/julia-invalidations@v1
      id: invs_pr

    - uses: actions/checkout@v3
      with:
        ref: ${{ github.event.repository.default_branch }}
    - uses: julia-actions/julia-buildpkg@v1
    - uses: julia-actions/julia-invalidations@v1
      id: invs_default

    - name: Report invalidation counts
      run: |
        echo "Invalidations on default branch: ${{ steps.invs_default.outputs.total }} (${{ steps.invs_default.outputs.deps }} via deps)" >> $GITHUB_STEP_SUMMARY
        echo "This branch: ${{ steps.invs_pr.outputs.total }} (${{ steps.invs_pr.outputs.deps }} via deps)" >> $GITHUB_STEP_SUMMARY
    - name: Check if the PR does increase number of invalidations
      if: steps.invs_pr.outputs.total > steps.invs_default.outputs.total
      run: exit 1

By default, the action will evaluate using Package where Package is the name of the julia repo that the action runs on. A custom script can be provided by passing test_script. Note that both runs should be given the same script

i.e.

- uses: julia-actions/julia-invalidations@v1
  id: invs_pr
  with:
    test_script: 'using Package; Package.foo(1)'

About

Uses SnoopCompile to evaluate number of invalidations caused by `using Package` or a provided script

Resources

Stars

Watchers

Forks

Packages

No packages published