{"id":37119148,"url":"https://github.com/openimsdk/gomake","last_synced_at":"2026-03-04T12:05:57.288Z","repository":{"id":232709157,"uuid":"784996598","full_name":"openimsdk/gomake","owner":"openimsdk","description":"gomake is a cross-platform compilation tool built on Mage, specifically designed for Go language projects. It offers comprehensive support for various operating systems and CPU architectures, covering the entire workflow from compilation to launching, monitoring, and stopping services.","archived":false,"fork":false,"pushed_at":"2025-07-21T09:22:33.000Z","size":494,"stargazers_count":15,"open_issues_count":2,"forks_count":23,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-14T16:10:26.967Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/openimsdk.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":"2024-04-11T01:24:05.000Z","updated_at":"2025-09-18T03:05:30.000Z","dependencies_parsed_at":"2025-07-18T11:20:45.551Z","dependency_job_id":null,"html_url":"https://github.com/openimsdk/gomake","commit_stats":null,"previous_names":["openimsdk/gomake"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/openimsdk/gomake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openimsdk%2Fgomake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openimsdk%2Fgomake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openimsdk%2Fgomake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openimsdk%2Fgomake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openimsdk","download_url":"https://codeload.github.com/openimsdk/gomake/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openimsdk%2Fgomake/sbom","scorecard":{"id":709578,"data":{"date":"2025-08-11","repo":{"name":"github.com/openimsdk/gomake","commit":"a77f7a18107a3a1a4ba4b532a19a07c90e9f9ea9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/24 approved changesets -- score normalized to 0","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":"Maintained","score":6,"reason":"6 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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: goCommand not pinned by hash: bootstrap.sh:12","Info:   0 out of   1 goCommand 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":"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":"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/openimsdk/.github/.github/SECURITY.md:1","Info: Found linked content: github.com/openimsdk/.github/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/openimsdk/.github/.github/SECURITY.md:1","Info: Found text in security policy: github.com/openimsdk/.github/.github/SECURITY.md:1"],"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"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 18 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-22T07:44:48.056Z","repository_id":232709157,"created_at":"2025-08-22T07:44:48.056Z","updated_at":"2025-08-22T07:44:48.056Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30079565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T11:57:42.557Z","status":"ssl_error","status_checked_at":"2026-03-04T11:56:10.793Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":[],"created_at":"2026-01-14T13:54:15.847Z","updated_at":"2026-03-04T12:05:57.265Z","avatar_url":"https://github.com/openimsdk.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gomake User Guide\n\n**gomake** is a tool built on Mage that offers cross-platform and multi-architecture compilation support. It also simplifies the process of starting, stopping, and monitoring services.\n\n## User Guide\n\n### Preparation\n\n1. Copy the following files from the current directory to the project's root directory, noting that there are 5 files to copy besides the `README` file:\n   - `bootstrap.bat`\n   - `bootstrap.sh`\n   - `magefile.go`\n   - `magefile_unix.go`\n   - `magefile_windows.go`\n2. The project's root directory should contain three directories: `cmd`, `tools`, and `config`.\n   - The `cmd` directory is specifically for storing the startup code of applications that run as background services.\n   - The `tools` directory is for storing the startup code of applications that run as tools (not as background services).\n   - The `config` directory is for storing configuration files.\n3. The `cmd` and `tools` directories can contain multiple subdirectories. For files containing a `main` function in the `main package`, they should be named `main.go`. For example:\n   - `cmd/microservice-test/main.go`\n   - `tools/helloworld/main.go`\n   - All code should belong to the same project, and subdirectories should not use independent `go.mod` and `go.sum` files.\n\n### Project Initialization\n\n- For Linux/Mac systems, execute the `bootstrap.sh` script first.\n- For Windows systems, execute the `bootstrap.bat` script first.\n\n### Compiling the Project\n\n- Run `mage` or `mage build` to compile the project.\n- After compilation, binary files will be generated in the `_output/bin/platforms/\u003coperating system\u003e/\u003carchitecture\u003e` directory, with the binary files named after the directory of the corresponding `main.go`. For example:\n  - `_output/bin/platforms/linux/amd64/microservice-test`\n  - `_output/bin/tools/linux/amd64/helloworld`\n  - **Note:** Binary files on the Windows platform will automatically have a `.exe` extension added.\n\n### Starting Tools and Services\n\n1. After completing the `mage` compilation, the system will automatically generate a `start-config.yml` file specifying the configuration for services and tools, which you can edit. For example:\n\n   ```yaml\n   serviceBinaries:\n     microservice-test: 1\n   toolBinaries:\n     - helloworld\n   maxFileDescriptors: 10000\n   ```\n\n**Note:** Ensure that the service names and tool names match the names of the subdirectories under the `cmd` and `tools` directories. The number after the service name represents the number of instances of the service to start.\n\n2. Run `mage start` to start the services and tools.\n\n   - Tools will execute synchronously, and if a tool fails (exits with a non-zero exit code), the entire start-up process will be interrupted.\n   - Services will start asynchronously.\n\nFor all tools, the following command format will be used to start: `[absolute path to program] -i 0 -c [absolute directory of configuration file]`.\n\nIf the service instance count is set to `n`, then `n` instances of the service will be started, with each instance using the command format: `[program path] -i [instance index] -c [configuration file directory]`, where the instance index ranges from `0` to `n-1`.\n\n**Note:** This project only specifies the path of the configuration file and does not handle reading the content of the configuration file. This is done to support scenarios using multiple configuration files. Both the program and configuration file paths are automatically converted to absolute paths.\n\n### Checking and Stopping Services\n\n- Run `mage check` to check the status of services and the ports they are listening on.\n- Run `mage stop` to stop the services. This command will send a stop signal to the services.\n\n### Screenshots\n\n- **Linux** ![Compiling with mage on Linux](docs/images/linux-mages.jpg)\n  \n- **Windows**\n  \n  ![Compiling with mage on Windows](docs/images/windows-mages.jpg)\n  \n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenimsdk%2Fgomake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenimsdk%2Fgomake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenimsdk%2Fgomake/lists"}