{"id":14155596,"url":"https://github.com/antmicro/renode-linux-runner-action","last_synced_at":"2026-02-17T18:00:47.192Z","repository":{"id":63715622,"uuid":"567264668","full_name":"antmicro/renode-linux-runner-action","owner":"antmicro","description":"Run your tests in a configurable, emulated Linux environment with a custom kernel and access to virtual peripherals","archived":false,"fork":false,"pushed_at":"2025-11-18T10:51:37.000Z","size":179,"stargazers_count":12,"open_issues_count":1,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-11-18T13:19:35.693Z","etag":null,"topics":["arm64","emulation","gpio","i2c","linux","renode","risc-v","spi","testing","v4l2","vivid"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antmicro.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":"2022-11-17T12:31:02.000Z","updated_at":"2025-11-18T10:51:42.000Z","dependencies_parsed_at":"2025-09-02T17:05:56.692Z","dependency_job_id":"2c016be6-9d14-434b-bf6b-4c8b5c9ec8a6","html_url":"https://github.com/antmicro/renode-linux-runner-action","commit_stats":{"total_commits":11,"total_committers":3,"mean_commits":"3.6666666666666665","dds":0.4545454545454546,"last_synced_commit":"fa9d262b9880390fe253f4621e281ab9f3fe6b42"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/antmicro/renode-linux-runner-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antmicro%2Frenode-linux-runner-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antmicro%2Frenode-linux-runner-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antmicro%2Frenode-linux-runner-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antmicro%2Frenode-linux-runner-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antmicro","download_url":"https://codeload.github.com/antmicro/renode-linux-runner-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antmicro%2Frenode-linux-runner-action/sbom","scorecard":{"id":199265,"data":{"date":"2025-08-11","repo":{"name":"github.com/antmicro/renode-linux-runner-action","commit":"a5be216b20e5b2abb66792dc83cd972a5b726e1e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Code-Review","score":4,"reason":"Found 13/30 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/release.yml:10","Warn: no topLevel permission defined: .github/workflows/code-quality.yml:1","Warn: no topLevel permission defined: .github/workflows/pull-request.yml:1","Warn: topLevel permissions set to 'write-all': .github/workflows/release.yml:4"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/code-quality.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/code-quality.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/code-quality.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/code-quality.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:103: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/pull-request.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:182: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:209: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:236: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:255: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:276: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:105: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:156: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:292: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-locally.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/antmicro/renode-linux-runner-action/run-locally.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/code-quality.yml:18","Info:   0 out of  29 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact fix-use_renode_portable not signed: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/224963431","Warn: release artifact v1.0.1 not signed: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/111013038","Warn: release artifact v1.0 not signed: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/110965934","Warn: release artifact v1 not signed: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/110037899","Warn: release artifact v0 not signed: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/100682017","Warn: release artifact fix-use_renode_portable does not have provenance: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/224963431","Warn: release artifact v1.0.1 does not have provenance: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/111013038","Warn: release artifact v1.0 does not have provenance: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/110965934","Warn: release artifact v1 does not have provenance: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/110037899","Warn: release artifact v0 does not have provenance: https://api.github.com/repos/antmicro/renode-linux-runner-action/releases/100682017"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T22:30:43.472Z","repository_id":63715622,"created_at":"2025-08-16T22:30:43.473Z","updated_at":"2025-08-16T22:30:43.473Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29552224,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T17:56:56.811Z","status":"ssl_error","status_checked_at":"2026-02-17T17:56:55.544Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["arm64","emulation","gpio","i2c","linux","renode","risc-v","spi","testing","v4l2","vivid"],"created_at":"2024-08-17T08:04:11.458Z","updated_at":"2026-02-17T18:00:47.185Z","avatar_url":"https://github.com/antmicro.png","language":"Python","funding_links":[],"categories":["testing"],"sub_categories":[],"readme":"# renode-linux-runner-action\n\nCopyright (c) 2022-2023 [Antmicro](https://www.antmicro.com)\n\nThis action enables users to run workflows that require certain Linux [devices](#devices) not available in default GitHub runners and provides the means to run entire custom kernels.\nThis is achieved by running an emulated Linux system inside [Renode](https://renode.io/).\n\n## Parameters\n\n### Tests configuration\n\n- [`renode-run`](#running-your-commands-in-an-emulated-linux-system) - A single command, list of commands or a [YAML Task](#tasks) containing commands to be run in Renode\n- [`shared-dirs`](#shared-directories) - Shared directory paths. Their contents will be mounted in Renode\n- [`python-packages`](#python-packages) - Python packages from PyPI or a Git repository that will be sideloaded into the emulated Linux system\n- [`repos`](#git-repositories) - Git repositories that will be sideloaded into the emulated system\n- [`fail-fast`](#fail-fast) - Fail after first non-zero exit code instead of failing at the end. Default: `true`.\n\n### OS configuration\n\n- [`rootfs-size`](#rootfs-size) - Set the size of the rootfs image. Default: `auto`.\n- [`image-type`](#image) - `native` or `docker`. Read about the differences in the [image section](#image)\n- [`image`](#image) - URL path to a Linux rootfs `tar.xz` archive for the specified architecture or a Docker image identifier. If not specified, the action will use the default one. See releases for examples\n- [`tasks`](#tasks) - Allows you to change the way the system is initialized. See [Tasks](#tasks) for more details.\n\n### Board and devices configuration\n\n- [`network`](#network) - Enable Internet access in the emulated Linux system. Default: `true`\n- [`devices`](#devices) - List of devices to add to the emulated system. If not specified, the action will not add any devices\n- [`kernel`](#kernel) - URL or path to the `tar.xz` archive containing the compiled embedded Linux kernel and initramfs. If not specified, the action will use the default kernel. See releases for examples\n- [`arch`](#emulation) - Processor architecture\n- [`board`](#board) - A specific board name, or `default` for architecture default, or `custom` for a custom board\n- [`resc`](#board) - Custom Renode script\n- [`repl`](#board) - Custom Renode platform description.\n\n## Running your commands in an emulated Linux system\n\nThis is the simplest example of how you can run your commands in the emulated Linux system. The default image will boot and log itself into a basic shell session.\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    renode-run: uname -a\n```\n\nThis is the result:\n\n```raw\n# uname -a\nLinux buildroot 5.10.178 #1 SMP Thu May 11 13:44:01 UTC 2023 riscv64 GNU/Linux\n#\n```\n\nIf you want to run more than one command, you can use a multiline string. For example, for this configuration:\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    renode-run: |\n      ls /dev | grep tty | head -n 3\n      tty\n```\n\nyou get the following result:\n\n```raw\n# ls /dev | grep tty | head -n 3\ntty\ntty0\ntty1\n# tty\n/dev/ttySIF0\n```\n\nYou can also run shell scripts, but you need to load them into the emulated system first using the [shared directories feature](#shared-directories) or by [sideloading Git repositories](#git-repositories).\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dirs: scripts\n    renode-run: sh my-script.sh\n```\n\nYou can also set additional test parameters with [Task files](#tasks). For example:\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    network: false\n    renode-run: |\n      - should-fail: true\n      - commands:\n        - wget --spider -S github.com 2\u003e\u00261 | grep \"301 Moved Permanently\"\n```\n\nThis test will complete successfully because the network is disabled in the emulated system and `wget` will return a non-zero exit code.\n\n### Special cases\n\nIf the action detects that one of your commands has failed, it will also fail with the error code that your command failed with, and no further commands will be executed. This behavior can be changed with the [`fail-fast`](#fail-fast) action parameter.\n\n### Limitations\n\nTo keep the system image minimal, there is no standard `bash` shell, but a `busybox ash` shell instead. If you need `bash`, you can provide your own custom image. More on this in the ['Image' section of the documentation](#image).\n\n## Examples\n\nThe [release](.github/workflows/release.yml) workflow contains an example usage of this action.\n\n## Emulation\n\nThe Linux emulation runs on the RISC-V HiFive Unleashed single core platform in [Renode 1.15.3](https://github.com/renode/renode). Basic specs like 8GB of RAM and a network connection are configured in the emulated system.\n\n### Architecture\n\nYou can specify the architecture with the `arch` parameter. The default architecture is `riscv64`.\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    arch: riscv64\n    renode-run: ...\n```\n\nAvailable architectures:\n\n- riscv64\n- arm32 (armv7)\n\nWe are working on adding `arm64` support.\n\n## Shared directories\n\nYou can specify many directories that will be added to the rootfs. All files from these directories will be available in the specified target directories.\n\nIn the following example, files from the `project-files` directory will be extracted to the `/opt/project` directory. If no destination directory is specified, the files will be extracted to `/home`.  \n\nAt the end of the action contents of the shared directories will be copied back from the mounted filesystem.\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dirs: |\n      shared-dir1\n      shared-dir2\n      project-files /opt/project\n    renode-run: command_to_run\n```\n\n## Devices\n\nThe action allows you to add additional devices available in a given kernel configuration. For example, if you want to add a stub Video4Linux device, you can specify:\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dirs: |\n      scripts\n      project-files /opt/project\n    renode-run: ./build.sh\n    devices: vivid\n```\n\nMore about available devices and syntax to customize them can be found [in the 'Devices' section of the docs](docs/Devices.md).\n\n## Python packages\n\nThis action lets you sideload Python packages that you want to use in the emulated system. You can select any package from PyPI or from a Git repository.\n\nFor example:\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    renode-run: python --version\n    python-packages: |\n      git+https://github.com/antmicro/pyrav4l2.git\n      pytest==5.3.0\n```\n\nThe action will download all selected packages and their dependencies and install them later in the emulated Linux environment.\n\nYou can read about the details of how the action collects dependencies and installs them [in the 'Python packages' section of the docs](docs/Python-packages.md).\n\n## Git repositories\n\nIf you want to clone other Git repositories to the emulated system, you can use the `repos` argument. You can also specify the path into which you want to clone the repository:\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dir: ./shared-dir\n    renode-run: python --version\n    repos: https://github.com/antmicro/pyrav4l2.git /path/to/repo\n```\n\n## Fail fast\n\nBy default, execution of the script is aborted on the first failure, and an error code is returned. When this option is disabled, the last non-zero exit code is returned after all commands are executed.\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    fail-fast: false\n    renode-run:\n      gryp --version # fail gryp is not available\n      grep --version # will be executed\n```\n\n## Network\n\nYou can disable networking in the emulated Linux by passing the `network: false` argument to the action\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dir: ./shared-dir\n    renode-run: python --version\n    network: false\n```\n\nThis can be useful when running the action in a container matrix strategy if you do not have permission to create `tap` interfaces.\n\nMore information about the network can be found [in the 'Network' section of the docs](docs/Network.md).\n\n## Image\n\nIf you need additional software, you can mount your own filesystem. More information on how it works can be found [in the 'Image' section of the docs](docs/Image.md).\n\n## Rootfs size\n\nThe size of the mounted rootfs can be specified with the `rootfs-size` parameter. The parameter accepts sizes in bytes (e.g. `1000000000`), kilobytes (e.g. `50000K`), megabytes (e.g. `512M`) or gigabytes (e.g. `1G`). The default `rootfs-size` value is `auto`; with this setting the size is calculated automatically. Preceding the value with `+` sign (e.g. `+value`) sets the size to `auto` + `value`.\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dir: shared-dir\n    renode-run: python --version\n    rootfs-size: 512M\n```\n\n## Tasks\n\nSometimes, after replacing initramfs or changing the board configuration, you may need to change the default commands that the action executes on each run. You can use Tasks for that. All the commands that the action executes are stored in the Task files in `action/tasks/*.yml`. If you want to change any of these, you can pass your own Task through the `tasks` action argument. If your Task has the same name as one of the default ones, it will replace it.\n\nFor example:\n\n```yaml\n- uses: antmicro/renode-linux-runner-action@v1\n  with:\n    shared-dir: shared-dir\n    renode-run: |\n      command1\n      command2\n    tasks: |\n      path/to/task/1\n      https://task2/\n```\n\n### Task syntax\n\nA Task file is a YAML file with the following fields:\n\n- `name`: the only mandatory field; it is used to resolve dependencies between Tasks.\n- `shell`: the name of the shell in which the commands will be executed. The action has three available shells (`host`, `target`, `renode`).\n- `requires`: an array of tasks that must be executed before this task. This list is empty by default.\n- `before`: an array of tasks that will be executed after this task. This list is empty by default and the tasks included in the array do not need to exist.\n- `echo`: Boolean parameter. If true, the output from the shell will be printed. Default: `false`\n- `timeout`: Default timeout for each command. Commands can override this setting. Default: `null`, meaning no timeout for your commands.\n- `fail-fast`: Boolean parameter. If true, the action will return the error from the first failed command and stop. Otherwise, the action will fail at the end of the task. Default: `true`\n- `sleep`: The action will wait for the specified time (in seconds) before proceeding to the next task. Default: `0`\n- `command`: List of commands or `Command` objects to execute. Default: empty\n- `vars`: Dictionary of variables. [Read more about it here](#variables). Default: empty\n\nFor example:\n\n```yaml\nname: task1\nshell: target\nrequires: [renode_config]\necho: true\ntimeout: 5\nfail-fast: true\ncommands:\n  - expect: \"buildroot login:\"\n    timeout: null\n    check-exit-code: false\n  - root\n  - dmesg -n 1\n  - date -s \"${{NOW}}\"\n  - echo ${{VAR1}}\nvars:\n  VAR1: \"hello, world!\"\n```\n\n### Command syntax\n\nFor a list of commands you can just use a list of strings, but if you want more customization, you can use a `Command` object containing the following fields:\n\n- `command`: A shell command to be run.\n- `expect`: A string the action will wait for from the command's output.\n- `timeout`: Command timeout (in seconds). By default, the timeout is inherited from the task.\n- `echo`: Boolean parameter. If true, the output from the shell is printed. By default this parameter is inherited from the task.\n- `check-exit-code`: Boolean parameter. If true, the shell will check whether the command failed or not. Default: `true`\n\n### Variables\n\nYou can define a list of variables and use it later with `${{VAR_NAME}}`. In addition, predefined global variables are available:\n\n- `${{BOARD}}`: name of the selected board\n- `${{NOW}}`: current date and time in the format `%Y-%m-%d %H:%M:%S`\n\n### Shell initialization\n\nAny Task that refers to a particular shell will have an additional hidden, shell-specific dependency. They require the Task that has the same name as the shell (for example, `renode`). These Tasks are used to configure the shell. However, you can replace these Tasks by simply providing your own version with the same name.\n\n## Kernel\n\nIt is possible to replace a Linux image on which the tests are run and mount a custom [file system image](#image). You can find further instructions on the topic [in the 'Kernel' section of the docs](docs/Kernel.md).\n\n## Board\n\nThe action allows you to select your own board and choose its configuration. You can select a board from a list (remember that you also need to select a matching processor architecture). Available boards are:\n\n- [riscv64 - hifive_unleashed](action/device/hifive_unleashed/init.resc)\n- [arm32 - zynq_7000](action/device/zynq_7000/init.resc)\n\nYou can also choose the default board: `default` or your own board: `custom`. In the latter case, you need to provide your own resc and repl files, which will configure the emulation. You can select the configuration files using [`resc`](https://renode.readthedocs.io/en/latest/introduction/using.html#resc-scripts) and [`repl`](https://renode.readthedocs.io/en/latest/advanced/platform_description_format.html) parameters. You can read more about these files in the [Renode documentation](https://renode.readthedocs.io/en/latest/index.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantmicro%2Frenode-linux-runner-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantmicro%2Frenode-linux-runner-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantmicro%2Frenode-linux-runner-action/lists"}