{"id":42194614,"url":"https://github.com/scientific-python/circleci-artifacts-redirector-action","last_synced_at":"2026-01-27T00:01:52.007Z","repository":{"id":35503362,"uuid":"217608344","full_name":"scientific-python/circleci-artifacts-redirector-action","owner":"scientific-python","description":"GitHub Action to add a GitHub status link to a CircleCI artifact.","archived":false,"fork":false,"pushed_at":"2026-01-22T00:00:58.000Z","size":2004,"stargazers_count":15,"open_issues_count":6,"forks_count":14,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-24T03:55:34.782Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scientific-python.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-10-25T20:15:56.000Z","updated_at":"2026-01-22T00:01:02.000Z","dependencies_parsed_at":"2023-02-14T02:16:31.314Z","dependency_job_id":"21a8118a-4c0f-4960-bd40-03e8465af7ef","html_url":"https://github.com/scientific-python/circleci-artifacts-redirector-action","commit_stats":{"total_commits":85,"total_committers":8,"mean_commits":10.625,"dds":"0.23529411764705888","last_synced_commit":"4e40163f4cf571096b3291514cdb43e0b7095636"},"previous_names":["scientific-python/circleci-artifacts-redirector-action","larsoner/circleci-artifacts-redirector-action"],"tags_count":10,"template":false,"template_full_name":"actions/javascript-action","purl":"pkg:github/scientific-python/circleci-artifacts-redirector-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fcircleci-artifacts-redirector-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fcircleci-artifacts-redirector-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fcircleci-artifacts-redirector-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fcircleci-artifacts-redirector-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scientific-python","download_url":"https://codeload.github.com/scientific-python/circleci-artifacts-redirector-action/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fcircleci-artifacts-redirector-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28754164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T13:59:49.818Z","status":"ssl_error","status_checked_at":"2026-01-25T13:59:33.728Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-27T00:01:51.290Z","updated_at":"2026-01-27T00:01:51.996Z","avatar_url":"https://github.com/scientific-python.png","language":"JavaScript","readme":"# circleci-artifacts-redirector-action\n\nGitHub Action to add a GitHub status link to a CircleCI artifact.\n\n## Example usage\n\nSample `.github/workflows/circleci_redirect.yml`:\n\n\n```YAML\non: [status]\n\npermissions: read-all\n\njobs:\n  circleci_artifacts_redirector_job:\n    runs-on: ubuntu-latest\n    if: \"${{ github.event.context == 'ci/circleci: build_doc' }}\"\n    permissions:\n      statuses: write\n    name: Run CircleCI artifacts redirector\n    steps:\n      - name: GitHub Action step\n        id: step1\n        uses: scientific-python/circleci-artifacts-redirector-action@v1  # or use hash for better security\n        with:\n          repo-token: ${{ secrets.GITHUB_TOKEN }}\n          api-token: ${{ secrets.CIRCLECI_TOKEN }}\n          artifact-path: 0/test_artifacts/root_artifact.md\n          circleci-jobs: build_doc\n          job-title: Check the rendered docs here!\n          domain:\n      - name: Check the URL\n        if: github.event.status != 'pending'\n        run: |\n          curl --fail ${{ steps.step1.outputs.url }} | grep $GITHUB_SHA\n\n```\n- The `if: \"${{ github.event.context == 'ci/circleci: build_doc' }}\"`\n  conditional in the `job` is helpful to limit the number of redirector\n  actions that your repo will run to avoid polluting your GitHub actions\n  logs. The `circleci-jobs` (below) should be labeled correspondingly.\n- The `api-token` needs to be a\n   [CircleCI personal API token](https://app.circleci.com/settings/user/tokens)\n  or a [CircleCI project API token](https://circleci.com/docs/managing-api-tokens/#creating-a-project-api-token)\n  whose value has been added to the GitHub secrets of your repository (e.g., as\n  `CIRCLECI_TOKEN`), e.g. for the MNE-Python *project* this would be\n  https://github.com/mne-tools/mne-python/settings/secrets/actions and for the\n  *organization* it would be https://github.com/organizations/mne-tools/settings/secrets/actions (pick whichever scope makes sense for you).\n- The `artifact-path` should point to an artifact path from your CircleCI\n  build. This is typically whatever follows the CircleCI artifact root path,\n  for example `0/test_artifacts/root_artifact.md`.\n- The `circleci-jobs` is a comma-separated list of jobs to monitor, but usually\n  there is a single one that you want an artifact path for.\n  The default is `\"build_docs,build,doc\"`, which will look for any\n  jobs with these names and create an artifacts link for them. If you have\n  multiple jobs to consider, make sure you adjust your `if:` statement (above)\n  correspondingly.\n- The `job-title` corresponds to the name of the action job as it will appear\n  on github. It is **not** the circle-ci job you want the artifacts for\n  (this is `circleci-jobs`). This field is optional.\n- Use `domain` to set where the CircleCI artifacts are hosted. It defaults to CircleCI, but the\n  [Scientific Python CircleCI proxy](https://github.com/scientific-python/circleci-proxy) can be set, too,\n  as it addresses some routing issues for mystmd generated outputs.\n- The action has an output `url` that you can use in downstream steps, but\n  this URL will only point to a valid artifact once the job is complete, i.e.,\n  `github.event.status` is either `'success'`, `'fail'`, or (maybe) `'error'`,\n  not `'pending'`.\n- If you have trouble, try [enabling debugging logging](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging)\n  for the action by setting the secret `ACTIONS_STEP_DEBUG=true`.\n\n\u003e **Note**: The standard PR-to-main-repo-from-branch-in-a-fork workflow might\n\u003e not activate the action. For changes to take effect, changes might need to be\n\u003e made to to the default branch *in a repo with the action enabled*. For\n\u003e example, you could iterate directly in `master`, or in `master` of a fork.\n\u003e This seems to be a limitation of the fact that CircleCI uses the `status`\n\u003e (rather than app) API and that this is always tied to the `master`/default\n\u003e branch of a given repository.\n\n## Limitations\n\nCurrently has (known) limitations:\n\n- Tests do not test anything (haven't gotten around to fixing them)\n- Only allows redirecting to a single file that must be configured ahead of\n  time as a file (cannot be changed within the CircleCI run)\n\nEventually this might be fixable by a bit of work and addition of\ncustomization options.\n\n## Contributing\n\nMake any changes needed to `package-lock.json` and `index.js` and open a PR.These changes will automatically be compiled into `dist/index.js` by the\n[autofix.ci bot](https://autofix.ci/).\n\nIf you want to do the same work locally as the bot, use `npm install` to get\nall dependencies and then call `ncc build index.js`. On Ubuntu you might\nneed to `export NODE_OPTIONS=--openssl-legacy-provider` before the `ncc build`\nstep.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscientific-python%2Fcircleci-artifacts-redirector-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscientific-python%2Fcircleci-artifacts-redirector-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscientific-python%2Fcircleci-artifacts-redirector-action/lists"}