Commit 9de44a36 authored by Bob Van Landuyt's avatar Bob Van Landuyt

Merge branch 'ajk-246317-no-generated-schema' into 'master'

Do not commit the generated schema [RUN AS-IF-FOSS]

See merge request gitlab-org/gitlab!53974
parents cacf9284 640b348b
...@@ -131,6 +131,24 @@ rspec-ee frontend_fixture: ...@@ -131,6 +131,24 @@ rspec-ee frontend_fixture:
- .frontend:rules:default-frontend-jobs - .frontend:rules:default-frontend-jobs
parallel: 2 parallel: 2
graphql-schema-dump:
variables:
SETUP_DB: "false"
extends:
- .default-retry
- .rails-cache
- .default-before_script
- .frontend:rules:default-frontend-jobs
stage: fixtures
needs: []
script:
- bundle exec rake gitlab:graphql:schema:dump
artifacts:
name: graphql-schema
paths:
- tmp/tests/graphql/gitlab_schema.graphql
- tmp/tests/graphql/gitlab_schema.json
.frontend-test-base: .frontend-test-base:
extends: extends:
- .frontend-base - .frontend-base
...@@ -214,7 +232,7 @@ jest-integration: ...@@ -214,7 +232,7 @@ jest-integration:
- *yarn-install - *yarn-install
- run_timed_command "yarn jest:integration --ci" - run_timed_command "yarn jest:integration --ci"
# Don't use `needs` since `rspec-ee frontend_fixture` doesn't exist in `gitlab-foss` pipelines. # Don't use `needs` since `rspec-ee frontend_fixture` doesn't exist in `gitlab-foss` pipelines.
dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture"] dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture", "graphql-schema-dump"]
jest-as-if-foss: jest-as-if-foss:
extends: extends:
......
...@@ -11,4 +11,3 @@ graphql-verify: ...@@ -11,4 +11,3 @@ graphql-verify:
script: script:
- bundle exec rake gitlab:graphql:validate - bundle exec rake gitlab:graphql:validate
- bundle exec rake gitlab:graphql:check_docs - bundle exec rake gitlab:graphql:check_docs
- bundle exec rake gitlab:graphql:check_schema
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
/public/ /public/
/vendor/ /vendor/
/tmp/ /tmp/
doc/api/graphql/reference/gitlab_schema.graphql
# ignore stylesheets for now as this clashes with our linter # ignore stylesheets for now as this clashes with our linter
*.css *.css
......
...@@ -160,11 +160,6 @@ The GitLab GraphQL reference [is available](reference/index.md). ...@@ -160,11 +160,6 @@ The GitLab GraphQL reference [is available](reference/index.md).
It is automatically generated from the GitLab GraphQL schema and embedded in a Markdown file. It is automatically generated from the GitLab GraphQL schema and embedded in a Markdown file.
Machine-readable versions are also available:
- [JSON format](reference/gitlab_schema.json)
- [IDL format](reference/gitlab_schema.graphql)
## Generate updates for documentation ## Generate updates for documentation
If you've changed the GraphQL schema, you should set up an MR to gain approval of your changes. If you've changed the GraphQL schema, you should set up an MR to gain approval of your changes.
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -63,6 +63,7 @@ see [Immutability and cache updates](#immutability-and-cache-updates) for more i ...@@ -63,6 +63,7 @@ see [Immutability and cache updates](#immutability-and-cache-updates) for more i
If you use VS Code, the Apollo GraphQL extension supports autocompletion in `.graphql` files. To set up If you use VS Code, the Apollo GraphQL extension supports autocompletion in `.graphql` files. To set up
the GraphQL extension, follow these steps: the GraphQL extension, follow these steps:
1. Generate the schema: `bundle exec rake gitlab:graphql:schema:dump`
1. Add an `apollo.config.js` file to the root of your `gitlab` local directory. 1. Add an `apollo.config.js` file to the root of your `gitlab` local directory.
1. Populate the file with the following content: 1. Populate the file with the following content:
...@@ -72,7 +73,7 @@ the GraphQL extension, follow these steps: ...@@ -72,7 +73,7 @@ the GraphQL extension, follow these steps:
includes: ['./app/assets/javascripts/**/*.graphql', './ee/app/assets/javascripts/**/*.graphql'], includes: ['./app/assets/javascripts/**/*.graphql', './ee/app/assets/javascripts/**/*.graphql'],
service: { service: {
name: 'GitLab', name: 'GitLab',
localSchemaFile: './doc/api/graphql/reference/gitlab_schema.graphql', localSchemaFile: './tmp/tests/graphql/gitlab_schema.graphql',
}, },
}, },
}; };
...@@ -768,6 +769,23 @@ export default { ...@@ -768,6 +769,23 @@ export default {
### Testing ### Testing
#### Generating the GraphQL schema
Some of our tests load the schema JSON files. To generate these files, run:
```shell
bundle exec rake gitlab:graphql:schema:dump
```
You should run this task after pulling from upstream, or when rebasing your
branch. This is run automatically as part of `gdk update`.
NOTE:
If you use the RubyMine IDE, and have marked the `tmp` directory as
"Excluded", you should "Mark Directory As -> Not Excluded" for
`gitlab/tmp/tests/graphql`. This will allow the **JS GraphQL** plugin to
automatically find and index the schema.
#### Mocking response as component data #### Mocking response as component data
<!-- vale gitlab.Spelling = NO --> <!-- vale gitlab.Spelling = NO -->
......
...@@ -6,6 +6,7 @@ require 'graphql/rake_task' ...@@ -6,6 +6,7 @@ require 'graphql/rake_task'
namespace :gitlab do namespace :gitlab do
OUTPUT_DIR = Rails.root.join("doc/api/graphql/reference") OUTPUT_DIR = Rails.root.join("doc/api/graphql/reference")
TEMP_SCHEMA_DIR = Rails.root.join('tmp/tests/graphql')
TEMPLATES_DIR = 'lib/gitlab/graphql/docs/templates/' TEMPLATES_DIR = 'lib/gitlab/graphql/docs/templates/'
# Make all feature flags enabled so that all feature flag # Make all feature flags enabled so that all feature flag
...@@ -27,7 +28,7 @@ namespace :gitlab do ...@@ -27,7 +28,7 @@ namespace :gitlab do
GraphQL::RakeTask.new( GraphQL::RakeTask.new(
schema_name: 'GitlabSchema', schema_name: 'GitlabSchema',
dependencies: [:environment, :enable_feature_flags], dependencies: [:environment, :enable_feature_flags],
directory: OUTPUT_DIR, directory: TEMP_SCHEMA_DIR,
idl_outfile: "gitlab_schema.graphql", idl_outfile: "gitlab_schema.graphql",
json_outfile: "gitlab_schema.json" json_outfile: "gitlab_schema.json"
) )
...@@ -129,19 +130,6 @@ namespace :gitlab do ...@@ -129,19 +130,6 @@ namespace :gitlab do
abort abort
end end
end end
desc 'GitLab | GraphQL | Check if GraphQL schemas are up to date'
task check_schema: [:environment, :enable_feature_flags] do
idl_doc = File.read(Rails.root.join(OUTPUT_DIR, 'gitlab_schema.graphql'))
json_doc = File.read(Rails.root.join(OUTPUT_DIR, 'gitlab_schema.json'))
if idl_doc == GitlabSchema.to_definition && json_doc == GitlabSchema.to_json
puts "GraphQL schema is up to date"
else
format_output('GraphQL schema is outdated! Please update it by running `bundle exec rake gitlab:graphql:schema:dump`.')
abort
end
end
end end
end end
......
...@@ -8,7 +8,7 @@ const localVue = createLocalVue(); ...@@ -8,7 +8,7 @@ const localVue = createLocalVue();
localVue.use(VueRouter); localVue.use(VueRouter);
const router = new VueRouter(); const router = new VueRouter();
// Referenced from: doc/api/graphql/reference/gitlab_schema.graphql:DesignVersionEvent // Referenced from: gitlab_schema.graphql:DesignVersionEvent
const DESIGN_VERSION_EVENT = { const DESIGN_VERSION_EVENT = {
CREATION: 'CREATION', CREATION: 'CREATION',
DELETION: 'DELETION', DELETION: 'DELETION',
......
import { buildSchema, graphql } from 'graphql'; import { buildSchema, graphql } from 'graphql';
import gitlabSchemaStr from '../../../../doc/api/graphql/reference/gitlab_schema.graphql';
/* eslint-disable import/no-unresolved */
// This rule is disabled for the following line.
// The graphql schema is dynamically generated in CI
// during the `graphql-schema-dump` job.
import gitlabSchemaStr from '../../../../tmp/tests/graphql/gitlab_schema.graphql';
/* eslint-enable import/no-unresolved */
const graphqlSchema = buildSchema(gitlabSchemaStr.loc.source.body); const graphqlSchema = buildSchema(gitlabSchemaStr.loc.source.body);
const graphqlResolvers = { const graphqlResolvers = {
......
...@@ -325,8 +325,6 @@ RSpec.describe Tooling::Danger::Helper do ...@@ -325,8 +325,6 @@ RSpec.describe Tooling::Danger::Helper do
'db/fixtures/foo.rb' | [:backend] 'db/fixtures/foo.rb' | [:backend]
'ee/db/fixtures/foo.rb' | [:backend] 'ee/db/fixtures/foo.rb' | [:backend]
'doc/api/graphql/reference/gitlab_schema.graphql' | [:backend]
'doc/api/graphql/reference/gitlab_schema.json' | [:backend]
'qa/foo' | [:qa] 'qa/foo' | [:qa]
'ee/qa/foo' | [:qa] 'ee/qa/foo' | [:qa]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment