Commit Graph
143 Commits
Author SHA1 Message Date
Rémy Coutable be78a556d9 Merge branch 'refactor/ci-config-add-facade' into 'master'
Add new GitLab CI configuration facade class

## What does this MR do?

This MR is a first iteration of major CI configuration refactoring. See #17139 and #15060 for more details.

## What are the relevant issue numbers?

Closes #17139

See merge request !4462
2016-06-07 16:05:26 +00:00
Grzegorz Bizon fa097c678c Remove duplicated exception in Ci config
This is a temporary refactoring stub, that is planned to be removed
after removing legacy config processor.
2016-06-07 10:26:38 +02:00
Grzegorz Bizon 23030439c2 Rename class that loads CI configuration to Loader 2016-06-06 08:20:55 +02:00
Grzegorz Bizon d501850e05 Add gitlab ci configuration class that holds hash
As for now, we keep this class inside a oryginal config processor class.
We will move implementation to this class and delegate to it from
current config processor.

After original gitlab ci yaml processor not longer has relevant
impelemntation we will replace it with new configuration class.
2016-06-03 14:20:34 +02:00
Kamil Trzcinski 021d3810c3 Rename Ci::Commit to Ci::Pipeline and rename some of the ci_commit to pipeline 2016-06-02 16:59:04 +02:00
Grzegorz Bizon a55e8f109f Enable Style/NegatedIf Rubocop cop
Favor `unless` over `if` for negative conditions
(or control flow ||).

See #17478
2016-05-30 13:53:25 +02:00
Robert Speicher 3c2d0cf24c Merge branch 'complexity/enable-multiple-rubocop-cops-2' into 'master'
Enable multiple compatible Rubocop cops

## What does this MR do?

This MR enables multiple Rubocop cops, that are already compatible with
our codebase. See #17406.

Cops enabled:

```text
Style/ArrayJoin:
  Description: Use Array#join instead of Array#*.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#array-join
----------------
Style/Attr:
  Description: Checks for uses of Module#attr.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr
----------------
Style/BlockComments:
  Description: Do not use block comments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-block-comments
----------------
Style/ClassMethods:
  Description: Use self when defining module/class methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#def-self-class-methods
----------------
Style/EndBlock:
  Description: Avoid the use of END blocks.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-END-blocks
----------------
Style/EvenOdd:
  Description: Favor the use of Fixnum#even? && Fixnum#odd?
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods
----------------
Style/FileName:
  Description: Use snake_case for source file names.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
  ExpectMatchingDefinition: false
----------------
Style/FirstMethodParameterLineBreak:
  Description: Checks for a line break before the first parameter in a multi-line method
    parameter definition.
----------------
Style/FlipFlop:
  Description: Checks for flip flops
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-flip-flops
----------------
Style/GlobalVars:
  Description: Do not introduce global variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#instance-vars
  Reference: http://www.zenspider.com/Languages/Ruby/QuickRef.html
----------------
Style/IfWithSemicolon:
  Description: Do not use if x; .... Use the ternary operator instead.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs
----------------
Style/LambdaCall:
  Description: Use lambda.call(...) instead of lambda.(...).
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc-call
  EnforcedStyle: call
----------------
Style/MethodName:
  Description: Use the configured style when naming methods.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
  EnforcedStyle: snake_case
----------------
Style/MultilineMethodDefinitionBraceLayout:
  Description: Checks that the closing brace in a method definition is symmetrical with
    respect to the opening brace and the method parameters.
----------------
Style/NestedModifier:
  Description: Avoid using nested modifiers.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-modifiers
----------------
Style/OpMethod:
  Description: When defining binary operators, name the argument other.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#other-arg
----------------
Style/SignalException:
  Description: Checks for proper usage of fail and raise.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#prefer-raise-over-fail
  EnforcedStyle: only_raise
----------------
Style/SpaceAfterNot:
  Description: Tracks redundant space after the ! operator.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-bang
----------------
Style/SpaceBeforeSemicolon:
  Description: No spaces before semicolons.
----------------
Style/SpaceInsideRangeLiteral:
  Description: No spaces inside range literals.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-inside-range-literals
----------------
Style/SpaceInsideStringInterpolation:
  Description: Checks for padding/surrounding spaces inside string interpolation.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#string-interpolation
  EnforcedStyle: no_space
----------------
Style/StabbyLambdaParentheses:
  Description: Check for the usage of parentheses around stabby lambda arguments.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#stabby-lambda-with-args
  EnforcedStyle: require_parentheses
----------------
Style/StringMethods:
  Description: Checks if configured preferred methods are used over non-preferred.
  PreferredMethods:
    intern: to_sym
----------------
Style/VariableInterpolation:
  Description: Don't interpolate global, instance and class variables directly in strings.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
----------------
Style/VariableName:
  Description: Use the configured style when naming variables.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars
  EnforcedStyle: snake_case
----------------
Style/WhenThen:
  Description: Use when x then ... for one-line cases.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
----------------
Style/WhileUntilModifier:
  Description: Favor modifier while/until usage when you have a single-line body.
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier
  MaxLineLength: 80
```

