diff --git a/.github/workflows/CompatHelper.yml b/.github/workflows/CompatHelper.yml index 186d654a..294df895 100644 --- a/.github/workflows/CompatHelper.yml +++ b/.github/workflows/CompatHelper.yml @@ -1,21 +1,30 @@ +# https://github.com/JuliaRegistries/CompatHelper.jl name: CompatHelper - on: schedule: - - cron: '00 00 * * *' + - cron: '0 0 * * *' # every day at midnight workflow_dispatch: - jobs: CompatHelper: runs-on: ubuntu-latest steps: - - uses: julia-actions/setup-julia@latest + - name: Check if Julia is already available + id: julia_in_path + run: which julia + continue-on-error: true + - name: Set up Julia if not already available + uses: julia-actions/setup-julia@v1 with: version: '1' - - name: Pkg.add("CompatHelper") - run: julia -e 'using Pkg; Pkg.add("CompatHelper")' - - name: CompatHelper.main() + arch: ${{ runner.arch }} + if: steps.julia_in_path.outcome != 'success' + - name: Install CompatHelper + run: julia -e 'import Pkg; Pkg.add("CompatHelper")' + - name: Run CompatHelper + run: | + julia -e 'import CompatHelper; + CompatHelper.main(; subdirs=["", "test", "docs"], + bump_compat_containing_equality_specifier=false)' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COMPATHELPER_PRIV: ${{ secrets.DOCUMENTER_KEY }} - run: julia -e 'using CompatHelper; CompatHelper.main(; subdirs=["", "test", "docs"], bump_compat_containing_equality_specifier=false)' diff --git a/.github/workflows/SpellCheck.yml b/.github/workflows/SpellCheck.yml deleted file mode 100644 index fe7db59f..00000000 --- a/.github/workflows/SpellCheck.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Spell Check - -on: [pull_request] - -jobs: - typos-check: - name: check spelling - runs-on: ubuntu-latest - steps: - - name: Checkout Actions Repository - uses: actions/checkout@v4 - - name: Check spelling - uses: crate-ci/typos@master diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml index 6887673b..7cf69bbb 100644 --- a/.github/workflows/TagBot.yml +++ b/.github/workflows/TagBot.yml @@ -1,16 +1,16 @@ +# https://github.com/JuliaRegistries/TagBot name: TagBot - on: issue_comment: types: - created workflow_dispatch: - jobs: TagBot: if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' runs-on: ubuntu-latest steps: - - uses: JuliaRegistries/TagBot@v1 + - name: Create new release tag + uses: JuliaRegistries/TagBot@v1 with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/clean-gh-pages.yml b/.github/workflows/clean-gh-pages.yml deleted file mode 100644 index 94b9f70a..00000000 --- a/.github/workflows/clean-gh-pages.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Doc Preview Cleanup - -on: - pull_request: - types: [closed] - -jobs: - doc-preview-cleanup: - runs-on: ubuntu-latest - steps: - - name: Checkout gh-pages branch - uses: actions/checkout@v4 - with: - ref: gh-pages - - name: Delete preview and history + push changes - run: | - if [ -d "previews/PR$PRNUM" ]; then - git config user.name "Documenter.jl" - git config user.email "documenter@juliadocs.github.io" - git rm -rf "previews/PR$PRNUM" - git commit -m "delete preview" - git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree}) - git push --force origin gh-pages-new:gh-pages - fi - env: - PRNUM: ${{ github.event.number }} diff --git a/.github/workflows/doc-preview-cleanup.yml b/.github/workflows/doc-preview-cleanup.yml new file mode 100644 index 00000000..7a9375cd --- /dev/null +++ b/.github/workflows/doc-preview-cleanup.yml @@ -0,0 +1,26 @@ +# https://documenter.juliadocs.org/stable/man/hosting/#Cleaning-up-gh-pages +name: Doc preview cleanup +on: + pull_request_target: + types: [closed] + workflow_dispatch: +jobs: + doc-preview-cleanup: + runs-on: ubuntu-latest + steps: + - name: Checkout gh-pages branch + uses: actions/checkout@v4 + with: + ref: gh-pages + - name: Delete preview and history + run: | + if [ -d "previews/PR$PRNUM" ]; then + git config user.name "Documenter.jl" + git config user.email "documenter@juliadocs.github.io" + git rm -rf "previews/PR$PRNUM" + git commit -m "delete preview" + git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree}) + git push --force origin gh-pages-new:gh-pages + fi + env: + PRNUM: ${{ github.event.number }} diff --git a/.github/workflows/docs.yml b/.github/workflows/documentation.yml similarity index 64% rename from .github/workflows/docs.yml rename to .github/workflows/documentation.yml index a9f31cbf..8c704389 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/documentation.yml @@ -1,5 +1,5 @@ +# https://documenter.juliadocs.org/stable/man/hosting/#GitHub-Actions name: Documentation - on: push: paths-ignore: @@ -7,32 +7,38 @@ on: - 'README.md' branches: - master - tags: '*' pull_request: paths-ignore: - 'LICENSE' - 'README.md' - + workflow_dispatch: +concurrency: + # cancel intermediate builds + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: build: runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'skip ci')" env: JULIA_PKG_SERVER: '' steps: - - name: Check out repository - uses: actions/checkout@v4 - name: Set up Julia - uses: julia-actions/setup-julia@latest + uses: julia-actions/setup-julia@v1 with: version: '1' + - name: Check out repository + uses: actions/checkout@v4 + - name: Cache artifacts + uses: julia-actions/cache@v1 - name: Install dependencies run: | julia --project=docs/ -e 'using Pkg; - Pkg.develop(PackageSpec(path=pwd())); - Pkg.instantiate()' + Pkg.develop(PackageSpec(path=pwd())); + Pkg.instantiate()' - name: Build and deploy + run: julia --project=docs/ docs/make.jl env: GKSwstype: nul # fix for Plots with GR backend GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # authentication with GitHub Actions token DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # authentication with SSH deploy key - run: julia --project=docs/ docs/make.jl diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 11bb7168..3e74e449 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -1,22 +1,22 @@ -name: Format +# https://github.com/julia-actions/julia-format +name: Format code on: schedule: - cron: '0 0 * * 6' # every Saturday at 0:00 + workflow_dispatch: jobs: - build: + format: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Check out repository + uses: actions/checkout@v4 + - name: Cache artifacts + uses: julia-actions/cache@v1 - name: Install JuliaFormatter and format - run: | - julia -e 'import Pkg; Pkg.add("JuliaFormatter")' - julia -e 'using JuliaFormatter; format(".")' - - # https://github.com/marketplace/actions/create-pull-request - # https://github.com/peter-evans/create-pull-request#reference-example - - name: Create Pull Request + run: julia -e 'import Pkg; Pkg.add("JuliaFormatter"); using JuliaFormatter; format(".")' + - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Format .jl files diff --git a/.github/workflows/invalidations.yml b/.github/workflows/invalidations.yml index 96bd7922..9fa9636d 100644 --- a/.github/workflows/invalidations.yml +++ b/.github/workflows/invalidations.yml @@ -1,45 +1,51 @@ # https://github.com/julia-actions/julia-invalidations name: Invalidations - on: pull_request: paths-ignore: - 'LICENSE' - 'README.md' - + workflow_dispatch: concurrency: - # Skip intermediate builds: always. - # Cancel intermediate builds: always. + # cancel intermediate builds 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 + if: "!contains(github.event.head_commit.message, 'skip ci')" + env: + JULIA_PKG_SERVER: '' steps: - - uses: julia-actions/setup-julia@v1 - with: - version: '1' - - - uses: actions/checkout@v4 - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-invalidations@v1 - id: invs_pr - - - uses: actions/checkout@v4 - 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 + - name: Set up Julia + uses: julia-actions/setup-julia@v1 + with: + version: '1' + # current branch + - name: Check out repository in current branch + uses: actions/checkout@v4 + - name: Cache artifacts + uses: julia-actions/cache@v1 + - name: Build package in current branch + uses: julia-actions/julia-buildpkg@v1 + - name: Count invalidations in current branch + uses: julia-actions/julia-invalidations@v1 + id: invs_branch + # default branch + - name: Check out repository in default branch + uses: actions/checkout@v4 + with: + ref: ${{ github.event.repository.default_branch }} + - name: Build package in default branch + uses: julia-actions/julia-buildpkg@v1 + - name: Count invalidations in default branch + uses: julia-actions/julia-invalidations@v1 + id: invs_default + # aggregate results + - 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 "Invalidations on this branch: ${{ steps.invs_branch.outputs.total }} (${{ steps.invs_branch.outputs.deps }} via deps)" >> $GITHUB_STEP_SUMMARY + - name: Check whether branch increases invalidations + if: steps.invs_branch.outputs.total > steps.invs_default.outputs.total + run: exit 1 diff --git a/.github/workflows/spell-check.yml b/.github/workflows/spell-check.yml new file mode 100644 index 00000000..76902d84 --- /dev/null +++ b/.github/workflows/spell-check.yml @@ -0,0 +1,18 @@ +# https://github.com/crate-ci/typos +name: Spell check +on: + pull_request: + workflow_dispatch: +concurrency: + # cancel intermediate builds + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + spell-check: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'skip ci')" + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Check spelling + uses: crate-ci/typos@master diff --git a/.github/workflows/ci.yml b/.github/workflows/test-master.yml similarity index 80% rename from .github/workflows/ci.yml rename to .github/workflows/test-master.yml index b6df2f6c..39d4d608 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/test-master.yml @@ -1,5 +1,5 @@ -name: CI - +# https://github.com/julia-actions/julia-runtest +name: Test on: push: paths-ignore: @@ -7,10 +7,14 @@ on: - 'README.md' branches: - master - + workflow_dispatch: +concurrency: + # cancel intermediate builds + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: test: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'skip ci')" strategy: @@ -41,6 +45,6 @@ jobs: - name: Process coverage uses: julia-actions/julia-processcoverage@v1 - name: Upload coverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: files: lcov.info diff --git a/.github/workflows/ci_PR.yml b/.github/workflows/test-pull-request.yml similarity index 82% rename from .github/workflows/ci_PR.yml rename to .github/workflows/test-pull-request.yml index f0e842af..2e1a5548 100644 --- a/.github/workflows/ci_PR.yml +++ b/.github/workflows/test-pull-request.yml @@ -1,14 +1,18 @@ -name: CI-PR - +# https://github.com/julia-actions/julia-runtest +name: Test on: pull_request: paths-ignore: - 'LICENSE' - 'README.md' - + workflow_dispatch: +concurrency: + # cancel intermediate builds + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: test: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'skip ci')" strategy: @@ -44,6 +48,6 @@ jobs: - name: Process coverage uses: julia-actions/julia-processcoverage@v1 - name: Upload coverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: files: lcov.info