{"id":13806499,"url":"https://github.com/ArtemkaKun/v-project-basement","last_synced_at":"2025-05-13T22:30:22.004Z","repository":{"id":139479589,"uuid":"582396343","full_name":"ArtemkaKun/v-project-basement","owner":"ArtemkaKun","description":"Universal minimum GitHub CI scripts and issue templates for a V project","archived":true,"fork":false,"pushed_at":"2023-09-14T20:09:54.000Z","size":59,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-18T22:32:19.972Z","etag":null,"topics":["boilerplate","devops","template","v","vlang"],"latest_commit_sha":null,"homepage":"","language":"V","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/ArtemkaKun.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},"funding":{"github":["ArtemkaKun","medvednikov"],"ko_fi":"yuart"}},"created_at":"2022-12-26T17:38:29.000Z","updated_at":"2024-02-24T21:40:14.000Z","dependencies_parsed_at":"2024-01-27T09:38:41.247Z","dependency_job_id":"4b48682e-6219-4e37-a4fd-973cfe1ac6c0","html_url":"https://github.com/ArtemkaKun/v-project-basement","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtemkaKun%2Fv-project-basement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtemkaKun%2Fv-project-basement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtemkaKun%2Fv-project-basement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtemkaKun%2Fv-project-basement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArtemkaKun","download_url":"https://codeload.github.com/ArtemkaKun/v-project-basement/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254036812,"owners_count":22003655,"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":["boilerplate","devops","template","v","vlang"],"created_at":"2024-08-04T01:01:12.528Z","updated_at":"2025-05-13T22:30:21.732Z","avatar_url":"https://github.com/ArtemkaKun.png","language":"V","funding_links":["https://github.com/sponsors/ArtemkaKun","https://github.com/sponsors/medvednikov","https://ko-fi.com/yuart"],"categories":["Other"],"sub_categories":["GitHub templates"],"readme":"# What?\n\nThis repo contains universal minimum GitHub CI scripts and issue templates for V project.\nAfter small modifications (specific to your project) you end up with \"must-have\" CI checks for\ncommits/PRs and nice bug/feature request templates. You will spend no time on DevOps stuff\nand rush directly into the development process.\n\n\u003e **Note**\n\u003e\n\u003e I recommend using this basement for every V project, that will be stored on GitHub.\n\n## Details\n\n### `new-changes-validation` GitHub Actions workflow\n\nThe idea of this workflow is very simple - validate incoming changes,\nso you make sure that changes, you are about to push to the main branch, work.\nThe philosophy of the workflow is also simple:\n\n1. Code works\n2. Code beautiful\n3. Code fast\n\n#### Triggers\n\n- push (on the main branch)\n- pull request\n\n#### Flow\n\n```mermaid\ngraph TD\n\tautofree_node[autofree]\n\tskip_unused_node[skip-unused]\n\n\tsubgraph Simple_build_step[Simple build]\n\t\tautofree_node\n\t\tskip_unused_node\n\tend\n\n\tautofree_node_1[autofree]\n\tskip_unused_node_1[skip-unused]\n\tprod_node[prod]\n\tgcc_node[GCC]\n\tclang_node[Clang]\n\n\tsubgraph Different_compilers_step[Different compilers]\n\t\tautofree_node_1\n\t\tskip_unused_node_1\n\t\tprod_node\n\t\tgcc_node\n\t\tclang_node\n\tend\n\n\tsubgraph Cross_compilation_step[Cross compilation]\n    subgraph Compile_from_system[Compiles from]\n      direction LR\n\t\t  linux_base[Linux]\n\t\t  windows_base[Windows]\n      macos_base[macOS]\n    end\n\n    subgraph Compile_to_system[Compiles to]\n      direction LR\n      linux_out[Linux]\n\t\t  windows_out[Windows]\n      macos_out[macOS]\n    end\n\n    linux_base --\u003e windows_out\n    linux_base -.-\u003e |only with native backend|macos_out\n\n    windows_base --\u003e linux_out\n    windows_base -.-\u003e |only with native backend|macos_out\n\n    macos_base --\u003e windows_out\n    macos_base --\u003e linux_out\n\tend\n\n\tstyle parallel_exec1 stroke:blue,stroke-width:2px,stroke-dasharray: 5 5\n\tstyle parallel_exec2 stroke:blue,stroke-width:2px,stroke-dasharray: 5 5\n\tstyle parallel_exec3 stroke:blue,stroke-width:2px,stroke-dasharray: 5 5\n\tstyle parallel_exec4 stroke:blue,stroke-width:2px,stroke-dasharray: 5 5\n\n\tstyle all_success1 stroke:green,stroke-width:2px,stroke-dasharray: 5 5\n\tstyle all_success2 stroke:green,stroke-width:2px,stroke-dasharray: 5 5\n\tstyle all_success3 stroke:green,stroke-width:2px,stroke-dasharray: 5 5\n\tstyle all_success4 stroke:green,stroke-width:2px,stroke-dasharray: 5 5\n\n\tstart_node((Start))\n\t--\u003e Simple_build_step\n\t--\u003e tests_node[Tests]\n\t--\u003e Different_compilers_step\n\t--\u003e parallel_exec1{{Parallel execution}} --\u003e clang_sanitizers_node[Clang sanitizers checks] \u0026 gcc_sanitizers_node[GCC sanitizers checks] \u0026 valgrind_node[Valgrind checks] --\u003e all_success1{{All success}}\n\t--\u003e fuzzer_node[Fuzzer testing]\n\t--\u003e parallel_exec2{{Parallel execution}} --\u003e Cross_compilation_step \u0026 Vab_compilation_node[Vab compilation] --\u003e all_success2{{All success}}\n\t--\u003e parallel_exec3{{Parallel execution}} --\u003e format_node[Format check] \u0026 documentation_node[Documentation check] \u0026 vet_node[Vet check] --\u003e all_success3{{All success}}\n\t--\u003e parallel_exec4{{Parallel execution}} --\u003e performance_regression_node[Performance regression check] \u0026 memory_regression_node[Memory regression check] --\u003e all_success4{{All success}}\n\t--\u003e end_node((End))\n```\n\n#### TODO\n- [ ] Valgrind check\n- [ ] Fuzzer testing\n- [ ] Linux to macOS cross compilation\n- [ ] Windows to other platforms cross compilation\n- [ ] macOS to other platforms cross compilation\n- [ ] Performance regression check\n- [ ] Memory regression check\n\n### Issue templates\n\n#### `Bug` issue template\n\n![Bug issue template example](https://user-images.githubusercontent.com/36485221/219885209-8343f5cf-fbab-428f-8090-f7b1979a5c62.png)\n\n#### `Feature request` issue template\n\n![Feature request issue template example](https://user-images.githubusercontent.com/36485221/219885262-3f770c2b-a51a-4c95-8954-43ff97fc792d.png)\n\n# How?\n\n## How to use it in my project?\n\n1. Copy-paste the `.github` folder to your V project.\n2. Go to the `.github` folder and remove `FUNDING.yml` file.\n\n# Why?\n\n## Why does one need to use this basement?\n\nIt will help to improve the quality of your code and development process for any V project.\nTo decide if you need to use this basement, ask yourself this question\n\"Would my project benefit from automatic compilation, no memory leaks, and clean code checks?\"\n\n## Why GitHub Action jobs in `new-changes-validation` are not parallel?\n\nI decided to make a checking process sequential because of 2 reasons:\n\n1. Make a developer focus on the right thing to fix.\nIt will be at least strange to fix code format and write documentation\nwhen your code doesn't compile. Steps that should run in parallel - run in parallel.\n2. Don't load runners with unneeded work.\nDon't sanitize your code if it doesn't compile, so your runner can do something more valuable\n(maybe checking another project). This is not that clear when you use free GitHub runners,\nbut it's very clear when you have limited self-hosted runners.\n\n# Thanks\n\n- V community - for cool programming language and CI scripts\n- @ulises-jeremias for issue templates\n\n# Donations\n\nIf you like this project, please consider donating to me or the V language project.\nYour donations will help me to continue to develop this project and the V language.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArtemkaKun%2Fv-project-basement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FArtemkaKun%2Fv-project-basement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArtemkaKun%2Fv-project-basement/lists"}