Rake tasks for developers

原文:https://docs.gitlab.com/ee/development/rake_tasks.html

Rake tasks for developers

Rake 任务适用于开发人员和为 GitLab 做出贡献的其他人员.

Set up database with developer seeds

请注意,如果您的数据库用户没有高级特权,则必须在运行此命令之前手动创建数据库.

  1. bundle exec rake setup

setup任务是gitlab:setup的别名. 此任务调用db:reset创建数据库,并调用db:seed_fu播种数据库. 注意: db:setup调用db:seed但这没有任何作用.

Environment variables

MASS_INSERT :创建数百万个用户(2m),项目(5m)及其关系. 强烈建议将种子与种子一起运行,以在开发过程中捕获缓慢的查询. 预计此过程最多可能需要 20 分钟.

另请参见批量插入 Rails 模型 .

LARGE_PROJECTS :从一组预定义的 URL 创建大型项目(通过导入).

Seeding issues for all or a given project

您可以使用gitlab:seed:issues任务为所有项目或给定项目gitlab:seed:issues

  1. # All projects
  2. bin/rake gitlab:seed:issues
  3. # A specific project
  4. bin/rake "gitlab:seed:issues[group-path/project-path]"

默认情况下,每个项目的最近 5 周平均每周播种 2 个问题.

Seeding issues for Insights charts

您可以使用gitlab:seed:insights:issues任务为专门用于处理Insights 图表gitlab:seed:insights:issues

  1. # All projects
  2. bin/rake gitlab:seed:insights:issues
  3. # A specific project
  4. bin/rake "gitlab:seed:insights:issues[group-path/project-path]"

默认情况下,每个项目在最近 52 周中平均每周播种 10 个问题. 所有问题还将随机标记团队,类型,严重性和优先级.

Seeding groups with sub-groups

您可以使用gitlab:seed:group_seed任务为包含里程碑/项目/问题的子组播种组:

  1. bin/rake "gitlab:seed:group_seed[subgroup_depth, username]"

如果 GitLab 实例具有可用的史诗功能,则该组还会另外添加史诗.

Seeding custom metrics for the monitoring dashboard

监视仪表板中支持许多不同类型的指标.

要导入这些指标,可以运行:

  1. bundle exec rake 'gitlab:seed:development_metrics[your_project_id]'

Automation

If you’re very sure that you want to 清除当前数据库 and refill seeds, you could:

  1. echo 'yes' | bundle exec rake setup

使您免于手动回答yes .

Discard stdout

由于该脚本会打印很多信息,因此可能会减慢您的终端运行速度,并且如果您将其重定向到文件,则会生成 20G 以上的日志. 如果我们不在乎输出,则可以将其重定向到/dev/null

  1. echo 'yes' | bundle exec rake setup > /dev/null

请注意,由于您看不到stdout的问题,因此您可能只想echo 'yes'以使其运行. 它仍然会在stderr上打印错误,因此不必担心丢失错误.

Extra Project seed options

您可以传递一些环境标志来更改项目的种子方式

  • SIZE :默认为8 ,最大为32 . 要创建的项目数量.
  • LARGE_PROJECTS :默认为 false. 如果设置,将克隆 6 个大型项目以帮助进行测试.
  • FORK :默认为 false. 如果设置为true将分叉torvalds/linux五次. 也可以将其设置为现有项目 full_path,它将代替它.

Run tests

为了运行测试,您可以使用以下命令:

  • bin/rake spec运行 RSpec 套件
  • bin/rake spec:unit仅运行单元测试
  • bin/rake spec:integration仅运行集成测试
  • bin/rake spec:system仅运行系统测试
  • bin/rake karma运行 Karma 测试套件

bin/rake spec需要花费大量时间. 无需在本地运行完整的测试套件,而是可以通过运行与更改相关的单个测试或目录来节省大量时间. 提交合并请求后,CI 将为您运行完整的测试套件. 合并请求中的绿色 CI 状态表示已通过完整的测试套件.

您不能运行rspec . 因为这将尝试运行它可以找到的所有_spec.rb文件,以及/tmp

您可以将 RSpec 命令行选项传递给spec:unitspec:integrationspec:system任务. 例如, bin/rake "spec:unit[--tag ~geo --dry-run]" .

