CircleCI artifacts redirector workflow (scikit-learn/scikit-learn)
The CircleCI artifacts redirector workflow from scikit-learn/scikit-learn, explained and optimized by Latchkey.
CI health: B - good
Point runs-on at Latchkey and get job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the CircleCI artifacts redirector workflow from the scikit-learn/scikit-learn repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: CircleCI artifacts redirector
on: [status]
# Restrict the permissions granted to the use of secrets.GITHUB_TOKEN in this
# github actions workflow:
# https://docs.github.com/en/actions/security-guides/automatic-token-authentication
permissions:
statuses: write
jobs:
circleci_artifacts_redirector_job:
runs-on: ubuntu-latest
# For testing this action on a fork, remove the "github.repository =="" condition.
if: "github.repository == 'scikit-learn/scikit-learn' && github.event.context == 'ci/circleci: doc'"
name: Run CircleCI artifacts redirector
steps:
- name: GitHub Action step
uses: scientific-python/circleci-artifacts-redirector-action@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
api-token: ${{ secrets.CIRCLECI_TOKEN }}
artifact-path: 0/doc/_changed.html
circleci-jobs: doc
job-title: Check the rendered docs here!
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: CircleCI artifacts redirector on: [status] # Restrict the permissions granted to the use of secrets.GITHUB_TOKEN in this # github actions workflow: # https://docs.github.com/en/actions/security-guides/automatic-token-authentication permissions: statuses: write jobs: circleci_artifacts_redirector_job: timeout-minutes: 30 runs-on: latchkey-small # For testing this action on a fork, remove the "github.repository =="" condition. if: "github.repository == 'scikit-learn/scikit-learn' && github.event.context == 'ci/circleci: doc'" name: Run CircleCI artifacts redirector steps: - name: GitHub Action step uses: scientific-python/circleci-artifacts-redirector-action@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} api-token: ${{ secrets.CIRCLECI_TOKEN }} artifact-path: 0/doc/_changed.html circleci-jobs: doc job-title: Check the rendered docs here!
What changed
- Run on Latchkey managed runners with one line (
runs-on), which apply the fixes below automatically and self-heal transient failures. This example useslatchkey-small; pick the runner size that fits the job. - Add a job timeout so a hung step cannot burn hours of runner time.
1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.