566.md 10.5 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
# Rake tasks for developers

> 原文:[https://docs.gitlab.com/ee/development/rake_tasks.html](https://docs.gitlab.com/ee/development/rake_tasks.html)

*   [Set up database with developer seeds](#set-up-database-with-developer-seeds)
    *   [Environment variables](#environment-variables)
    *   [Seeding issues for all or a given project](#seeding-issues-for-all-or-a-given-project)
        *   [Seeding issues for Insights charts](#seeding-issues-for-insights-charts-ultimate)
        *   [Seeding groups with sub-groups](#seeding-groups-with-sub-groups)
        *   [Seeding custom metrics for the monitoring dashboard](#seeding-custom-metrics-for-the-monitoring-dashboard)
    *   [Automation](#automation)
    *   [Discard `stdout`](#discard-stdout)
    *   [Extra Project seed options](#extra-project-seed-options)
*   [Run tests](#run-tests)
    *   [Speed up tests, Rake tasks, and migrations](#speed-up-tests-rake-tasks-and-migrations)
*   [Compile Frontend Assets](#compile-frontend-assets)
*   [Emoji tasks](#emoji-tasks)
*   [Update project templates](#update-project-templates)
*   [Generate route lists](#generate-route-lists)
*   [Show obsolete `ignored_columns`](#show-obsolete-ignored_columns)
*   [Update GraphQL documentation and schema definitions](#update-graphql-documentation-and-schema-definitions)
    *   [Update machine-readable schema files](#update-machine-readable-schema-files)

# Rake tasks for developers[](#rake-tasks-for-developers "Permalink")

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

## Set up database with developer seeds[](#set-up-database-with-developer-seeds "Permalink")

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

```
bundle exec rake setup 
```

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

### Environment variables[](#environment-variables "Permalink")

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

另请参见[批量插入 Rails 模型](mass_insert.html) .

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

### Seeding issues for all or a given project[](#seeding-issues-for-all-or-a-given-project "Permalink")

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

```
# All projects
bin/rake gitlab:seed:issues

# A specific project
bin/rake "gitlab:seed:issues[group-path/project-path]" 
```

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

#### Seeding issues for Insights charts[](#seeding-issues-for-insights-charts-ultimate "Permalink")

您可以使用`gitlab:seed:insights:issues`任务为专门用于处理[Insights 图表](../user/group/insights/index.html)`gitlab:seed:insights:issues`

```
# All projects
bin/rake gitlab:seed:insights:issues

# A specific project
bin/rake "gitlab:seed:insights:issues[group-path/project-path]" 
```

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

#### Seeding groups with sub-groups[](#seeding-groups-with-sub-groups "Permalink")

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

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

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

#### Seeding custom metrics for the monitoring dashboard[](#seeding-custom-metrics-for-the-monitoring-dashboard "Permalink")

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

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

```
bundle exec rake 'gitlab:seed:development_metrics[your_project_id]' 
```

### Automation[](#automation "Permalink")

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

```
echo 'yes' | bundle exec rake setup 
```

使您免于手动回答`yes` .

### Discard `stdout`[](#discard-stdout "Permalink")

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

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

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

### Extra Project seed options[](#extra-project-seed-options "Permalink")

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

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

## Run tests[](#run-tests "Permalink")

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

*   `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:unit``spec:integration``spec:system`任务. 例如, `bin/rake "spec:unit[--tag ~geo --dry-run]"` .

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

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

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

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

### Speed up tests, Rake tasks, and migrations[](#speed-up-tests-rake-tasks-and-migrations "Permalink")

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

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

```
export ENABLE_SPRING=1 
```

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

```
bundle exec spring rspec some_spec.rb 
```

## Compile Frontend Assets[](#compile-frontend-assets "Permalink")

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

```
RAILS_ENV=production NODE_ENV=production bundle exec rake gitlab:assets:compile 
```

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

## Emoji tasks[](#emoji-tasks "Permalink")

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

```
bundle exec rake gemojione:aliases 
```

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

```
bundle exec rake gemojione:digests 
```

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

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

```
bundle exec rake gemojione:sprite 
```

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

## Update project templates[](#update-project-templates "Permalink")

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

```
gdk start
bundle exec rake gitlab:update_project_templates
git checkout -b update-project-templates
git add vendor/project_templates
git commit
git push -u origin update-project-templates 
```

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

## Generate route lists[](#generate-route-lists "Permalink")

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

```
bundle exec rake grape:path_helpers 
```

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

对于 Rails 控制器,运行:

```
bundle exec rake routes 
```

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

## Show obsolete `ignored_columns`[](#show-obsolete-ignored_columns "Permalink")

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

```
bundle exec rake db:obsolete_ignored_columns 
```

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

## Update GraphQL documentation and schema definitions[](#update-graphql-documentation-and-schema-definitions "Permalink")

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

```
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_schema``graphql-docs` gem 期望提供的实例变量. `Gitlab::Graphql::Docs::Helper`定义我们当前使用的`object`方法. 您还应该在这里为要显示的新类型实现任何新方法.

### Update machine-readable schema files[](#update-machine-readable-schema-files "Permalink")

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

```
bundle exec rake gitlab:graphql:schema:dump 
```

它使用 GraphQL Ruby 的内置 Rake 任务来生成[IDL](https://www.prisma.io/blog/graphql-sdl-schema-definition-language-6755bcb9ce51)和 JSON 格式的文件.