对于 RSpec 测试,要运行一个测试文件,可以运行:

  1. bin/rspec spec/controllers/commit_controller_spec.rb

要在一个目录中运行多个测试:

  • 如果仅想测试 API,则对 RSpec 测试使用bin/rspec spec/requests/api/

Speed up tests, Rake tasks, and migrations

Spring是 Rails 应用程序的预加载器. 它通过使应用程序在后台运行来加快开发速度,因此您无需在每次运行测试,Rake 任务或迁移时都启动它.

如果要使用它,则需要将ENABLE_SPRING环境变量导出为1

  1. export ENABLE_SPRING=1

另外,您可以在每次运行规范时使用以下命令,

  1. bundle exec spring rspec some_spec.rb

Compile Frontend Assets

您永远不需要在开发中手动编译前端资产,但是如果您需要测试在生产环境中如何编译资产,则可以使用以下命令进行:

  1. RAILS_ENV=production NODE_ENV=production bundle exec rake gitlab:assets:compile

这将编译并缩小所有 JavaScript 和 CSS 资产,并将它们与所有其他前端资产(图像,字体等)一起复制到/public/assets中,以便于对其进行轻松检查.

Emoji tasks

要更新表情符号别名文件(用于表情符号自动完成),请运行以下命令:

  1. bundle exec rake gemojione:aliases

要更新表情符号摘要文件(用于表情符号自动完成),请运行以下命令:

  1. bundle exec rake gemojione:digests

这将根据当前可用的表情fixtures/emojis/digests.json更新fixtures/emojis/digests.json文件.

要生成包含所有表情符号的 Sprite 文件,请运行:

  1. bundle exec rake gemojione:sprite

如果添加了新的表情符号,则子画面可能会更改大小. 为了补偿这种变化,请首先使用上述 Rake 任务生成emoji.png Sprite 表,然后检查新 Sprite 表的SPRITESHEET_WIDTHSPRITESHEET_HEIGHT地更新SPRITESHEET_WIDTHSPRITESHEET_HEIGHT常量.

Update project templates

从模板启动项目需要将该项目导出. 在最新的 master 分支上运行:

  1. gdk start
  2. bundle exec rake gitlab:update_project_templates
  3. git checkout -b update-project-templates
  4. git add vendor/project_templates
  5. git commit
  6. git push -u origin update-project-templates

现在创建一个合并请求并将其合并到主请求.

Generate route lists

要查看 API 路由的完整列表,可以运行:

  1. bundle exec rake grape:path_helpers

生成的列表包括 API 端点和功能性 RESTful API 动词的完整列表.

对于 Rails 控制器,运行:

  1. bundle exec rake routes

由于创建这些文件需要一些时间,因此将输出保存到文件以快速参考通常会很有帮助.

Show obsolete ignored_columns

要查看所有已过时的ignored_columns的列表, ignored_columns运行:

  1. bundle exec rake db:obsolete_ignored_columns

随时从自己的ignored_columns定义中删除其定义.

Update GraphQL documentation and schema definitions

要基于 GitLab 模式生成 GraphQL 文档,请运行:

  1. bundle exec rake gitlab:graphql:compile_docs

在当前状态下,Rake 任务:

  • 生成 GraphQL 对象的输出.
  • 将输出放置在doc/api/graphql/reference/index.md .

这使用了来自graphql-docs gem 的一些功能,例如其模式解析器和帮助器方法. docs 生成器代码来自于我们,为我们提供了更大的灵活性,例如使用 Haml 模板和生成 Markdown 文件.

要编辑使用的模板,请查看lib/gitlab/graphql/docs/templates/default.md.haml . 实际的渲染器位于Gitlab::Graphql::Docs::Renderer .

@parsed_schemagraphql-docs gem 期望提供的实例变量. Gitlab::Graphql::Docs::Helper定义我们当前使用的object方法. 您还应该在这里为要显示的新类型实现任何新方法.

Update machine-readable schema files

要基于 GitLab 模式生成 GraphQL 模式文件,请运行:

  1. bundle exec rake gitlab:graphql:schema:dump

它使用 GraphQL Ruby 的内置 Rake 任务来生成IDL和 JSON 格式的文件.