gitlab-qa 4.7.1 → 4.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +47 -1
- data/.gitlab/merge_request_templates/Release.md +35 -0
- data/CONTRIBUTING.md +1 -15
- data/bin/merge_html_reports +7 -3
- data/docs/release_process.md +35 -0
- data/docs/what_tests_can_be_run.md +26 -0
- data/lib/gitlab/qa/version.rb +1 -1
- metadata +5 -4
- data/.gitlab/issue_templates/Release.md +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c369a98179f8f30c64babf5884b9919b14bf2016a15e0c4a172a5516c870be87
|
4
|
+
data.tar.gz: d790e55c6879463128dcee0a76437f0d98ae66e0aa5a8a72cfa827da385d11ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed4335697822edc553edbaa5d7a8bad7fa498e80773e16a5b9f6a7e7bddd42893a4954d3bcd37849e4cb5cb1c6c954fca669a0074e1aaf21d8dc6335cbaa16b7
|
7
|
+
data.tar.gz: a8de7ca6b1c86abb91b628266f1eaa293fd70ead1a1944469d5513c200ef5e5f452772ff021f5b8b8b8890f02c725974dfad35da2ec49c0b6ecdd46680f4d970
|
data/.gitlab-ci.yml
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
image: ruby:2.6
|
2
|
+
|
1
3
|
services:
|
2
4
|
- docker:1.13-dind
|
3
5
|
|
4
6
|
stages:
|
5
7
|
- check
|
8
|
+
- release
|
6
9
|
- test
|
7
10
|
- notify
|
8
11
|
|
@@ -13,8 +16,14 @@ variables:
|
|
13
16
|
QA_ARTIFACTS_DIR: $CI_PROJECT_DIR
|
14
17
|
QA_CAN_TEST_GIT_PROTOCOL_V2: 'false'
|
15
18
|
|
19
|
+
cache:
|
20
|
+
key: "ruby:2.6"
|
21
|
+
paths:
|
22
|
+
- vendor/ruby
|
23
|
+
|
16
24
|
before_script:
|
17
|
-
- bundle
|
25
|
+
- bundle version
|
26
|
+
- bundle install --clean --jobs=$(nproc) --path=vendor --retry=3 --quiet && bundle check
|
18
27
|
- if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then
|
19
28
|
echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE";
|
20
29
|
fi
|
@@ -717,3 +726,40 @@ staging:
|
|
717
726
|
- .high-capacity
|
718
727
|
- .only-qa
|
719
728
|
when: manual
|
729
|
+
|
730
|
+
release:
|
731
|
+
stage: release
|
732
|
+
rules:
|
733
|
+
- if: '$CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_COMMIT_REF_NAME != "master"'
|
734
|
+
when: never
|
735
|
+
- if: '$CI_COMMIT_TAG'
|
736
|
+
when: on_success
|
737
|
+
- when: manual
|
738
|
+
script:
|
739
|
+
- gem update --system
|
740
|
+
- ruby --version
|
741
|
+
- gem env version
|
742
|
+
- bundle exec rake release
|
743
|
+
artifacts:
|
744
|
+
paths:
|
745
|
+
- pkg/
|
746
|
+
expire_in: 30 days
|
747
|
+
|
748
|
+
.notify_slack:
|
749
|
+
image: alpine
|
750
|
+
stage: notify
|
751
|
+
dependencies: []
|
752
|
+
cache: {}
|
753
|
+
before_script:
|
754
|
+
- apk update && apk add git curl bash
|
755
|
+
only:
|
756
|
+
variables:
|
757
|
+
- $TOP_UPSTREAM_SOURCE_JOB
|
758
|
+
- $NOTIFY_CHANNEL
|
759
|
+
|
760
|
+
notify_slack:
|
761
|
+
extends:
|
762
|
+
- .notify_slack
|
763
|
+
script:
|
764
|
+
- bin/slack $NOTIFY_CHANNEL "☠️ Pipeline against $RELEASE failed! ☠️ See $CI_PIPELINE_URL (triggered from $TOP_UPSTREAM_SOURCE_JOB)" ci_failing
|
765
|
+
when: on_failure
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<!-- Replace `v4.5.0` with the previous release here, and `e18d76b309e42888759c1effe96767f13e34ae55`
|
2
|
+
with the latest commit from https://gitlab.com/gitlab-org/gitlab-qa/commits/master that will be included in the release. -->
|
3
|
+
- Diff: https://gitlab.com/gitlab-org/gitlab-qa/compare/v4.5.0...e18d76b309e42888759c1effe96767f13e34ae55
|
4
|
+
|
5
|
+
- Release notes:
|
6
|
+
|
7
|
+
<!-- Keep the sections order but remove the empty sections -->
|
8
|
+
|
9
|
+
```markdown
|
10
|
+
### New scenarios and scenario updates
|
11
|
+
|
12
|
+
- !aaa <Title of the aaa MR>.
|
13
|
+
|
14
|
+
### Fixes
|
15
|
+
|
16
|
+
- !bbb <Title of the bbb MR>.
|
17
|
+
|
18
|
+
### Doc changes
|
19
|
+
|
20
|
+
- !ccc <Title of the ccc MR>.
|
21
|
+
|
22
|
+
### Other changes (CI, backstage)
|
23
|
+
|
24
|
+
- !ddd <Title of the ddd MR>.
|
25
|
+
```
|
26
|
+
|
27
|
+
- Checklist before merging:
|
28
|
+
- [ ] Diff link is up-to-date.
|
29
|
+
- [ ] Based on the diff, `lib/gitlab/qa/version.rb` is updated, according to [SemVer](https://semver.org).
|
30
|
+
- [ ] Release notes are accurate.
|
31
|
+
|
32
|
+
- Checklist after merging:
|
33
|
+
- [ ] [Create a tag for the new release version](docs/release_process.md#how-to).
|
34
|
+
|
35
|
+
/label ~Quality ~backstage
|
data/CONTRIBUTING.md
CHANGED
@@ -11,18 +11,4 @@ terms.
|
|
11
11
|
|
12
12
|
_This notice should stay as the first item in the CONTRIBUTING.md file._
|
13
13
|
|
14
|
-
## Releasing a new version
|
15
|
-
|
16
|
-
To release a new version you can follow these steps:
|
17
|
-
|
18
|
-
1. Bump the [version](lib/gitlab/qa/version.rb#L3) using [semantic versioning](https://semver.org/).
|
19
|
-
* You may find it helpful to fill out the description of the merge request
|
20
|
-
using the same format as for existing [tags](https://gitlab.com/gitlab-org/gitlab-qa/tags), as this will help in
|
21
|
-
step 3.
|
22
|
-
2. Pull the change locally and run `bundle exec rake release` to build, tag,
|
23
|
-
and push the new version to [RubyGems](https://rubygems.org/gems/gitlab-qa).
|
24
|
-
* Note: you will need an account on [RubyGems.org](https://rubygems.org/)
|
25
|
-
and permission to push `gitlab-qa`. Open an issue in this project to
|
26
|
-
request access.
|
27
|
-
3. Update the release notes for the new [tag](https://gitlab.com/gitlab-org/gitlab-qa/tags).
|
28
|
-
4. If any pipelines are locked to a specific version, update them if required.
|
14
|
+
## [Releasing a new version](docs/release_process.md)
|
data/bin/merge_html_reports
CHANGED
@@ -14,11 +14,12 @@ unless base_artifact_url
|
|
14
14
|
exit 1
|
15
15
|
end
|
16
16
|
|
17
|
-
# Create the base report with empty
|
17
|
+
# Create the base report with body tag (empty except for the onload method)
|
18
18
|
new_report = Nokogiri::HTML.parse(File.read(ARGV[0]))
|
19
19
|
new_report.at_css('body').remove
|
20
|
-
|
21
|
-
|
20
|
+
body = Nokogiri::XML::Node.new('body', new_report)
|
21
|
+
body[:onload] = "apply_filters()"
|
22
|
+
new_report.at_css('head').add_next_sibling(body)
|
22
23
|
|
23
24
|
ARGV.each do |report_file|
|
24
25
|
report = Nokogiri::HTML.parse(File.read(report_file))
|
@@ -34,6 +35,9 @@ ARGV.each do |report_file|
|
|
34
35
|
next if tests.empty?
|
35
36
|
|
36
37
|
header.search("//h1/text()").first.content = "Test results for job: #{report_file.slice(/rspec-(.*)\.htm/, 1)}"
|
38
|
+
header.css("#display-filters input").each do |filter|
|
39
|
+
filter.remove_attribute('checked') if filter[:id] != "failed_checkbox"
|
40
|
+
end
|
37
41
|
|
38
42
|
tests.each do |test|
|
39
43
|
title = test.parent
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Release Process
|
2
|
+
|
3
|
+
## Versioning
|
4
|
+
|
5
|
+
We follow [Semantic Versioning](https://semver.org). In short, this means that the new version should reflect the types of changes that are about to be released.
|
6
|
+
|
7
|
+
*summary from semver.org*
|
8
|
+
|
9
|
+
MAJOR.MINOR.PATCH
|
10
|
+
|
11
|
+
- MAJOR version when you make incompatible API changes,
|
12
|
+
- MINOR version when you add functionality in a backwards compatible manner, and
|
13
|
+
- PATCH version when you make backwards compatible bug fixes.
|
14
|
+
|
15
|
+
## When we release
|
16
|
+
|
17
|
+
We release `gitlab-qa` on an ad-hoc basis. There is no regularity to when we release, we just release
|
18
|
+
when we make a change - no matter the size of the change.
|
19
|
+
|
20
|
+
## How-to
|
21
|
+
|
22
|
+
- Check if there is an [open merge request to bump the version](https://gitlab.com/gitlab-org/gitlab-qa/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&search=bump+version) (to avoid creating a duplicate).
|
23
|
+
- If there is one, update it if necessary.
|
24
|
+
- If not, update [`lib/gitlab/qa/version.rb`] to an appropriate [semantic version](https://semver.org) in a new merge request using the [release template](https://gitlab.com/gitlab-org/gitlab-qa/blob/master/.gitlab/merge_request_templates/Release.md)
|
25
|
+
and title the MR like `"Bump version to <version>"`.
|
26
|
+
- Merge the merge request.
|
27
|
+
- Create a new tag via the UI (https://gitlab.com/gitlab-org/gitlab-qa/-/tags/new).
|
28
|
+
* **Tag name**: The same version found in [`lib/gitlab/qa/version.rb`], prefixed with `v`, e.g. if the version is `4.7.1`, the tag would be `v4.7.1`.
|
29
|
+
* **Message**: This can be something simple such as "<version> release".
|
30
|
+
* **Release notes**: Copy the release notes from the merge request.
|
31
|
+
* Click *Create Tag*.
|
32
|
+
|
33
|
+
GitLab will then start a pipeline for this new tag, and the `release` job will build and push the new version of `gitlab-qa` to RubyGems.
|
34
|
+
|
35
|
+
[`lib/gitlab/qa/version.rb`]: https://gitlab.com/gitlab-org/gitlab-qa/blob/master/lib/gitlab/qa/version.rb#L3
|
@@ -82,6 +82,32 @@ For more details on the internals, please read the
|
|
82
82
|
It is possible to enable a feature flag before running tests. See the [QA
|
83
83
|
framework documentation](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/qa/README.md#running-tests-with-a-feature-flag-enabled) for details.
|
84
84
|
|
85
|
+
## Specifying the GitLab version
|
86
|
+
|
87
|
+
In each of the examples below, it is possible to test a specific version of GitLab
|
88
|
+
by providing the full image name, or an abbreviation followed by the image tag.
|
89
|
+
|
90
|
+
For example, to test GitLab version `12.4.0-ee`, the image tag is [`12.4.0-ee.0`](https://hub.docker.com/layers/gitlab/gitlab-ee/12.4.0-ee.0/images/sha256-65df19d8abbb0debdccb64bfe96871563806098cd84da0b818ae8cfdd928b9aa)
|
91
|
+
and so you could run the tests with the command:
|
92
|
+
|
93
|
+
```
|
94
|
+
$ gitlab-qa Test::Instance::Image gitlab/gitlab-ee:12.4.0-ee.0
|
95
|
+
```
|
96
|
+
|
97
|
+
Or with the command:
|
98
|
+
|
99
|
+
```
|
100
|
+
$ gitlab-qa Test::Instance::Image EE:12.4.0-ee.0
|
101
|
+
```
|
102
|
+
|
103
|
+
If you only provide the abbreviation, it will run the tests against the latest nightly image.
|
104
|
+
|
105
|
+
For example, the following command would use the image named `gitlab/gitlab-ee:nightly`
|
106
|
+
|
107
|
+
```
|
108
|
+
$ gitlab-qa Test::Instance::Image EE
|
109
|
+
```
|
110
|
+
|
85
111
|
## Examples
|
86
112
|
|
87
113
|
### `Test::Instance::Image CE|EE|<full image address>`
|
data/lib/gitlab/qa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-qa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Bizon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|
@@ -133,7 +133,7 @@ files:
|
|
133
133
|
- ".dockerignore"
|
134
134
|
- ".gitignore"
|
135
135
|
- ".gitlab-ci.yml"
|
136
|
-
- ".gitlab/
|
136
|
+
- ".gitlab/merge_request_templates/Release.md"
|
137
137
|
- ".rspec"
|
138
138
|
- ".rubocop.yml"
|
139
139
|
- ".travis.yml"
|
@@ -151,6 +151,7 @@ files:
|
|
151
151
|
- docs/README.md
|
152
152
|
- docs/architecture.md
|
153
153
|
- docs/how_it_works.md
|
154
|
+
- docs/release_process.md
|
154
155
|
- docs/run_qa_against_gdk.md
|
155
156
|
- docs/running_against_remote_grid.md
|
156
157
|
- docs/trainings.md
|
@@ -233,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
234
|
- !ruby/object:Gem::Version
|
234
235
|
version: '0'
|
235
236
|
requirements: []
|
236
|
-
rubygems_version: 3.0.
|
237
|
+
rubygems_version: 3.0.6
|
237
238
|
signing_key:
|
238
239
|
specification_version: 4
|
239
240
|
summary: Integration tests for GitLab
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<!-- Replace `v4.5.0` with the previous release here, and `e18d76b309e42888759c1effe96767f13e34ae55`
|
2
|
-
with the latest commit from https://gitlab.com/gitlab-org/gitlab-qa/commits/master that will be included in the release. -->
|
3
|
-
Diff: https://gitlab.com/gitlab-org/gitlab-qa/compare/v4.5.0...e18d76b309e42888759c1effe96767f13e34ae55
|
4
|
-
|
5
|
-
Release notes:
|
6
|
-
|
7
|
-
```markdown
|
8
|
-
### Fixes
|
9
|
-
|
10
|
-
- !xxx Fix a broken OAuth scenario.
|
11
|
-
|
12
|
-
### New scenarios
|
13
|
-
|
14
|
-
- !xxx Add a new Awesome scenario.
|
15
|
-
|
16
|
-
### Scenario changes
|
17
|
-
|
18
|
-
- !xxx Scenario `Foo` now accepts a new `--bar` option.
|
19
|
-
|
20
|
-
### Doc changes
|
21
|
-
|
22
|
-
- !xxx Document the new `QA_FOO_BAR` variable.
|
23
|
-
|
24
|
-
### CI changes
|
25
|
-
|
26
|
-
- !xxx Add a new staging job.
|
27
|
-
|
28
|
-
### Other changes
|
29
|
-
|
30
|
-
- !xxx Description of the other change.
|
31
|
-
```
|
32
|
-
|
33
|
-
/label ~backstage
|