{"id":21974270,"url":"https://github.com/frequenz-floss/gh-action-nox","last_synced_at":"2026-04-30T12:32:19.683Z","repository":{"id":247976647,"uuid":"760470769","full_name":"frequenz-floss/gh-action-nox","owner":"frequenz-floss","description":"Runs a nox session","archived":false,"fork":false,"pushed_at":"2026-04-02T07:37:23.000Z","size":57,"stargazers_count":0,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"v1.x.x","last_synced_at":"2026-04-02T21:38:26.065Z","etag":null,"topics":["action","gh-action","github","github-action","nox","python"],"latest_commit_sha":null,"homepage":"","language":null,"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/frequenz-floss.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":"CODEOWNERS","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":"2024-02-20T13:36:36.000Z","updated_at":"2026-04-02T07:37:26.000Z","dependencies_parsed_at":"2024-11-29T15:43:05.475Z","dependency_job_id":"fd8c244f-e1d8-4b85-8d48-d0a74af72f79","html_url":"https://github.com/frequenz-floss/gh-action-nox","commit_stats":null,"previous_names":["frequenz-floss/gh-action-nox"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/frequenz-floss/gh-action-nox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Fgh-action-nox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Fgh-action-nox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Fgh-action-nox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Fgh-action-nox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frequenz-floss","download_url":"https://codeload.github.com/frequenz-floss/gh-action-nox/tar.gz/refs/heads/v1.x.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frequenz-floss%2Fgh-action-nox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32465009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["action","gh-action","github","github-action","nox","python"],"created_at":"2024-11-29T15:40:30.560Z","updated_at":"2026-04-30T12:32:19.677Z","avatar_url":"https://github.com/frequenz-floss.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nox Action\n\nThis action runs a [nox](https://github.com/wntrblm/nox/) session.\n\n\u003e [!WARNING]\n\u003e This action executes `noxfile.py` and potentially build scripts\n\u003e (`setup.py`/`pyproject.toml`) from the working directory. It **MUST NOT** be\n\u003e used with `pull_request_target` workflows that check out untrusted code.\n\u003e Doing so could allow an attacker to execute arbitrary code with the\n\u003e workflow's permissions and secrets.\n\nHere is an example demonstrating how to use it in a workflow with a matrix job:\n\n```yaml\njobs:\n  nox:\n    name: Test with nox\n    permissions:\n      # Required for the checkout step, not this action itself.\n      contents: read\n    strategy:\n      fail-fast: false\n      matrix:\n        os:\n          - ubuntu-slim\n        python-version:\n          - \"3.11\"\n        nox-session:\n          # To speed things up a bit we use the special ci_checks_max session\n          # that uses the same venv to run multiple linting sessions\n          - \"ci_checks_max\"\n          - \"pytest_min\"\n    runs-on: ${{ matrix.os }}\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - name: Run nox\n        uses: frequenz-floss/gh-action-nox@\u003chash\u003e # v1.0.0\n        with:\n          python-version: ${{ matrix.python-version }}\n          nox-session: ${{ matrix.nox-session }}\n          git-username: ${{ secrets.GIT_USER }}\n          git-password: ${{ secrets.GIT_PASS }}\n```\n\n## Inputs\n\n* `python-version`: The python version to use. Required.\n\n  This is passed to the\n  [`actions/gh-action-setup-python-with-deps`](https://github.com/frequenz-floss/gh-action-setup-python-with-deps/)\n  action.\n\n* `nox-session`: The nox session to run. Required.\n\n* `nox-dependencies`: The dependencies to install using `pip` to run `nox`.\n  Optional. Default: `\".[dev-noxfile]\"`.\n\n  Projects not having any extra dependency to run nox can just use `\"nox\"` here.\n\n* `checkout`: Whether to checkout the code. Optional. Default: `true`.\n\n  When true, this action will first setup git using the\n  [`gh-action-setup-git`](https://github.com/frequenz-floss/gh-action-setup-git/),\n  passing `git-username` and `git-password` as credentials if provided, and then\n  fetch the code using [`actions/checkout`](https://github.com/actions/checkout).\n\n* `git-username`: The username to use for the git configuration. Optional.\n\n  This is particularly useful if `pip` needs to access a private repository.\n\n* `git-password`: The password to use for the git configuration. Optional.\n\n  This is particularly useful if `pip` needs to access a private repository.\n\n## Permissions\n\nThis action does not require any GitHub token permissions by itself.\n\nIf the calling workflow uses `actions/checkout`, grant whatever permissions that\nstep needs separately.\n\n## Recommended use with matrix jobs\n\nWhen using a matrix, it is recommended to create a dummy job to *merge* all the\nmatrix jobs, specially if you want to require all matrix jobs to pass to allow\nmerging a pull request. If you do this, you only need to add the dummy job as\na requirement and you don't need to update your requirements each time you\nupdate your matrix.\n\n```yaml\n  # This job runs if all the `nox` matrix jobs ran and succeeded.\n  # It is only used to have a single job that we can require in branch\n  # protection rules, so we don't have to update the protection rules each time\n  # we add or remove a job from the matrix.\n  nox-all:\n    # The job name should match the name of the `nox` job.\n    name: Test with nox\n    needs: [\"nox\"]\n    # We skip this job only if nox was also skipped\n    if: always() \u0026\u0026 needs.nox.result != 'skipped'\n    runs-on: ubuntu-slim\n    env:\n      DEPS_RESULT: ${{ needs.nox.result }}\n    steps:\n      - name: Check matrix job result\n        run: test \"$DEPS_RESULT\" = \"success\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrequenz-floss%2Fgh-action-nox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrequenz-floss%2Fgh-action-nox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrequenz-floss%2Fgh-action-nox/lists"}