Docker Compose is now a plugin for Docker, bundled by default in Docker Desktop and many Linux distribution packages. The standalone `docker-compose` binary has been deprecated since Docker Compose v2. Using the new version directly allows us to write development scripts that do not require `docker-compose` to be installed. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5185 GitOrigin-RevId: c8542b8b2405d1aa32288991688c6fde4af96383
3.3 KiB
Contributing
Thank you for your interest in the Hasura GraphQL Engine CLI.
The CLI is written in Go using the popular
package spf13/cobra
.
Find an issue to work on
All CLI related issues are labelled as c/cli
. If you're new to the CLI codebase, you can check out the
good-first-issue
label for issues that
should be fairly easy to implement.
If you are a first-time contributor, feel free to post your doubts/questions in #contrib
channel on hasura discord server.
Pre-requisites
The following dependencies need to be installed in order to work on the CLI codebase:
Set up the repository
You can follow your existing Golang workflow to fork, work on a branch and submit PR. If you're new to forking and using branches, please execute the following commands and make sure the import paths are correct:
- Fork the repo on GitHub
git clone https://github.com/<your-username>/graphql-engine
cd graphql-engine/cli
git remote add upstream https://github.com/hasura/graphql-engine
git checkout -b <branch-name>
Install dependencies
Install the dependencies as follows:
make deps
Development
Once everything is installed and running, you can start working on the feature/fix that you picked up.
Run the server
Our Docker Compose manifest is the easiest way to run graphql-engine.
- From the
graphql-engine
directory, runcd install-manifests/docker-compose
. - From inside that directory, run
docker compose up -d
.
The GraphQL endpoint will be at https://localhost:8080/v1/graphql
.
The console will be available at https://localhost:8080/console
.
Assets
If you modify files in assets/
, run make assets
.
Submit a PR
Commit, push and submit the PR.
Tests
When you're adding a new feature, it is encouraged to add integration tests and unit tests wherever possible.
Please run all the tests and make sure everything passes before submitting the PR.
-
Set
HASURA_TEST_CLI_HGE_DOCKER_IMAGE
to the docker image of the server that you want the tests to run against. For example:export HASURA_TEST_CLI_HGE_DOCKER_IMAGE="hasura/graphql-engine:v2.1.0"
. -
e2e tests look for a hasura binary in PATH, you can either make sure it's available as
hasura
in your PATH or setHASURA_TEST_CLI_PATH
to the binary path that you want to run the tests with. You'll get the path from running the build (see "Builds" below). -
Run the full suite by executing
make test-all
.
Builds
To build a binary, execute the following command:
make build
If you get an error running the above, run this command:
make build-cli-ext copy-cli-ext
This will output cross-platform binaries to the _output
directory.