{"id":18459205,"url":"https://github.com/smartbear/git-en-boite","last_synced_at":"2026-03-07T18:01:27.413Z","repository":{"id":38822583,"uuid":"235568854","full_name":"SmartBear/git-en-boite","owner":"SmartBear","description":"Web service facade for interacting with git repos on various providers - GitHub/BitBucket/GitLab etc.","archived":false,"fork":false,"pushed_at":"2025-12-10T08:41:38.000Z","size":6567,"stargazers_count":18,"open_issues_count":31,"forks_count":7,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-12-10T09:44:30.799Z","etag":null,"topics":["cucumber","cucumberstudio","docker","testrun"],"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/SmartBear.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2020-01-22T12:28:29.000Z","updated_at":"2025-12-10T08:41:42.000Z","dependencies_parsed_at":"2025-04-26T08:38:15.749Z","dependency_job_id":null,"html_url":"https://github.com/SmartBear/git-en-boite","commit_stats":null,"previous_names":[],"tags_count":80,"template":false,"template_full_name":null,"purl":"pkg:github/SmartBear/git-en-boite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartBear%2Fgit-en-boite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartBear%2Fgit-en-boite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartBear%2Fgit-en-boite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartBear%2Fgit-en-boite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SmartBear","download_url":"https://codeload.github.com/SmartBear/git-en-boite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SmartBear%2Fgit-en-boite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30225406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T17:00:40.062Z","status":"ssl_error","status_checked_at":"2026-03-07T17:00:39.026Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cucumber","cucumberstudio","docker","testrun"],"created_at":"2024-11-06T08:22:15.757Z","updated_at":"2026-03-07T18:01:27.378Z","avatar_url":"https://github.com/SmartBear.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Test \u0026 Deploy](https://github.com/SmartBear/git-en-boite/workflows/Run%20tests/badge.svg)\n\n# git-en-boite\n\nPut git in a box to make it easy to work with in your apps.\n\n## Features\n\n- ✅ Clone repos from 3rd party git providers - GitHub, GitLab, BitBucket etc.\n- ✅ Fetch updates from origin on demand\n- ✅ Create new commits on a branch and push to the origin\n- Set up webhooks to automatically fetch when origin is updated (TODO)\n- ✅ Emit events about changes in the repo\n- Query the repo for:\n  - ✅ branch head revisions\n  - file/directory listings (TODO)\n  - ✅ file contents\n- Authenticate all requests (TODO)\n- Create pull requests on 3rd party providers from a local branch (TODO)\n- Read user info (orgs, repos) from 3rd party providers (TODO)\n\n## Tech stack\n\ngit-en-boite is written in Typescript, and produces a [Docker image](https://hub.docker.com/repository/docker/smartbear/git-en-boite) every time the tests pass on the master branch.\n\nIt's separated into multiple NPM packages which are all contained inside this repo under `./packages`.\n\nWe use [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces) to manage these packages.\n\n## Start the application\n\nThe following docker-compose command starts the backend HTTP API\n\n    docker-compose up\n\nNow you can hit the service:\n\n    curl http://localhost:3001\n\n## Development\n\nInstall yarn, then install dependencies:\n\n    yarn\n\nSet up default environment variables (assumes you're using [direnv](https://direnv.net/)):\n\n    cp .envrc.default .envrc\n    direnv allow .\n\nThe integration tests need redis to be running somewhere. If you don't have or want to have it installed on your dev machine, you can spin it up in Docker:\n\n    docker-compose up --detach redis\n\n### Note for Ubuntu 20 users\n\nOn ubuntu 20, the default docker package should be replaced by the latest one to use the long syntax in docker-compose.yml\n\n    sudo curl -L \"https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose\n    sudo chmod +x /usr/local/bin/docker-compose\n    docker-compose -version\n\nThe version returned should be 1.27.4, build 40524192\n\n### Run tests\n\nBuild first:\n\n    yarn build\n\nRun the tests in each of the packages:\n\n    yarn test\n\n### Debugging the acceptance tests\n\nWhen the acceptance tests fail, it's often useful to debug them by logging. You can turn on logging to console like this:\n\n    LOGGING_READABLE_BY=humans yarn acceptance test\n\n## Smoke tests\n\nGit-en-boîte ships with smoke tests that can be run against any instance of itself.\n\nTo run them, two environment variables need to be set:\n\n- `smoke_tests_web_server_url`: the base URL for the Git-en-boîte instance you want to test.\n- `smoke_tests_remote_repo_url`: the URL of a Git repository that will be used by the smoke tests.\n  [git-en-boite-demo](https://github.com/SmartBear/git-en-boite-demo) typically serves that purpose.\n  Write operations are performed during the test, make sure the\n  URL includes the proper credentials (e.g. a GitHub username/token pair).\n\nOptionally, you can also set this, to test out how failures are reported in your infrastructure:\n\n- `smoke_tests_deliberate_error`: an error message to raise as soon as the smoke tests run.\n\nRun the smoke tests with:\n\n    yarn smoke start\n\n### Examples\n\nTo run against a locally-running instance:\n\n    smoke_tests_web_server_url=http://localhost:3001 \\\n        smoke_tests_remote_repo_url=https://\u003cuser\u003e:\u003ctoken\u003e@github.com/SmartBear/git-en-boite-demo\\\n        yarn smoke start\n\nRun using local containers (for both the smoke tests and the running server):\n\n    docker-compose up\n    smoke_tests_remote_repo_url=https://\u003cuser\u003e:\u003ctoken\u003e@github.com/SmartBear/git-en-boite-demo \\\n        docker-compose run smoke-tests yarn smoke start\n\n## Releasing\n\nGit-en-boite is automatically packaged as a new docker image each time the CI build runs succesfully on the `main` branch. The docker image is tagged with the git sha of the commit.\n\nTo make a semantially-versioned release of the docker-image:\n\n1. Make sure you've closed the GitHub issues that were in the release. This will trigger a [bot workflow](https://github.com/SmartBear/git-en-boite/blob/main/.github/workflows/changelog.yml) to update the [changelog](https://github.com/SmartBear/git-en-boite/blob/main/CHANGELOG.md).\n\n2. Update the root `package.json` file and tag the git commit:\n\n```\nyarn version --major|minor|patch # choose the right switch depending on the type of changes in this release\n```\n\n3. Push the new git tag and the commit updating the version:\n\n```\ngit push \u0026\u0026 git push --tags\n```\n\nThe [build script](https://github.com/SmartBear/git-en-boite/blob/main/.github/workflows/ci.yml#L84) should take care of the rest.\n\n# How to resolve \"fatal: Not a git repository (or any of the parent directories): .git\" issue\n\nRemove the git-repos directory:\n\n```\nsudo rm -rf git-repos\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmartbear%2Fgit-en-boite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmartbear%2Fgit-en-boite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmartbear%2Fgit-en-boite/lists"}