{"id":19670309,"url":"https://github.com/witchpixels/godot4-3d-omnibuilder","last_synced_at":"2025-04-29T00:31:39.903Z","repository":{"id":194196888,"uuid":"690220941","full_name":"witchpixels/godot4-3d-omnibuilder","owner":"witchpixels","description":"Tired of fussing around dependencies with the godot-ci container? Tired of C# feeling like a second class citizen? Take heart! the 3d Omnibuilder is here to help!","archived":false,"fork":false,"pushed_at":"2024-08-16T04:29:15.000Z","size":582,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-17T02:53:35.168Z","etag":null,"topics":["ci","docker","github-actions","godot","godot4"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/witchpixels/godot4-omnibuilder3d","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/witchpixels.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","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}},"created_at":"2023-09-11T19:13:29.000Z","updated_at":"2024-08-16T04:46:03.000Z","dependencies_parsed_at":"2023-12-17T07:24:20.376Z","dependency_job_id":"a9d0cfa1-b2ba-4007-ac5e-6881db96f017","html_url":"https://github.com/witchpixels/godot4-3d-omnibuilder","commit_stats":null,"previous_names":["witchpixels/godot4-3d-omnibuilder"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/witchpixels%2Fgodot4-3d-omnibuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/witchpixels%2Fgodot4-3d-omnibuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/witchpixels%2Fgodot4-3d-omnibuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/witchpixels%2Fgodot4-3d-omnibuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/witchpixels","download_url":"https://codeload.github.com/witchpixels/godot4-3d-omnibuilder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224142843,"owners_count":17262884,"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":["ci","docker","github-actions","godot","godot4"],"created_at":"2024-11-11T17:05:42.267Z","updated_at":"2024-11-11T17:05:43.132Z","avatar_url":"https://github.com/witchpixels.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Godot4 3d Omnibuilder Image\nTired of fussing around dependencies with the godot-ci container? Tired of C# feeling like a second class citizen? Take heart! the 3d Omnibuilder is here to help!\n\nMost of this is based on the work done on the work done by [aBarichello's godot-ci project](https://github.com/abarichello/godot-ci/), but what I wanted was a *highly* opinionated, low configuration, turnkey build image. Ideally I just wanted a build script that pulls the repo and runs a single command to build per platform.\n\n## What does it do\nThe image here extends `barichello/godot-ci`'s mono image, and does a few things:\n 1. Installs dotnet sdk 6.0\n 2. Install blender\n 3. Sets the blender path in EditorSettings\n 5. Install's gitversion and provides a script, `apply_version_info.sh` which will stamp Full Sever into `application/config/version` in project settings as well as wherever makes sense in export_presets.cfg.\n\n## Usage\n\nMost everything from [aBarichello's godot-ci project](https://github.com/abarichello/godot-ci/)'s apply, including using butler to upload builds to itch.io, as well as the commands you need to run to export your game. However there are a few additional features that you have at your disposal.\n\nAll of thes examples assume your project is in the repository root. If not, add a `cd ./relative/path/to/project` before each command in the runner.\n\n### Simple Usage\nIf you just want to build your game and the default version of blender installed (3.6.0) works for you, or you don't have any blender files in your project you just need a github actions like the following:\n\n```yaml\nname: Export Project\non:\n  push:\n    branches: [ \"main\" ]\nenv:\n  EXPORT_NAME: cool_godot_game # change this to whatever you like\njobs: \n  build_project_linux:\n    name: Build Project (Linux)\n    runs-on: ubuntu-latest\n    container:\n      image: witchpixels/godot4-omnibuilder3d:latest-4.1.1\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          lfs: true\n\n      - name: Fix paths for Github\n        run: setup_github_paths.sh\n\n      - name: Import assets\n        run: godot -v --headless --import\n\n      - name: Linux Build\n        run: |\n          mkdir -v -p build/linux\n          godot -v --headless --export-release \"Linux/X11\" build/linux/$EXPORT_NAME.x86_64\n\n      - name: Upload Artifact\n        uses: actions/upload-artifact@v1\n        with:\n          name: ${{ env.EXPORT_NAME }}-linux\n          path: build/linux\n  \n  build_project_windows:\n    name: Build Project (Windows Desktop)\n    runs-on: ubuntu-latest\n    container:\n      image: witchpixels/godot4-omnibuilder3d:latest-4.1.1\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          lfs: true\n\n      - name: Fix paths for Github\n        run: setup_github_paths.sh\n\n      - name: Import assets\n        run: godot -v --headless --import\n\n      - name: Windows Build\n        run: |\n          mkdir -v -p build/windows\n          godot -v --headless --export-release \"Windows Desktop\" build/windows/$EXPORT_NAME.x86_64\n\n      - name: Upload Artifact\n        uses: actions/upload-artifact@v1\n        with:\n          name: ${{ env.EXPORT_NAME }}-windows\n          path: build/windows\n```\n\n### Changing Blender Version\nIf you need a specific blender version and can't/don't want to wait for me to update it, there is a script `install_blender.sh` that you can call that will install whatever blender version you need and place it in path.\n\nFor example, if you want to install Blender 3.6.2\n\n```yaml\nname: Export Project Using Blender 3.6.2\non:\n  push:\n    branches: [ \"main\" ]\nenv:\n  EXPORT_NAME: cool_godot_game # change this to whatever you like\njobs: \n  build_project_linux:\n    name: Build Project (Linux)\n    runs-on: ubuntu-latest\n    container:\n      image: witchpixels/godot4-omnibuilder3d:latest-4.1.1\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          lfs: true\n\n      - name: Fix paths for Github\n        run: setup_github_paths.sh\n\n      - name: Install Blender\n        run: install_blender.sh 3.6.2\n\n      - name: Import assets\n        run: godot -v --headless --import\n\n      - name: Linux Build\n        run: |\n          mkdir -v -p build/linux\n          godot -v --headless --export-release \"Linux/X11\" build/linux/$EXPORT_NAME.x86_64\n\n      - name: Upload Artifact\n        uses: actions/upload-artifact@v1\n        with:\n          name: ${{ env.EXPORT_NAME }}-linux\n          path: build/linux\n  \n  build_project_windows:\n    name: Build Project (Windows Desktop)\n    runs-on: ubuntu-latest\n    container:\n      image: witchpixels/godot4-omnibuilder3d:latest-4.1.1\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          lfs: true\n\n      - name: Fix paths for Github\n        run: setup_github_paths.sh\n\n      - name: Install Blender\n        run: install_blender.sh 3.6.2\n\n      - name: Import assets\n        run: godot -v --headless --import\n\n      - name: Windows Build\n        run: |\n          mkdir -v -p build/windows\n          godot -v --headless --export-release \"Windows Desktop\" build/windows/$EXPORT_NAME.x86_64\n\n      - name: Upload Artifact\n        uses: actions/upload-artifact@v1\n        with:\n          name: ${{ env.EXPORT_NAME }}-windows\n          path: build/windows\n```\n\n*NOTE:* You do want to make sure that you run this before the Import Assets step\n\n### Using GitVersion\n\nI use gitversion, maybe you do too! If you do, and don't want to, or haven't yet wrote your own scripts for stamping the version into the build, there is a handy helper script in path called `apply_version_info.sh`.\n\nThis will install `dotnet-gitversion`, pull some repo metadata and then write the version string into `export_presets.cfg` for Windows Desktop builds as well as update `application/config/version` in your project if you have set that in your project.\n\n```yaml\nname: Export Project\non:\n  push:\n    branches: [ \"main\" ]\nenv:\n  EXPORT_NAME: cool_godot_game # change this to whatever you like\njobs: \n  build_project_linux:\n    name: Build Project (Linux)\n    runs-on: ubuntu-latest\n    container:\n      image: witchpixels/godot4-omnibuilder3d:latest-4.1.1\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          lfs: true\n\n      - name: Fix paths for Github\n        run: setup_github_paths.sh\n\n      - name: Import assets\n        run: godot -v --headless --import\n\n      - name: Stamp Versions\n        run: apply_version_info.sh\n\n      - name: Linux Build\n        run: |\n          mkdir -v -p build/linux\n          godot -v --headless --export-release \"Linux/X11\" build/linux/$EXPORT_NAME.x86_64\n\n      - name: Upload Artifact\n        uses: actions/upload-artifact@v1\n        with:\n          name: ${{ env.EXPORT_NAME }}-linux\n          path: build/linux\n  \n  build_project_windows:\n    name: Build Project (Windows Desktop)\n    runs-on: ubuntu-latest\n    container:\n      image: witchpixels/godot4-omnibuilder3d:latest-4.1.1\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n        with:\n          lfs: true\n\n      - name: Fix paths for Github\n        run: setup_github_paths.sh\n\n      - name: Import assets\n        run: godot -v --headless --import\n\n      - name: Stamp Versions\n        run: apply_version_info.sh\n\n      - name: Windows Build\n        run: |\n          mkdir -v -p build/windows\n          godot -v --headless --export-release \"Windows Desktop\" build/windows/$EXPORT_NAME.x86_64\n          \n      - name: Upload Artifact\n        uses: actions/upload-artifact@v1\n        with:\n          name: ${{ env.EXPORT_NAME }}-windows\n          path: build/windows\n```\nThis script just needs to run before your export.\n\n## Contributing\n\nThe main thing I was solving for is getting a one stop solution for using C# on a 3d Game, however if there are other tools that would be beneficial to be pathed in, I'd be happy to add them, or accept PRs that include them.\n\nOne note, though:\n\nIf you add a new tool, please add something that can be verified in `test_project/validate_imports.sh` to test that it is working. Add any needed addons to the test project as needed, it doesn't need to be pretty.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwitchpixels%2Fgodot4-3d-omnibuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwitchpixels%2Fgodot4-3d-omnibuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwitchpixels%2Fgodot4-3d-omnibuilder/lists"}