Closes #17406 

See merge request !4286
2016-05-25 19:41:10 +00:00
Grzegorz Bizon 2c7439db4d Enable multiple compatible Rubocop cops
Closes #17406
2016-05-25 06:17:29 +02:00
Kamil Trzcinski cdec9e472d Replace \n to <br> 2016-05-23 21:59:07 -05:00
Robert Speicher 3ba72f69af Enable Style/SpaceAroundKeyword cop and fix offenses 2016-05-23 14:16:35 -04:00
Stan Hu 9bb0d0b407 Fix Error 500 in CI charts by gracefully handling commits with no durations
Closes #17730
2016-05-22 23:52:50 -07:00
Grzegorz Bizon bf9cc351c2 Add minor corrections related to config of runner 2016-05-19 22:01:53 +02:00
Grzegorz Bizon 0fd100d28d Improve setting default runner attrs when using API 2016-05-19 22:01:53 +02:00
Grzegorz Bizon b8cf2a340b Set run untagged option when registering a runner 2016-05-19 22:01:53 +02:00
Jacob Schatz f2303f9df0 Merge branch 'send-incremental-build-log' into 'master'
Update build log incrementally

Proof of concept implementation of incremental sending of build log to browser.

cc @jschatz1 @vsizov @grzesiek @tmaczukin 


See merge request !3737
2016-05-12 16:48:42 +00:00
Rémy Coutable 5589dcf8db Fix a few places where autoloading would fail
- Fix naming of API::CommitStatuses
- Ensure we use require_dependency instead of require
- Ensure the namespace is right in lib/api/api.rb, otherwise, we
  might require Grape::API::Helpers which defines the `#params` method.
  This is to avoid requiring a file multiple times and getting an "Already
  initialized constant" error.

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-05-10 11:51:19 +02:00
Kamil Trzcinski 74520f23db Encode state as base64 string 2016-05-09 20:19:27 +03:00
Kamil Trzcinski baef6728fa Send trace to a browser incrementally when build is running
We send a state of ansi2html to client, client needs to send this state back.
The state describes the configuration of generator and position within trace.
2016-05-09 19:59:45 +03:00
Tomasz Maczukin 9a1b174d5c Fix some typos 2016-04-22 22:08:38 +02:00
Tomasz Maczukin a2e2989637 Modify code formatting 2016-04-22 22:08:37 +02:00
Tomasz Maczukin 0ccf629525 Simplify the GitlabCiYamlProcessor#initial_parsing method 2016-04-22 22:08:36 +02:00
Tomasz Maczukin 8dd27b47ea Add posibility to define a hidden job without 'script' in .gitlab-ci.yml 2016-04-22 22:08:34 +02:00
Kamil Trzciński d240666800 Merge branch 'ci-commit-as-pipeline' into 'master'
Ci::Commit becomes a Pipeline object

1. Ci::Commit receives context: ref, :tag.
1. One Ci::Commit describes a one Pipeline
1. Pipeline is created from `.gitlab-ci.yml`
1. Pipeline is a ordered group of builds
1. We test MR against Pipeline
1. Pipelines have a separate view (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3703)
1. Pipeline can be triggered from UI (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3703)
1. Later we change `Trigger -> TriggerRequest -> Build` to `Trigger -> Pipeline` (future)
1. We add a Pipeline Hook that will be triggered on Pipeline status change  (future)
1. We extend notifications to use `Pipeline Hook` to send summary on pipeline changes (future)

