knapsack_pro 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c90349dc3633e515ef14c71464df3023abf3d43176547bfb2f1d3d9862195c0
4
- data.tar.gz: bfda6b2b50c900b141fcd3e5c074a1195346fcc8ff8cd9caf8d1e0ca2b97157e
3
+ metadata.gz: 71348dc37d5dee552caf5ccb37c7cedb48dd3f51e5f45ba00e96ccc63e894a87
4
+ data.tar.gz: 1bba20bcf45f0baf139f6aa4e0f0454bbf92dce045ce2285491717a8f2e395c6
5
5
  SHA512:
6
- metadata.gz: fd531919cc65cc8130d39573b328bedfb55f2528618b2492d695b463340d250619598e204719090d130ffb5f6963fa7b64104b00a67d387e16983ec03df1f699
7
- data.tar.gz: 535766bb3747204085c54147dd19d1bb3b8f0fe76a77b941df0a2e17cf2e5d886fc034cbf6342120f240366a896fa7c5d2a9cae2a076ccd544316582d307b098
6
+ metadata.gz: 03100f82dcd86e6f352b452d7a99aa5834e8880325512e7d3fb6644d0d7d9077266188e5d10b86117a3516b2979e127873f5b06dab98b4c9cd793665bc93de95
7
+ data.tar.gz: 94972e32887092d86ee031726c510fb0382fc6ba8da23edf131b8539d827e9c5b57cb6814d3024814816bd82f1738770ee88a7ce46c15c189a88b0ff6508f52c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 1.2.0
6
+
7
+ * Add support for GitLab CI env vars CI_NODE_TOTAL and CI_NODE_INDEX.
8
+
9
+ https://github.com/KnapsackPro/knapsack_pro-ruby/pull/73
10
+
11
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v1.1.0...v1.2.0
12
+
5
13
  ### 1.1.0
6
14
 
7
15
  * Add test file exclude pattern.
data/README.md CHANGED
@@ -103,6 +103,8 @@ The knapsack_pro has also [queue mode](#queue-mode) to get an optimal test suite
103
103
  - [Info for semaphoreapp.com users](#info-for-semaphoreappcom-users)
104
104
  - [Info for buildkite.com users](#info-for-buildkitecom-users)
105
105
  - [Info for Gitlab CI users](#info-for-gitlab-ci-users)
106
+ - [GitLab CI `>= 11.5`](#gitlab-ci--115)
107
+ - [GitLab CI `< 11.5` (old GitLab CI)](#gitlab-ci--115-old-gitlab-ci)
106
108
  - [Info for codeship.com users](#info-for-codeshipcom-users)
107
109
  - [Info for Heroku CI users](#info-for-heroku-ci-users)
108
110
  - [Info for Solano CI users](#info-for-solano-ci-users)
@@ -885,6 +887,32 @@ If you want to use Buildkite retry single agent feature to retry just failed tes
885
887
 
886
888
  #### Info for Gitlab CI users
887
889
 
890
+ Remember to add API tokens like `KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER` and `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` to [Secret Variables](https://gitlab.com/help/ci/variables/README.md#secret-variables) in `Gitlab CI Settings -> CI/CD Pipelines -> Secret Variables`.
891
+
892
+ ##### GitLab CI `>= 11.5`
893
+
894
+ ```yaml
895
+ test:
896
+ parallel: 2
897
+
898
+ # RSpec tests in Knapsack Pro Queue Mode (dynamic test suite split)
899
+ script: bundle exec rake knapsack_pro:queue:rspec
900
+
901
+ # Other commands you could use:
902
+
903
+ # Knapsack Pro Regular Mode (deterministic test suite split)
904
+ # bundle exec rake knapsack_pro:rspec
905
+ # bundle exec rake knapsack_pro:cucumber
906
+ # bundle exec rake knapsack_pro:minitest
907
+
908
+ # Knapsack Pro Queue Mode (dynamic test suite split)
909
+ # bundle exec rake knapsack_pro:queue:minitest
910
+ ```
911
+
912
+ Here you can find info [how to configure the GitLab parallel CI nodes](https://docs.gitlab.com/ee/ci/yaml/#parallel).
913
+
914
+ ##### GitLab CI `< 11.5` (old GitLab CI)
915
+
888
916
  Gitlab CI does not provide parallel jobs environment variables so you will have to define `KNAPSACK_PRO_CI_NODE_TOTAL` and `KNAPSACK_PRO_CI_NODE_INDEX` for each parallel job running as part of the same `test` stage. Below is relevant part of `.gitlab-ci.yml` configuration for 2 parallel jobs.
889
917
 
890
918
  ```
@@ -915,8 +943,6 @@ test_ci_node_1:
915
943
  - bundle exec rake knapsack_pro:queue:rspec
916
944
  ```
917
945
 
918
- Remember to add API tokens like `KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER` and `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` to [Secret Variables](https://gitlab.com/help/ci/variables/README.md#secret-variables) in `Gitlab CI Settings -> CI/CD Pipelines -> Secret Variables`.
919
-
920
946
  #### Info for codeship.com users
921
947
 
922
948
  Codeship does not provide parallel jobs environment variables so you will have to define `KNAPSACK_PRO_CI_NODE_TOTAL` and `KNAPSACK_PRO_CI_NODE_INDEX` for each [parallel test pipeline](https://documentation.codeship.com/basic/builds-and-configuration/parallel-tests/#using-parallel-test-pipelines). Below is an example for 2 parallel test pipelines.
@@ -4,11 +4,14 @@ module KnapsackPro
4
4
  module CI
5
5
  class GitlabCI < Base
6
6
  def node_total
7
- # not provided by Gitlab CI
7
+ ENV['CI_NODE_TOTAL']
8
8
  end
9
9
 
10
10
  def node_index
11
- # not provided by Gitlab CI
11
+ return unless ENV['GITLAB_CI']
12
+ # GitLab 11.5
13
+ index = ENV['CI_NODE_INDEX']
14
+ index.to_i - 1 if index
12
15
  end
13
16
 
14
17
  def node_build_id
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -10,13 +10,27 @@ describe KnapsackPro::Config::CI::GitlabCI do
10
10
  describe '#node_total' do
11
11
  subject { described_class.new.node_total }
12
12
 
13
- it { should be nil }
13
+ context 'when environment exists' do
14
+ let(:env) { { 'CI_NODE_TOTAL' => 4 } }
15
+ it { should eql 4 }
16
+ end
17
+
18
+ context "when environment doesn't exist" do
19
+ it { should be nil }
20
+ end
14
21
  end
15
22
 
16
23
  describe '#node_index' do
17
24
  subject { described_class.new.node_index }
18
25
 
19
- it { should be nil }
26
+ context 'when environment exists and is in GitLab CI' do
27
+ let(:env) { { 'CI_NODE_INDEX' => 4, 'GITLAB_CI' => 'true' } }
28
+ it { should eql 3 }
29
+ end
30
+
31
+ context "when environment doesn't exist" do
32
+ it { should be nil }
33
+ end
20
34
  end
21
35
 
22
36
  describe '#node_build_id' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knapsack_pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-02 00:00:00.000000000 Z
11
+ date: 2018-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake