From 125c09bdca9dfe5f80c1dc3829a52208bc91fa79 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:05:42 +0100 Subject: [PATCH 01/10] Adding a clobber check to update lockfile workflow --- .github/workflows/refresh-lockfiles.yml | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 4ff58affd4..77a8106c58 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -14,6 +14,11 @@ name: Refresh Lockfiles on: workflow_dispatch: + inputs: + clobber: + description: Force the workflow to run, potentially clobbering any commits already made to the branch + required: true + default: false schedule: # Run once a week on a Saturday night - cron: 1 0 * * 6 @@ -21,6 +26,31 @@ on: jobs: + no_clobber: + # check if the auto-update-lockfiles branch exists. If it does, and someone other than + # the lockfile bot has made the head commit, abort the workflow + uses: actions/script@v4 + # allow users to force a workflow dispatch by setting the clobber=true on a workflow dispatch + if: ${{ !(github.event_name == "workflow_dispatch" && github.event.inputs.clobber) }} + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) + .then(res => { + const committer = res.data.commit.commit.committer?.name + if (committer === "Lockfile bot") { + core.info("Bot was last to update. Continue") + } else { + core.error("New commits since bot last ran. Abort!") + core.setFailed("Don't clobber commits, aborting workflow.") + } + }) + .catch(err => { + if (err.status === 404) { + core.info("Branch not found, continue") + } + }) + gen_lockfiles: # this is a matrix job: it splits to create new lockfiles for each # of the CI test python versions. @@ -70,6 +100,8 @@ jobs: uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8 with: commit-message: Updated environment lockfiles + committer: "Lockfile bot " + author: "Lockfile bot " delete-branch: true branch: auto-update-lockfiles title: Update CI environment lockfiles From dcb4102f9fe4f4f9704a5f5d53d69fcb7a4073af Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:08:02 +0100 Subject: [PATCH 02/10] actions syntax error --- .github/workflows/refresh-lockfiles.yml | 45 +++++++++++++------------ 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 77a8106c58..e601dd78fa 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -17,7 +17,6 @@ on: inputs: clobber: description: Force the workflow to run, potentially clobbering any commits already made to the branch - required: true default: false schedule: # Run once a week on a Saturday night @@ -27,29 +26,31 @@ on: jobs: no_clobber: - # check if the auto-update-lockfiles branch exists. If it does, and someone other than - # the lockfile bot has made the head commit, abort the workflow - uses: actions/script@v4 + runs-on: ubuntu-latest # allow users to force a workflow dispatch by setting the clobber=true on a workflow dispatch if: ${{ !(github.event_name == "workflow_dispatch" && github.event.inputs.clobber) }} - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) - .then(res => { - const committer = res.data.commit.commit.committer?.name - if (committer === "Lockfile bot") { - core.info("Bot was last to update. Continue") - } else { - core.error("New commits since bot last ran. Abort!") - core.setFailed("Don't clobber commits, aborting workflow.") - } - }) - .catch(err => { - if (err.status === 404) { - core.info("Branch not found, continue") - } - }) + steps: + # check if the auto-update-lockfiles branch exists. If it does, and someone other than + # the lockfile bot has made the head commit, abort the workflow + uses: actions/script@v4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) + .then(res => { + const committer = res.data.commit.commit.committer?.name + if (committer === "Lockfile bot") { + core.info("Bot was last to update. Continue") + } else { + core.error("New commits since bot last ran. Abort!") + core.setFailed("Don't clobber commits, aborting workflow.") + } + }) + .catch(err => { + if (err.status === 404) { + core.info("Branch not found, continue") + } + }) gen_lockfiles: # this is a matrix job: it splits to create new lockfiles for each From 648a11ed022446061c91958f82369246f97f371a Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:08:46 +0100 Subject: [PATCH 03/10] actions syntax error --- .github/workflows/refresh-lockfiles.yml | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index e601dd78fa..b56d33b7e6 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -32,25 +32,25 @@ jobs: steps: # check if the auto-update-lockfiles branch exists. If it does, and someone other than # the lockfile bot has made the head commit, abort the workflow - uses: actions/script@v4 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) - .then(res => { - const committer = res.data.commit.commit.committer?.name - if (committer === "Lockfile bot") { - core.info("Bot was last to update. Continue") - } else { - core.error("New commits since bot last ran. Abort!") - core.setFailed("Don't clobber commits, aborting workflow.") - } - }) - .catch(err => { - if (err.status === 404) { - core.info("Branch not found, continue") - } - }) + - uses: actions/script@v4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) + .then(res => { + const committer = res.data.commit.commit.committer?.name + if (committer === "Lockfile bot") { + core.info("Bot was last to update. Continue") + } else { + core.error("New commits since bot last ran. Abort!") + core.setFailed("Don't clobber commits, aborting workflow.") + } + }) + .catch(err => { + if (err.status === 404) { + core.info("Branch not found, continue") + } + }) gen_lockfiles: # this is a matrix job: it splits to create new lockfiles for each From 61d051f20d35931ffd742df37b8d5100e007eafa Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:14:19 +0100 Subject: [PATCH 04/10] debugging context --- .github/workflows/refresh-lockfiles.yml | 106 ++++++++++++------------ 1 file changed, 55 insertions(+), 51 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index b56d33b7e6..7345b922bf 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -28,7 +28,7 @@ jobs: no_clobber: runs-on: ubuntu-latest # allow users to force a workflow dispatch by setting the clobber=true on a workflow dispatch - if: ${{ !(github.event_name == "workflow_dispatch" && github.event.inputs.clobber) }} + if: "${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.clobber) }}" steps: # check if the auto-update-lockfiles branch exists. If it does, and someone other than # the lockfile bot has made the head commit, abort the workflow @@ -36,6 +36,10 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | + console.log(context) + if (context.eventName == "workflow_dispatch") { + 1+1 + } github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) .then(res => { const committer = res.data.commit.commit.committer?.name @@ -52,59 +56,59 @@ jobs: } }) - gen_lockfiles: - # this is a matrix job: it splits to create new lockfiles for each - # of the CI test python versions. - # this list below should be changed when covering more python versions - # TODO: generate this matrix automatically from the list of available py**.yml files - # ref: https://tomasvotruba.com/blog/2020/11/16/how-to-make-dynamic-matrix-in-github-actions/ - runs-on: ubuntu-latest + # gen_lockfiles: + # # this is a matrix job: it splits to create new lockfiles for each + # # of the CI test python versions. + # # this list below should be changed when covering more python versions + # # TODO: generate this matrix automatically from the list of available py**.yml files + # # ref: https://tomasvotruba.com/blog/2020/11/16/how-to-make-dynamic-matrix-in-github-actions/ + # runs-on: ubuntu-latest - strategy: - matrix: - python: ['36', '37', '38'] + # strategy: + # matrix: + # python: ['36', '37', '38'] - steps: - - uses: actions/checkout@v2 - - name: install conda-lock - run: | - source $CONDA/bin/activate base - conda install -y -c conda-forge conda-lock - - name: generate lockfile - run: | - $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml - mv conda-linux-64.lock py${{matrix.python}}-linux-64.lock - - name: output lockfile - uses: actions/upload-artifact@v2 - with: - path: py${{matrix.python}}-linux-64.lock + # steps: + # - uses: actions/checkout@v2 + # - name: install conda-lock + # run: | + # source $CONDA/bin/activate base + # conda install -y -c conda-forge conda-lock + # - name: generate lockfile + # run: | + # $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml + # mv conda-linux-64.lock py${{matrix.python}}-linux-64.lock + # - name: output lockfile + # uses: actions/upload-artifact@v2 + # with: + # path: py${{matrix.python}}-linux-64.lock - create_pr: - # once the matrix job has completed all the lock files will have been uploaded as artifacts. - # Download the artifacts, add them to the repo, and create a PR. - runs-on: ubuntu-latest - needs: gen_lockfiles + # create_pr: + # # once the matrix job has completed all the lock files will have been uploaded as artifacts. + # # Download the artifacts, add them to the repo, and create a PR. + # runs-on: ubuntu-latest + # needs: gen_lockfiles - steps: - - uses: actions/checkout@v2 - - name: get artifacts - uses: actions/download-artifact@v2 - with: - path: artifacts + # steps: + # - uses: actions/checkout@v2 + # - name: get artifacts + # uses: actions/download-artifact@v2 + # with: + # path: artifacts - - name: Update lock files in repo - run: | - cp artifacts/artifact/*.lock requirements/ci/nox.lock - rm -r artifacts + # - name: Update lock files in repo + # run: | + # cp artifacts/artifact/*.lock requirements/ci/nox.lock + # rm -r artifacts - - name: Create Pull Request - uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8 - with: - commit-message: Updated environment lockfiles - committer: "Lockfile bot " - author: "Lockfile bot " - delete-branch: true - branch: auto-update-lockfiles - title: Update CI environment lockfiles - body: | - Lockfiles updated to the latest resolvable environment. + # - name: Create Pull Request + # uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8 + # with: + # commit-message: Updated environment lockfiles + # committer: "Lockfile bot " + # author: "Lockfile bot " + # delete-branch: true + # branch: auto-update-lockfiles + # title: Update CI environment lockfiles + # body: | + # Lockfiles updated to the latest resolvable environment. From 03fbfccfd84d3f3d6d6682213a4b707c72937fcf Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:15:25 +0100 Subject: [PATCH 05/10] debugging context --- .github/workflows/refresh-lockfiles.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 7345b922bf..aed7845c4c 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -28,7 +28,7 @@ jobs: no_clobber: runs-on: ubuntu-latest # allow users to force a workflow dispatch by setting the clobber=true on a workflow dispatch - if: "${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.clobber) }}" + # if: "${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.clobber) }}" steps: # check if the auto-update-lockfiles branch exists. If it does, and someone other than # the lockfile bot has made the head commit, abort the workflow From 8399aa3964458728c11caa92c472c73296debd43 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:16:59 +0100 Subject: [PATCH 06/10] debugging context --- .github/workflows/refresh-lockfiles.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index aed7845c4c..7c7a5ede32 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -40,17 +40,15 @@ jobs: if (context.eventName == "workflow_dispatch") { 1+1 } - github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}) - .then(res => { - const committer = res.data.commit.commit.committer?.name - if (committer === "Lockfile bot") { + github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}).then(res => { + const committer = res.data.commit.commit.committer + if (committer && committer.name === "Lockfile bot") { core.info("Bot was last to update. Continue") } else { core.error("New commits since bot last ran. Abort!") core.setFailed("Don't clobber commits, aborting workflow.") } - }) - .catch(err => { + }).catch(err => { if (err.status === 404) { core.info("Branch not found, continue") } From b1a86d77b2c5a0d024ec538d1cbfeda328e5a3f2 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:32:51 +0100 Subject: [PATCH 07/10] Clobber override support --- .github/workflows/refresh-lockfiles.yml | 110 ++++++++++++------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 7c7a5ede32..271641f985 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -36,17 +36,16 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - console.log(context) - if (context.eventName == "workflow_dispatch") { - 1+1 + if (context.eventName == "workflow_dispatch" && context.payload.inputs.clobber) { + core.info("manual override, continuing workflow ") + return } github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}).then(res => { const committer = res.data.commit.commit.committer if (committer && committer.name === "Lockfile bot") { core.info("Bot was last to update. Continue") } else { - core.error("New commits since bot last ran. Abort!") - core.setFailed("Don't clobber commits, aborting workflow.") + core.setFailed("New commits since bot last ran. Abort!") } }).catch(err => { if (err.status === 404) { @@ -54,59 +53,60 @@ jobs: } }) - # gen_lockfiles: - # # this is a matrix job: it splits to create new lockfiles for each - # # of the CI test python versions. - # # this list below should be changed when covering more python versions - # # TODO: generate this matrix automatically from the list of available py**.yml files - # # ref: https://tomasvotruba.com/blog/2020/11/16/how-to-make-dynamic-matrix-in-github-actions/ - # runs-on: ubuntu-latest + gen_lockfiles: + # this is a matrix job: it splits to create new lockfiles for each + # of the CI test python versions. + # this list below should be changed when covering more python versions + # TODO: generate this matrix automatically from the list of available py**.yml files + # ref: https://tomasvotruba.com/blog/2020/11/16/how-to-make-dynamic-matrix-in-github-actions/ + runs-on: ubuntu-latest + needs: no_clobber - # strategy: - # matrix: - # python: ['36', '37', '38'] + strategy: + matrix: + python: ['36', '37', '38'] - # steps: - # - uses: actions/checkout@v2 - # - name: install conda-lock - # run: | - # source $CONDA/bin/activate base - # conda install -y -c conda-forge conda-lock - # - name: generate lockfile - # run: | - # $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml - # mv conda-linux-64.lock py${{matrix.python}}-linux-64.lock - # - name: output lockfile - # uses: actions/upload-artifact@v2 - # with: - # path: py${{matrix.python}}-linux-64.lock + steps: + - uses: actions/checkout@v2 + - name: install conda-lock + run: | + source $CONDA/bin/activate base + conda install -y -c conda-forge conda-lock + - name: generate lockfile + run: | + $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml + mv conda-linux-64.lock py${{matrix.python}}-linux-64.lock + - name: output lockfile + uses: actions/upload-artifact@v2 + with: + path: py${{matrix.python}}-linux-64.lock - # create_pr: - # # once the matrix job has completed all the lock files will have been uploaded as artifacts. - # # Download the artifacts, add them to the repo, and create a PR. - # runs-on: ubuntu-latest - # needs: gen_lockfiles + create_pr: + # once the matrix job has completed all the lock files will have been uploaded as artifacts. + # Download the artifacts, add them to the repo, and create a PR. + runs-on: ubuntu-latest + needs: gen_lockfiles - # steps: - # - uses: actions/checkout@v2 - # - name: get artifacts - # uses: actions/download-artifact@v2 - # with: - # path: artifacts + steps: + - uses: actions/checkout@v2 + - name: get artifacts + uses: actions/download-artifact@v2 + with: + path: artifacts - # - name: Update lock files in repo - # run: | - # cp artifacts/artifact/*.lock requirements/ci/nox.lock - # rm -r artifacts + - name: Update lock files in repo + run: | + cp artifacts/artifact/*.lock requirements/ci/nox.lock + rm -r artifacts - # - name: Create Pull Request - # uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8 - # with: - # commit-message: Updated environment lockfiles - # committer: "Lockfile bot " - # author: "Lockfile bot " - # delete-branch: true - # branch: auto-update-lockfiles - # title: Update CI environment lockfiles - # body: | - # Lockfiles updated to the latest resolvable environment. + - name: Create Pull Request + uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8 + with: + commit-message: Updated environment lockfiles + committer: "Lockfile bot " + author: "Lockfile bot " + delete-branch: true + branch: auto-update-lockfiles + title: Update CI environment lockfiles + body: | + Lockfiles updated to the latest resolvable environment. From 13f5e82e3e4272cc695339bf3513c08fb728d6a7 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 11:50:15 +0100 Subject: [PATCH 08/10] Clobber with yes/true only --- .github/workflows/refresh-lockfiles.yml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 271641f985..1044e85333 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -16,8 +16,10 @@ on: workflow_dispatch: inputs: clobber: - description: Force the workflow to run, potentially clobbering any commits already made to the branch - default: false + description: | + Force the workflow to run, potentially clobbering any commits already made to the branch. + Enter "yes" or "true" to run. + default: "no" schedule: # Run once a week on a Saturday night - cron: 1 0 * * 6 @@ -36,20 +38,23 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - if (context.eventName == "workflow_dispatch" && context.payload.inputs.clobber) { - core.info("manual override, continuing workflow ") - return + if (context.eventName == "workflow_dispatch") { + const clobber = context.payload.inputs.clobber || "no"; + if (["yes", "true", "y"].includes(clobber.trim().toLowerCase())) { + core.info("Manual override, continuing workflow, potentially overwriting previous commits to auto-update-lockfiles"); + return + } } github.repos.getBranch({...context.repo, branch: "auto-update-lockfiles"}).then(res => { - const committer = res.data.commit.commit.committer + const committer = res.data.commit.commit.committer; if (committer && committer.name === "Lockfile bot") { - core.info("Bot was last to update. Continue") + core.info("Lockfile bot was the last to push to auto-update-lockfiles. Continue."); } else { - core.setFailed("New commits since bot last ran. Abort!") + core.setFailed("New commits to auto-update-lockfiles since bot last ran. Abort!"); } }).catch(err => { if (err.status === 404) { - core.info("Branch not found, continue") + core.info("auto-update-lockfiles branch not found, continue"); } }) @@ -95,7 +100,7 @@ jobs: path: artifacts - name: Update lock files in repo - run: | + run: | cp artifacts/artifact/*.lock requirements/ci/nox.lock rm -r artifacts From cf5df97279bec7fb8201c0afcd461e43c591a37c Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 12:01:22 +0100 Subject: [PATCH 09/10] refresh-lockfiles workflow comment cleanup --- .github/workflows/refresh-lockfiles.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 1044e85333..e565e95c75 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -29,11 +29,11 @@ jobs: no_clobber: runs-on: ubuntu-latest - # allow users to force a workflow dispatch by setting the clobber=true on a workflow dispatch - # if: "${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.clobber) }}" steps: # check if the auto-update-lockfiles branch exists. If it does, and someone other than - # the lockfile bot has made the head commit, abort the workflow + # the lockfile bot has made the head commit, abort the workflow. + # This job can be manually overridden by running directly from the github actions panel + # (known as a "workflow_dispatch") and setting the `clobber` input to "yes". - uses: actions/script@v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} From 06271b4fbaedb7b944e683552a97f48b60d589ce Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 26 May 2021 15:44:56 +0100 Subject: [PATCH 10/10] Added documentation --- docs/src/developers_guide/contributing_ci_tests.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/src/developers_guide/contributing_ci_tests.rst b/docs/src/developers_guide/contributing_ci_tests.rst index b059bf88e6..cdced71fd1 100644 --- a/docs/src/developers_guide/contributing_ci_tests.rst +++ b/docs/src/developers_guide/contributing_ci_tests.rst @@ -66,6 +66,16 @@ and add the changed lockfiles to your pull request. New lockfiles are generated automatically each week to ensure that Iris continues to be tested against the latest available version of its dependencies. +Each week the yaml files in ``requirements/ci`` are resolved by a GitHub Action. +If the resolved environment has changed, a pull request is created with the new lock files. +The CI test suite will run on this pull request and fixes for failed tests can be pushed to +the ``auto-update-lockfiles`` branch to be included in the PR. +Once a developer has pushed to this branch, the auto-update process will not run again until +the PR is merged, to prevent overwriting developer commits. +The auto-updater can still be invoked manually in this situation by going to the `GitHub Actions`_ +page for the workflow, and manually running using the "Run Workflow" button. +By default, this will also not override developer commits. To force an update, you must +confirm "yes" in the "Run Worflow" prompt. .. _skipping Cirrus-CI tasks: @@ -137,3 +147,4 @@ See the `pre-commit.ci dashboard`_ for details of recent past and active Iris jo .. _Cirrus-CI Documentation: https://cirrus-ci.org/guide/writing-tasks/ .. _.pre-commit-config.yaml: https://github.com/SciTools/iris/blob/master/.pre-commit-config.yaml .. _pre-commit.ci dashboard: https://results.pre-commit.ci/repo/github/5312648 +.. _GitHub Actions: https://github.com/SciTools/iris/actions/workflows/refresh-lockfiles.yml \ No newline at end of file