After merging that I'll prepare a separate MR that will unify naming, database columns, table names:
```
Ci::Commit -> Pipeline
Ci::Build -> Build
CommitStatus -> Job
GenericCommitStatus -> ExternalJob

ci_commits -> pipelines
ci_builds -> jobs
```

This MR implements first 5 points.

This is made to solve this issue https://gitlab.com/gitlab-org/gitlab-ce/issues/14149.

See merge request !3653
2016-04-21 08:10:37 +00:00
Tomasz Maczukin a84d0204bf Fix Build#append_trace method usage when trace file doesn't exists yet 2016-04-20 11:54:06 +02:00
Tomasz Maczukin 4019b0d872 Fix some typos in documentation
[ci skip]
2016-04-20 11:54:06 +02:00
Tomasz Maczukin 0725c28069 Add documentation of incremental trace update API
[ci skip]
2016-04-20 11:54:05 +02:00
Tomasz Maczukin dd29283a88 Make sure that appending is done on a valid length 2016-04-20 11:53:44 +02:00
Tomasz Maczukin 360bd831bf Add range checking 2016-04-20 11:53:43 +02:00
Tomasz Maczukin 38a1378e63 Add incremental build trace update API 2016-04-20 11:53:39 +02:00
Kamil Trzcinski 27e0c7723c Merge remote-tracking branch 'origin/master' into ci-commit-as-pipeline
# Conflicts:
#	db/schema.rb
2016-04-19 14:00:14 -04:00
Kamil Trzcinski 3f66f4470a Make rubocop happy 2016-04-18 15:19:24 -04:00
Kamil Trzcinski 9a2685fae0 Merge branch 'after-script' into make-before-after-overridable 2016-04-18 10:20:51 -04:00
Kamil Trzcinski 0ce5cc9962 Resolve merge 2016-04-18 10:19:29 -04:00
Kamil Trzcinski 2ab8d3e652 Merge branch 'after-script' into make-before-after-overridable 2016-04-18 09:47:12 -04:00
Kamil Trzcinski aca1e14bd3 Merge remote-tracking branch 'origin/master' into after-script 2016-04-18 09:46:12 -04:00
Kamil Trzcinski 42102b4344 Merge branch 'after-script' into make-before-after-overridable 2016-04-18 07:53:21 -04:00
Kamil Trzcinski 63bd1f92d9 Fix rubocop complains 2016-04-18 07:51:49 -04:00
Grzegorz Bizon 1339fda1cd Minor refactorings in CI config 2016-04-18 13:36:52 +02:00
Grzegorz Bizon 2b1c08be8f Validate job-level variables in YAML config file 2016-04-18 13:17:48 +02:00
Grzegorz Bizon cf3e3effb0 Minor refactoring in code related to job variables 2016-04-18 13:17:48 +02:00
Grzegorz Bizon 1f3248644e Make CI config return empty array if no job variables 2016-04-18 13:17:48 +02:00
Grzegorz Bizon 3dec6e2629 Rename method that returns global envs in CI conf 2016-04-18 13:17:48 +02:00
Grzegorz Bizon b7946b50fc Read job variables directly from gitlab CI config 2016-04-18 13:17:48 +02:00
Grzegorz Bizon a1363d39c6 Add variables keyword to job in CI config YAML 2016-04-18 13:17:47 +02:00
Kamil Trzcinski 5a7e4dfd33 Merge branch 'after-script' into make-before-after-overridable
* after-script:
  Add CHANGELOG and documentation
  Rename finally_script to after_script

Conflicts:
	lib/ci/gitlab_ci_yaml_processor.rb
	spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
2016-04-17 09:06:55 -04:00
Kamil Trzcinski cc57d61023 Rename finally_script to after_script 2016-04-17 08:59:57 -04:00
Kamil Trzcinski 4cc9a02ee0 Allow the before_script and finally_script to be overwritten in context of job 2016-04-16 19:22:49 +02:00
Kamil Trzcinski b340b59743 Implement finally_script which allows to do cleanups as part of the build process 2016-04-16 19:22:48 +02:00
Kamil Trzcinski 1ae797c229 Fix create_next_builds method 2016-04-12 11:15:19 +02:00
Kamil TrzcinskiandRémy Coutable 8fac12c590 Fix build dependencies, when the dependency is a string 2016-03-23 12:55:23 +01:00