{"id":21919800,"url":"https://github.com/kernelci/kernelci-pipeline","last_synced_at":"2025-08-24T18:38:39.154Z","repository":{"id":37708322,"uuid":"436257017","full_name":"kernelci/kernelci-pipeline","owner":"kernelci","description":"Modular pipeline based on the KernelCI API","archived":false,"fork":false,"pushed_at":"2025-08-18T00:03:20.000Z","size":1326,"stargazers_count":10,"open_issues_count":138,"forks_count":32,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-08-18T02:27:10.826Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kernelci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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}},"created_at":"2021-12-08T13:27:05.000Z","updated_at":"2025-08-14T21:19:40.000Z","dependencies_parsed_at":"2023-02-17T00:15:53.705Z","dependency_job_id":"e1f0b4dd-237f-47cf-b4d6-383571bbd0aa","html_url":"https://github.com/kernelci/kernelci-pipeline","commit_stats":null,"previous_names":[],"tags_count":415,"template":false,"template_full_name":null,"purl":"pkg:github/kernelci/kernelci-pipeline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkernelci-pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkernelci-pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkernelci-pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkernelci-pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kernelci","download_url":"https://codeload.github.com/kernelci/kernelci-pipeline/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkernelci-pipeline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271923697,"owners_count":24844239,"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","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"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":[],"created_at":"2024-11-28T20:11:05.460Z","updated_at":"2025-08-24T18:38:39.147Z","avatar_url":"https://github.com/kernelci.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"KernelCI Pipeline\n-----------------\n\nModular pipeline based on the new [KernelCI\nAPI](https://github.com/kernelci/kernelci-api).\n\nPlease refer to the [API design documentation](https://docs.kernelci.org/maestro/api/design/) and [pipeline design documentation](https://docs.kernelci.org/maestro/pipeline/pipeline-details/) for more details.\n\n### Setting up LAVA lab\n\nFor scheduling jobs, the pipeline needs to be able to submit jobs to a \"LAVA lab\" type of runtime and receive HTTP(S) callbacks with results over \"lava-callback\" service.\nRuntime is configured in yaml file following way, for example:\n```\n  lava-collabora: \u0026lava-collabora-staging\n    lab_type: lava\n    url: https://lava.collabora.dev/\n    priority_min: 40\n    priority_max: 60\n    notify:\n      callback:\n        token: kernelci-api-token-staging\n```\n\n- url is endpoint of LAVA lab API where job will be submitted.\n- notify.callback.token is token DESCRIPTION used in LAVA job definition. This part is a little bit tricky: https://docs.lavasoftware.org/lava/user-notifications.html#notification-callbacks\nIf you specify token name that does not exist in LAVA under user submitting job, callback will return token secret set to description. If following example it will be \"kernelci-api-token-staging\".\nIf you specify token name that matches existing token in LAVA, callback will return token value (secret) from LAVA, which is usually long alphanumeric string.\nTokens generated in LAVA in \"API -\u003e Tokens\" section. Token name is \"DESCRIPTION\" and token value (secret) can be shown by clicking on green eye icon named \"View token hash\".\nCallback URL is set in pipeline instance environment variable KCI_INSTANCE_CALLBACK.\n\nThe `lava-callback` service is used to receive notifications from LAVA after a job has finished.  It is configured to listen on port 8000 by default and expects in header \"Authorization\" token value(secret) from LAVA. Mapping of token value to lab name is done over toml file. Example:\n```\n[runtime.lava-collabora]\nruntime_token = \"REPLACE-LAVA-TOKEN-GENERATED-BY-LAB-LAVA-COLLABORA\"\ncallback_token = \"REPLACE-LAVA-TOKEN-GENERATED-BY-LAB-LAVA-COLLABORA\"\n```\nIn case we have single token, it will be same token used to submit job(by scheduler), runtime_token only, but if we use different to tokens to submit job and to receive callback, we need to specify both runtime_token and callback_token.\n\nSummary: Token name(description) is used in yaml configuration, token value(secret) is used in toml configuration.\n\n### Setup KernelCI Pipeline on WSL\n\nTo setup `kernelci-pipeline` on WSL (Windows Subsystem for Linux), we need to enable case sensitivity for the file system.\nThe reason being is, Windows has case-insensitive file system by default. That prevents the creation of Linux tarball files (while running `tarball` service) with the same names but different cases i.e. one with lower case and the other with upper case. \ne.g. include/uapi/linux/netfilter/xt_CONNMARK.h and include/uapi/linux/netfilter/xt_connmark.h\n\nTo enable case sensitivity recursively inside the cloned directory, fire the below command from Windows Powershell after navigating to the `kernelci-pipeline` directory on your WSL mounted drive.\n\n```\nPS C:\\Users\\HP\u003e cd D:\\kernelci-pipeline \nPS D:\\kernelci-pipeline\u003e (Get-ChildItem -Recurse -Directory).FullName | ForEach-Object {fsutil.exe file setCaseSensitiveInfo $_ enable}  \n```\n\n### KCIDB setup \n\n* add KCIDB_REST variable to the environment file:\n```\necho \"KCIDB_REST=\u003cyour KCIDB REST API endpoint with token\u003e\" \u003e\u003e .env\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelci%2Fkernelci-pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkernelci%2Fkernelci-pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelci%2Fkernelci-pipeline/lists"}