{"id":13910985,"url":"https://github.com/urlstechie/urlchecker-action","last_synced_at":"2025-11-10T13:31:09.617Z","repository":{"id":37782024,"uuid":"223295258","full_name":"urlstechie/urlchecker-action","owner":"urlstechie","description":":octocat: :link: GitHub action to extract and check urls in code and documentations.","archived":false,"fork":false,"pushed_at":"2024-05-29T06:35:38.000Z","size":40869,"stargazers_count":34,"open_issues_count":15,"forks_count":12,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-29T23:46:25.896Z","etag":null,"topics":["actions","continuous-delivery","continuous-deployment","continuous-integration","continuous-testing","github-action","github-actions-ci","github-actions-python","link-checker","monitoring","url-check","url-checker","urls","urls-checker"],"latest_commit_sha":null,"homepage":"https://urlchecker-python.readthedocs.io","language":"Shell","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/urlstechie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["vsoch","SuperKogito"]}},"created_at":"2019-11-22T01:08:21.000Z","updated_at":"2024-10-22T16:43:06.000Z","dependencies_parsed_at":"2024-06-18T15:28:47.650Z","dependency_job_id":"f6fd66a1-5c4b-4c08-8ed0-c59aa8abc7b7","html_url":"https://github.com/urlstechie/urlchecker-action","commit_stats":{"total_commits":174,"total_committers":9,"mean_commits":"19.333333333333332","dds":"0.37356321839080464","last_synced_commit":"b643b43e2ac605e1475331c7b67247d242b7dce4"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/urlstechie/urlchecker-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urlstechie%2Furlchecker-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urlstechie%2Furlchecker-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urlstechie%2Furlchecker-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urlstechie%2Furlchecker-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/urlstechie","download_url":"https://codeload.github.com/urlstechie/urlchecker-action/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urlstechie%2Furlchecker-action/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265742352,"owners_count":23820831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["actions","continuous-delivery","continuous-deployment","continuous-integration","continuous-testing","github-action","github-actions-ci","github-actions-python","link-checker","monitoring","url-check","url-checker","urls","urls-checker"],"created_at":"2024-08-07T00:01:53.061Z","updated_at":"2025-11-10T13:31:07.131Z","avatar_url":"https://github.com/urlstechie.png","language":"Shell","readme":"[![GitHub Marketplace](https://img.shields.io/static/v1?label=Marketplace\u0026message=urlchecker-action\u0026color=blue?style=flat\u0026logo=github)](https://github.com/marketplace/actions/urlchecker-action)\n[![CodeFactor](https://www.codefactor.io/repository/github/urlstechie/urlchecker-action/badge)](https://www.codefactor.io/repository/github/urlstechie/urlchecker-action)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen)](https://github.com/urlstechie/urlchecker-action/blob/master/LICENSE)\n\n# urlchecker-action\n\nA GitHub action to collect and check URLs in a project (code and documentation).\nThe action aims at detecting and reporting broken links.\n\n## How to use it?\n\nA set of examples are included in the [examples](examples) folder. A few detailed \nexamples are also included below. Note that examples always reference the master branch,\nhowever you should change them to reference a [release](https://github.com/urlstechie/urlchecker-action/releases).\n\n### Example with Checkout\n\nFor most use cases, you will want to use the git repository that is being checked\nfor a GitHub actions, and we do this by way of the [actions/checkout](https://github.com/actions/checkout) action.\n\n```\nname: Check URLs\n\non: [push]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v3\n    - name: urls-checker\n      uses: urlstechie/urlchecker-action@master\n      with:\n        # A subfolder or path to navigate to in the present or cloned repository\n        subfolder: docs\n\n        # A comma-separated list of file types to cover in the URL checks\n        file_types: .md,.py,.rst\n\n        # Choose whether to include file with no URLs in the prints.\n        print_all: false\n\n        # The timeout seconds to provide to requests, defaults to 5 seconds\n        timeout: 5\n\n        # How many times to retry a failed request (each is logged, defaults to 1)\n        retry_count: 3\n\n        # A comma separated links to exclude during URL checks\n        exclude_urls: https://github.com/SuperKogito/URLs-checker/issues/1,https://github.com/SuperKogito/URLs-checker/issues/2\n\n        # A comma separated patterns to exclude during URL checks\n        exclude_patterns: https://github.com/SuperKogito/Voice-based-gender-recognition/issues\n\n        # choose if the force pass or not\n        force_pass : true\n```\n\nNote that as of version 0.2.2, references to `white_listed_*` have been changed to\n`exclude_*` to be consistent with the `include_*` variables.\n\n\n### Example with Custom Clone\n\nIt could, however, be the case that you've set up a repository with one or more uses of the URLChecker\nthat must clone one or more repos (possibly with varying branches) before doing the check.\nIn this case, you might want to define `git_path` and `branch` for each section.\nAn example is below:\n\n```\nname: Check URLs\n\non: [push]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: URLs-checker\n      uses: urlstechie/urlchecker-action@master\n      with:\n        # A project to clone. If not provided, assumes already cloned in the present working directory.\n        git_path: https://github.com/urlstechie/URLs-checker-test-repo\n\n        # If a git_path is defined to clone, clone this branch (defaults to master)\n        branch: devel\n\n        # A subfolder or path to navigate to in the present or cloned repository\n        subfolder: docs\n\n        # Delete the cloned repository after running URLchecked (default is false)\n        cleanup: true\n\n        # A comma-separated list of file types to cover in the URL checks\n        file_types: .md,.py,.rst\n\n        # Choose whether to include file with no URLs in the prints.\n        print_all: false\n\n        # Choose whether to print a more verbose end summary with files and broken URLs.\n        verbose: true\n\n        # The timeout seconds to provide to requests, defaults to 5 seconds\n        timeout: 5\n\n        # How many times to retry a failed request (each is logged, defaults to 1)\n        retry_count: 3\n\n        # A comma separated links to exclude during URL checks\n        exclude_urls: https://github.com/SuperKogito/URLs-checker/issues/1,https://github.com/SuperKogito/URLs-checker/issues/2\n\n        # A comma separated patterns to exclude during URL checks\n        exclude_patterns: https://github.com/SuperKogito/Voice-based-gender-recognition/issues\n\n        # A comma separated list of file patterns (direct paths work as well) to exclude\n        exclude_files: README.md,/github/workspace/_config.yml\n\n        # numbers of workers to run in parallel (defaults to 9 if unset)\n        workers: 4\n\n        # choose if the force pass or not\n        force_pass: true\n```\n## Inputs\n\n\n| variable name               | variable type                                |      variable description                                                      |\n|-----------------------------|----------------------------------------------|--------------------------------------------------------------------------------|\n| `git_path`                  | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A git url to clone, if the repository isn't already in $PWD                    |\n| `branch`                    | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | If we do a clone, clone this branch (defaults to master                        |\n| `cleanup`                   | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | If we do a clone, delete the cloned folder after (false)                       |\n| `serial`                    | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | Run in serial (good for debugging)                     |\n| `subfolder`                 | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A subfolder to navigate to in the repository to check                          |\n| `file_types`                | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A comma-separated list of file types to cover in the URLs checks.              |\n| `include_files`             | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A comma-separated list of exact files to check.                                |\n| `print_all`                 | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | Choose whether to include file with no URLs in the prints.                     |\n| `verbose`                   | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | Choose whether to print a more verbose end summary with files and broken URLs  |\n| `retry_count`               | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | If a request fails, retry this number of times. Defaults to 1                  |\n| `save`                      | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A path to a csv file to save results to                                        |\n| `timeout`                   | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | The timeout to provide to requests to wait for a response.                     |\n| `exclude_urls`              | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A comma separated list of links.                                               |\n| `exclude_patterns`          | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | A comma separated list of patterns.                                            |\n| `exclude_files`             | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | Full paths to files to exclude (comma separated list).                         |\n| `force_pass`                | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | Choose whether to force a pass when checks are done.                           |\n| `workers`                   | \u003cspan style=\"color:green\"\u003e optional \u003c/span\u003e  | The number of checks (one per file) to run in parallel, defaults to 9 |\n\n## Details\n\n### Hidden File Types\n\nIf you need to specify a file_types pattern to include hidden files, you'll need a `.*` pattern that is provided in the context of a comma separated list, for example:\n\n```yaml\nfile_types: '.*,'\n```\nIf there is another pattern or variable specification that you'd like to see an example of here, please [open an issue](https://github.com/urlstechie/urlchecker-action/issues).\n\n## Demo\n- Using version \u003e 0.1.4\n\u003cimg src=\"demo2.gif\"/\u003e\n\n- Using version =\u003c 0.1.4\n\u003cimg src=\"demo.gif\"/\u003e\n\n## Support\n\nDo you have a question or an issue? Please [open an issue](https://github.com/urlstechie/urlchecker-action/issues) and we can help!\nThe following communities are using the url checker! You can look here for examples\nor inspiration. If you want to add your community, please let us know with an issue.\n\n| Repository                                                                            | Workflow (with permalink to YAML) | Example runs |\n|---------------------------------------------------------------------------------------|-----------------------------------|-------------|\n| [awesome-rseng](https://github.com/rseng/awesome-rseng)                               | [Check URLs in PRs, exclude docs](https://github.com/rseng/awesome-rseng/blob/5f5cb78f8392cf10aec2f3952b305ae9611029c2/.github/workflows/urlchecker.yml)                                   | [Logs](https://github.com/rseng/awesome-rseng/actions?query=workflow%3AURLChecker) |\n| [buildtest](https://github.com/buildtesters/buildtest)                                |  [Check URLs in all commits](https://github.com/buildtesters/buildtest/blob/v0.9.1/.github/workflows/urlchecker.yml)  |  [Logs](https://github.com/HPC-buildtest/buildtest-framework/actions?query=workflow%3A%22Check+URLs%22)           |\n| [e4s](https://github.com/E4S-Project/e4s)                                             | [Check URLs in PR, exclude some URLs](https://github.com/E4S-Project/e4s/blob/master/.github/workflows/urlcheck.yml) | [Logs](https://github.com/E4S-Project/e4s/runs/6783034044?check_suite_focus=true)\n| [us-rse](https://github.com/USRSE/usrse.github.io)                                    |  [Check URLs in PRs, exclude some URL patterns](https://github.com/USRSE/usrse.github.io/blob/abcbed5f5703e0d46edb9e8850eea8bb623e3c1c/.github/workflows/urlchecker.yml)                                 |      [Logs](https://github.com/USRSE/usrse.github.io/actions?query=workflow%3A%22Check+URLs%22)       |\n| [R-hub docs](https://github.com/r-hub/docs)                                           | [Check URLs when on PR labelling](https://github.com/r-hub/docs/blob/bc1eac71206f7cb96ca00148dcf3b46c6d25ada4/.github/workflows/pr.yml) |  [Logs](https://github.com/r-hub/docs/actions?query=workflow%3ACommands)  |\n| [Berlin Hack \u0026 Tell](https://github.com/berlin-hack-and-tell/berlinhackandtell.rocks) | [Check URLs when on PR labelling](https://github.com/berlin-hack-and-tell/berlinhackandtell.rocks/blob/master/.github/workflows/urlchecker-pr-label.yml) |  [Logs](https://github.com/berlin-hack-and-tell/berlinhackandtell.rocks/actions?query=workflow%3ACommands)  |\n","funding_links":["https://github.com/sponsors/vsoch","https://github.com/sponsors/SuperKogito"],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furlstechie%2Furlchecker-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furlstechie%2Furlchecker-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furlstechie%2Furlchecker-action/lists"}