{"id":13616147,"url":"https://github.com/bitrise-io/bitrise-workflow-editor","last_synced_at":"2026-05-11T11:04:46.555Z","repository":{"id":37759249,"uuid":"67123173","full_name":"bitrise-io/bitrise-workflow-editor","owner":"bitrise-io","description":"Bitrise Workflow Editor","archived":false,"fork":false,"pushed_at":"2026-05-07T11:30:25.000Z","size":46406,"stargazers_count":115,"open_issues_count":18,"forks_count":22,"subscribers_count":16,"default_branch":"master","last_synced_at":"2026-05-07T13:30:21.311Z","etag":null,"topics":["production-code"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/bitrise-io.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":"2016-09-01T10:50:36.000Z","updated_at":"2026-05-07T11:27:37.000Z","dependencies_parsed_at":"2026-01-06T01:05:22.222Z","dependency_job_id":null,"html_url":"https://github.com/bitrise-io/bitrise-workflow-editor","commit_stats":null,"previous_names":[],"tags_count":1067,"template":false,"template_full_name":null,"purl":"pkg:github/bitrise-io/bitrise-workflow-editor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitrise-io%2Fbitrise-workflow-editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitrise-io%2Fbitrise-workflow-editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitrise-io%2Fbitrise-workflow-editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitrise-io%2Fbitrise-workflow-editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitrise-io","download_url":"https://codeload.github.com/bitrise-io/bitrise-workflow-editor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitrise-io%2Fbitrise-workflow-editor/sbom","scorecard":{"id":240704,"data":{"date":"2025-08-11","repo":{"name":"github.com/bitrise-io/bitrise-workflow-editor","commit":"593d3ec5e86b72d690579a6f02759b2befc84d7d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.9,"checks":[{"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":"Code-Review","score":5,"reason":"Found 15/30 approved changesets -- score normalized to 5","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":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","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":"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":"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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: _scripts/forkpty-Darwin-x86_64:1"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: goCommand not pinned by hash: _scripts/compile_api.sh:7","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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: 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":"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (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"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3829"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T06:38:28.017Z","repository_id":37759249,"created_at":"2025-08-17T06:38:28.017Z","updated_at":"2025-08-17T06:38:28.017Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32891967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["production-code"],"created_at":"2024-08-01T20:01:24.204Z","updated_at":"2026-05-11T11:04:46.535Z","avatar_url":"https://github.com/bitrise-io.png","language":"TypeScript","funding_links":[],"categories":["HarmonyOS","TypeScript"],"sub_categories":["Windows Manager"],"readme":"![Build status](https://app.bitrise.io/app/1686da85b5935fd6.svg?token=7HlnSBadcyLcUnzq0ws4Nw)\n\n# Bitrise Workflow Editor\n\n\u003e **Note: project is going through AngularJS -\u003e React transition.\n\u003e Please read more about this in\n\u003e\nthe [wiki section](https://github.com/bitrise-io/bitrise-workflow-editor/wiki/Angular-js-to-React-transition-timeline).\n**\n\n## How to install \u0026 use the Workflow Editor on your Mac/Linux\n\n1. Install [Go](https://golang.org) `brew install go` (on macOS)\n1. Install the latest [Bitrise CLI](https://bitrise.io/cli) - it's a single binary command line tool\n1. Run `bitrise setup` just to be sure everything's prepared\n1. `cd` into a directory where you have your `bitrise.yml`, and run: `bitrise :workflow-editor`\n\nThat's all. The Workflow Editor is now part of the Bitrise CLI core plugins, so you don't have to install it manually.\n\nTo upgrade to the latest version of the Workflow Editor run:\n\n```\nbitrise plugin update workflow-editor\n```\n\n_Join the Workflow Editor's discussion\nat: [https://discuss.bitrise.io/t/workflow-editor-v2-open-source-offline-workflow-editor/39](https://discuss.bitrise.io/t/workflow-editor-v2-open-source-offline-workflow-editor/39)_\n\n## Install requirements\n\nWorkflow editor uses webpack for static asset compilation and asset bundling. For transformation we need to use some\nrails related transformation hence it also uses bundler to install ruby dependencies. In addition it uses karma and\njasmine for frontend tests execution so it needs `node` and `npm` installed to get the dependencies for testing and also\nproduction.\n\nFinally the local executable is written in GO. so you need to have go set up as well and dependencies.\n\n```bash\nbitrise run setup\n```\n\n## Development\n\n### Build a stand-alone binary, with embedded resources\n\n```\ngo install\n```\n\n### Run in development mode\n\n```bash\nnpm start          # start both local plugin api and webpack dev server\n```\n\n1. In your browser, you can reach the Workflow Editor on `localhost:4000/{version}`. Be aware that you usually have to\n   wait a while until dev server starts up (then refresh)\n1. By default, the Workflow Editor will open the `test_bitrise.yml` from integration folder (used for integration\n   testing). Please do not commit this file if you have any changes with it (e2e tests would fail).\n\nIf you would like to run the Workflow Editor in `website` mode, you have to run the dedicated npm command:\n\n```bash\nnpm run start:website   # starts WFE in website mode\n```\n\nYou also have to make sure that the Monolith is already running before you try to execute the command above (otherwise\nevery request to `http://localhost:3000` will be handled by the WFE).\nAlso make sure that you change the path in the monolith to point to this version of the WFE (instead of the production\nversion):\n\n- in the monolith open `workflow_controller.rb`\n- change `base_url` in method `get_workflow_editor_html_content` to the current version:\n  - if you run the monolith directly (using the umbrella repo) use `localhost:4000/{version}` (\n    e.g `base_url = 'http://localhost:4000/1.3.135`)\n  - if you run the monolith in docker (e.g with the `web-dev-env` repo) use `host.docker.internal:4000/{version}` (\n    e.g `base_url = 'http://host.docker.internal:4000/1.3.135'`)\n\nOnce the above steps are complete, you should be able to reach the Workflow Editor in the monolith\non `localhost:3000/app/{slug}/workflow_editor`.\n\n### Run client tests\n\n```bash\nnpm test        # run unit tests on already compiled client\nnpm run e2e:api # run only the local binary api for e2e tests\n```\n\n_NOTE: for e2e testing you could start a service normally with `npm start` (to develop and run tests on it parallel) or\nhave a binary ready by `bitrise run setup` if you only want to verify the correctness of an already built\nfeature. And then run the test dashboard with `npm run e2e:dev`_\n\nIf you only iterate on tests, you can also use `npm run test` as it skips transpilation and the transpilation and run\nthe tests on an already transpiled JS.\n\n### Override LaunchDarkly flags\n\nYou can create an `ld.local.json` file in the project root to override the LaunchDarkly flags.\n\nExample `ld.local.json` content:\n\n```json\n{\n  \"enable-nice-feature\": true,\n  \"key-of-the-feature-flag\": \"local value of the feature flag\"\n}\n```\n\n# Contributing\n\nThis project is using squash \u0026 merge model, feel free to have as many commits as you like but at the end the work will\nend up on master as a single commit.\n\n## Tech standards\n\n1. Every new feature has to be created in typescript and React (\n   see [wiki](https://github.com/bitrise-io/bitrise-workflow-editor/wiki/React-from-angularjs-best-practices) for\n   integration guides).\n1. If you touch legacy code, consider porting it to new standards or if that's not possible use ES5 syntax! There are no\n   transpilation for legacy codes (only minification).\n1. For tests you are safe to use whatever standards jsdom executes (ES6 supported).\n1. Use CSS for styling (try to use local components style if possible)\n\n## Testing standards\n\n1. Unit tests are required for every new feature\n1. Consider writing React Testing library component tests\n\n## New version release\n\nEvery master commit is released to an S3 bucket and Bitrise will integrate it with the website manually (CD is planned\nwhen test coverage and confidence is increasing with the editor). If you wanna do a plugin release as well you need to\ntag the PRs with `#plugin` wherever in the PR title (like: \"new feature #plugin\").\n\nIf new release requires Bitrise CLI to be updated, in `bitrise-plugin.yml` change `min_version` requirement of\nthe `bitrise` tool to the required CLI version.\n\n## Testing if version release works, without actually releasing\n\n- In bitrise.yml, create a workflow e. g. `test-release`\n- From the `create-release` workflow, copy-paste the _GitHub release_ and _Create Discuss topic_ steps.\n- In the GitHub release step, remove the `files_to_upload` input, set the `$NEW_RELEASE_VERSION` everywhere to something\n  arbitrary, same for the `body`, and **most importantly set `draft: 'yes'`**\n- In the Create Discuss topic step, **change the `DISCUSS_CHANGELOG_CATEGORY_ID` to the ID of one our\n  discuss.bitrise.io's internal channels' ID** (you can find an ID using the Discourse API with a cURL request) so that\n  it is only visible to us; also change the `title` and the `raw` parameter to something arbitrary.\n- After the test release process, don't forget to delete the draft release and the internal changelog topic.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitrise-io%2Fbitrise-workflow-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitrise-io%2Fbitrise-workflow-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitrise-io%2Fbitrise-workflow-editor/lists"}