{"id":19675685,"url":"https://github.com/notnite/blockbuild","last_synced_at":"2026-06-06T21:31:15.966Z","repository":{"id":174066402,"uuid":"651723146","full_name":"NotNite/blockbuild","owner":"NotNite","description":"transparent and automatic CI builds for Minecraft mods","archived":false,"fork":false,"pushed_at":"2023-07-24T17:17:40.000Z","size":71,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T04:24:06.778Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/NotNite.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}},"created_at":"2023-06-09T23:05:02.000Z","updated_at":"2023-07-23T19:05:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"f4267d8f-44d1-4cbd-80bf-0852d62a73ed","html_url":"https://github.com/NotNite/blockbuild","commit_stats":null,"previous_names":["notnite/blockbuild"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotNite%2Fblockbuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotNite%2Fblockbuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotNite%2Fblockbuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotNite%2Fblockbuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotNite","download_url":"https://codeload.github.com/NotNite/blockbuild/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240985445,"owners_count":19889087,"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":[],"created_at":"2024-11-11T17:25:33.109Z","updated_at":"2026-06-06T21:31:15.928Z","avatar_url":"https://github.com/NotNite.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blockbuild\n\n- Problem #1: Minecraft updates a lot. This means mods go out of date, and this means to get mods working closer to release days I usually have to build them from source.\n- Problem #2: I have a [Packwiz](https://github.com/packwiz/packwiz) instance for all my mods, one instance for my client and multiple instances for my server. When having to build from source, it means I have to insert the .jar files into the Packwiz instance. Bundling them is not a good idea, because it's impossible to verify where they came from.\n- Problem #3: You can't link a Packwiz mod file to a GitHub Actions artifact, because those artifacts require a GitHub account to download. While you can use a third party service like [nightly.link](https://nightly.link/) to access them, I don't want to depend on them.\n\nThe solution to all of these problems: blockbuild! blockbuild is a simple shell script and GitHub Actions workflow that builds and publishes mods to GitHub Pages, so I don't have to think about it, and users of my Packwiz instances can verify where they came from.\n\n## Usage\n\n- Fork this repository or copy the required files into your own repository.\n  - `blockbuild.sh`, `.github/workflows/build.yml`, and `.gitignore`.\n- Add submodules of your desired mods into the `mods` folder.\n  - New to submodules? It's simple: `git submodule add \u003curl\u003e`\n- Create a `build_config.txt`.\n  - Each line contains the folder name in `mods`, and the directory the `build` folder is located in (optional; defaults to `.`).\n- Create a `host_config.txt`.\n  - This is the domain of where your build artifacts go, e.g. \u003chttps://notnite.github.io/blockbuild/\u003e (with a trailing slash).\n- Push your repository, and enable GitHub Actions and GitHub Pages.\n  - Workflows must have write permissions.\n  - Pages must be deployed through GitHub Actions.\n\nYou can then access `hashes.txt` and `commits.txt` (along with `*.txt.sig` and `*.txt.tmp.sig`), which will provide a listing of all files and commits built by blockbuild.\n\nWhen committing to this repository, you can add some directives into your commit message:\n\n- `[blockbuild:skip]` will skip CI for this commit\n- `[blockbuild:build] mod_name` will force that mod to build, even if there are no updates\n- `[blockbuild:force]` will force all mods to build\n\n## Signing\n\nblockbuild also has an optional rudimentary system to export hash lists and sign that hash list with GPG keys. It both uses a pre-existing key (to show you control the workflow) and generates one on the fly (to verify the artifacts came from the workflow).\n\nTo use it, set these secrets in the workflow:\n\n- `GPG_SECRET_KEY`: a Base64 encoded GPG secret key.\n  - Generate and export a new secret key with `gpg --full-generate-key`, `gpg --list-secret-keys \u003cname\u003e`, and `gpg --export-secret-keys \u003cid\u003e | base64`. Don't add a passphrase!\n- `GPG_SECRET_EMAIL`: the email associated to the key in `GPG_SECRET_KEY`.\n- `GPG_TEMP_EMAIL`: the email used by the temporary GPG key. Must not conflict with `GPG_SECRET_EMAIL`.\n\n## Maven\n\nblockbuild automatically generates a Maven repository for the output artifacts under the `mvn` folder. While there is no GUI file listing on GitHub Pages, you can view the list of files with `hashes.txt`.\n\n## Packwiz\n\nA `generate-packwiz.js` script is provided for generating `.pw.toml` files automatically:\n\n```shell\n$ node generate-packwiz.js Squake/squake-2.0.0.jar\nname = \"squake-2.0.0\"\nfilename = \"squake-2.0.0.jar\"\nside = \"both\"\n\n[download]\nurl = \"https://notnite.github.io/blockbuild/Squake/squake-2.0.0.jar\"\nhash-format = \"sha256\"\nhash = \"0d59872f37b7c0059caf686ea6de5f68621b3fe4fa8160f398de63fff838901d\"\n```\n\nYou are expected to edit the name and side yourself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotnite%2Fblockbuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotnite%2Fblockbuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotnite%2Fblockbuild/lists"}