GDK commands
The gdk command has many sub-commands to perform common tasks.
Start GDK and basic commands
To start up the GDK with all default enabled services, run:
gdk startTo access GitLab, go to
http://localhost:3000 in your browser. It may take a few minutes for the
Rails app to be ready. During this period you can see If you just started GDK it can take 60-300 seconds before GitLab has finished booting. This page will automatically reload every 5 seconds.
in the browser.
Get the login credentials
The development login credentials are root and 5iveL!fe.
You can also get the credentials by running:
gdk helpView logs
To see logs from all services, run:
gdk tailTo limit the logs to one or more services, specify the service. For example:
gdk tail rails-web redisgdk tail can’t parse regular tail arguments such as -n.
You can pipe the output of gdk tail through grep to filter by a keyword. For example, to filter
on a correlation ID:
# get some correlation ID to track a single request
gdk tail | grep <some_correlation_id>gdk tail only contains stdout and stderr streams. To tail JSON logs, use tail itself. For example:
Using
-f:# follow the API's JSON log tail -f gitlab/log/api_json.logUsing
-n:# Return the last 100 lines of the GraphQL JSON log tail -n 100 gitlab/log/graphql_json.log
For usage information and a list of services and shortcuts for the tail command, use the --help flag:
gdk tail --helpOpen in web browser
To visit the GitLab web UI running in your local GDK installation, using your default web browser:
gdk openStop GDK
When you are not using GDK you may want to shut it down to free up memory on your computer:
gdk stopRun specific services
You can start specific services only by providing the service names as arguments. Multiple arguments are supported. For example, to start just PostgreSQL and Redis, run:
gdk start postgresql redisStop specific services
GDK can stop specific services. For example, to stop the Rails app to save memory (when running tests, for example), run:
gdk stop railsKill all services
Services can fail to properly stop when running gdk stop and must be forcibly
terminated. To terminate unstoppable services, run:
gdk killThis command is a manual command because it kills all runsv processes,
which can include processes outside the current GDK. Don’t use this command if you’re running
other processes with runit, or if you’re running multiple instances of GDK (and you don’t want to stop them all).
You can pass the -y flag to avoid the confirmation prompt:
gdk kill -yAlternatively, you can also set the GDK_KILL_CONFIRM environment variable to avoid the prompt:
GDK_KILL_CONFIRM=true gdk killRun Rails commands
To run Rails commands, like rails console, and be sure to invoke the Rails installation bundled with GitLab, run:
gdk rails <command> [<args>]Run specific service CLIs
GDK provides shortcuts for the following service CLIs:
- PostgreSQL:
psql(for both main and Geo Tracking database) - Redis:
redis-cli - ClickHouse:
clickhouse client
PostgreSQL client for main database
To run psql against the bundled PostgreSQL for the main database, run:
gdk psql [<args>]PostgreSQL client for Geo Tracking database
To run psql against the bundled PostgreSQL for Geo Tracking database, run:
gdk psql-geo [<args>]Redis CLI
To run redis-cli against the bundled Redis service, run:
gdk redis-cli [<args>]ClickHouse client
To run clickhouse client against the bundled ClickHouse service, run:
gdk clickhouse [<args>]Update GDK
To update gitlab and all of its dependencies, run the following commands:
gdk updateThis also performs any possible database migrations.
If there are changes in the local repositories, or a different branch than main is checked out,
the gdk update command:
- Stashes any uncommitted changes.
- Changes to
mainbranch.
It then updates the remote repositories.
Update the GDK regularly to ensure you’re developing against the latest GitLab version:
- Ideally, update before starting each new change, especially if your local branch is behind the remote branch.
- At minimum, update daily or every few days.
While frequent updates are recommended, gdk update might cause unexpected errors and take several minutes to complete.
Switch to a branch
To switch the gitlab repository to a branch and sync all dependencies
to the versions defined in that branch, run the following command:
gdk switch <branch>To get the most benefit out of GDK’s automated dependency management, use
this command instead of git switch <branch> or git checkout <branch>.
If the managed sandbox is enabled with the gdk.sandbox.managed setting,
gdk switch will auto-enable the sandbox for feature branches.
Update your gdk.yml
When updating your gdk.yml, you must regenerate the necessary configuration files by
running:
gdk reconfigureView configuration settings
With gdk config list you can view GDK configuration settings:
gdk config listUse gdk config get to inspect specific item:
gdk config get <configuration value>Set configuration settings
With gdk config set you can set GDK configuration settings:
gdk config set <name> <value>More information can be found in the configuration documentation.
Check GDK health
You can run gdk doctor to ensure the update left GDK in a good state. If it reports any issues, you should address them as soon as possible.
gdk doctorYou may use gdk doctor --correct to autocorrect trivial issues.
Reset data
There may come a time where you wish to reset the data in your GDK. Backups of any reset data are taken before the reset is done, and you are prompted to confirm if you wish to proceed.
For more context, reset-data backs up these directories (relative from the GDK root):
postgresql/data/redis/dump.rdbgitlab/public/uploads/repositories/
It then restores the default repositories/ directory from Git and runs the database setup again.
gdk reset-dataGDK pristine
If you want to return your GDK instance to a pristine state, which installs Ruby gems and Node modules from scratch for GitLab, Gitaly, cleaning temporary directories, and cleaning the global Go cache:
gdk pristineGDK predictive
Verify your local changes, whether they are committed or still in the works, by running local predicted RSpec and Jest tests with:
gdk predictiveThe predictive command has several options.
--yes- Skip the confirmation prompt for RSpec tests--rspec- Run only RSpec tests--jest- Run only Jest tests
Cleanup
Over time, your GDK may contain large log files in addition to mise-installed software that’s no longer required. To cleanup your GDK, run:
gdk cleanupThe gdk cleanup command is destructive and requires you to confirm
if you want to proceed. If you prefer to run without confirming
(for example, if you want to run as a
GDK hook),
run:
GDK_CLEANUP_CONFIRM=true gdk cleanupThe gdk cleanup command may remove mise software that you are using
for other projects outside of the GDK. To avoid removing
mise-installed software, run gdk cleanup with the GDK_CLEANUP_SOFTWARE variable:
GDK_CLEANUP_SOFTWARE=false gdk cleanupMeasure performance
You can easily create a Sitespeed report for local gdk URLs or online URLs with our standardized
Sitespeed settings. We support local relative and absolute URLs as arguments. As soon as the report
is generated, it is automatically opened in your browser.
gdk measure /explore http://127.0.0.1/explore https://gitlab.com/exploreMeasure Workflows performance
gdk measure-workflow repo_browserAll workflow scripts are located in support/measure_scripts/, for example repo_browser to measure the
basic workflow in the repository.
The reports are stored in <gdk-root>/sitespeed-result as <branch>_YYYY-MM-DD-HH-MM-SS. This
requires Docker installed and running.
Toggle Telemetry
gdk telemetryUse the gdk telemetry command to enable and disable GDK telemetry. GDK telemetry can be:
- Enabled, and associated with a GitLab username.
- Enabled anonymously.
- Disabled.
Send custom telemetry
gdk send-telemetry <metric> <value>Use the gdk send-telemetry command to send custom telemetry metrics from GDK or GitLab monolith to track custom performance metrics and events.
You can optionally pass one or more --extra=key:value arguments to include additional metadata with the event.
GDK telemetry must be enabled. Use gdk telemetry to configure telemetry settings.
Truncate Legacy Tables
To detect and truncate unnecessary data in the ci and main databases, run:
gdk truncate-legacy-tables