jenkinsutil 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.idea/.name +1 -0
- data/.idea/JenkinsUtil.iml +120 -0
- data/.idea/dictionaries/brettmcginnis.xml +8 -0
- data/.idea/encodings.xml +6 -0
- data/.idea/misc.xml +14 -0
- data/.idea/modules.xml +8 -0
- data/.idea/runConfigurations/JenkinsUtil.xml +21 -0
- data/.idea/runConfigurations/Run_test__DropboxUtilTest___JenkinsUtil.xml +32 -0
- data/.idea/runConfigurations/test.xml +25 -0
- data/.idea/vcs.xml +6 -0
- data/.rbenv-gemsets +1 -0
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +21 -0
- data/.travis.yml +4 -0
- data/Dockerfile +23 -0
- data/Gemfile +4 -0
- data/JenkinsUtil.gemspec +32 -0
- data/LICENSE.txt +21 -0
- data/README.md +13 -0
- data/Rakefile +16 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/exe/jenkinsutil +5 -0
- data/lib/JenkinsUtil/argument_handler.rb +85 -0
- data/lib/JenkinsUtil/command_line_script.rb +22 -0
- data/lib/JenkinsUtil/dropbox_util.rb +69 -0
- data/lib/JenkinsUtil/keychain_util.rb +104 -0
- data/lib/JenkinsUtil/logger_util.rb +22 -0
- data/lib/JenkinsUtil/process_util.rb +18 -0
- data/lib/JenkinsUtil/version.rb +3 -0
- data/lib/JenkinsUtil/xcode_util.rb +32 -0
- data/lib/JenkinsUtil.rb +26 -0
- metadata +204 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2fedec19ce325b18a50ed0df7bb39cf2cb7d9208
|
4
|
+
data.tar.gz: df7e72785348afe76af60b24843bdf93bf20ae18
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e18a92ae3ed80bac2026e95e95bd232451b929d6cb247b756f7ed74955498237ddd833bba94864adc3decacbff55e076a1dd49d8547c4969ffd55a997253374b
|
7
|
+
data.tar.gz: d9762384a47dfdee38b54e7b786d42593a55b8c248c7a938134872751e56188bb5bd7ab60c3d09e7bfe883dbf4bc0358e88f524612ce1591513fffaf96b0bdea
|
data/.gitignore
ADDED
data/.idea/.name
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
JenkinsUtil
|
@@ -0,0 +1,120 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
3
|
+
<component name="FacetManager">
|
4
|
+
<facet type="gem" name="Ruby Gem">
|
5
|
+
<configuration>
|
6
|
+
<option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
|
7
|
+
<option name="GEM_APP_TEST_PATH" value="" />
|
8
|
+
<option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
|
9
|
+
</configuration>
|
10
|
+
</facet>
|
11
|
+
</component>
|
12
|
+
<component name="ModuleRunConfigurationManager">
|
13
|
+
<configuration default="false" name="test" type="RakeRunConfigurationType" factoryName="Rake">
|
14
|
+
<module name="JenkinsUtil" />
|
15
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
16
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
17
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
18
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
19
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
20
|
+
<envs />
|
21
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
22
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
23
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
24
|
+
<COVERAGE_PATTERN ENABLED="true">
|
25
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
26
|
+
</COVERAGE_PATTERN>
|
27
|
+
</EXTENSION>
|
28
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="test" />
|
29
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
|
30
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE="" />
|
31
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
|
32
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
|
33
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
|
34
|
+
<method />
|
35
|
+
</configuration>
|
36
|
+
<configuration default="false" name="JenkinsUtil" type="RubyRunConfigurationType" factoryName="Ruby">
|
37
|
+
<module name="JenkinsUtil" />
|
38
|
+
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
39
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib" />
|
40
|
+
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
41
|
+
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
42
|
+
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
43
|
+
<envs />
|
44
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
45
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
46
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
47
|
+
<COVERAGE_PATTERN ENABLED="true">
|
48
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
49
|
+
</COVERAGE_PATTERN>
|
50
|
+
</EXTENSION>
|
51
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/JenkinsUtil.rb" />
|
52
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="-k $USER_HOME$/Downloads/Sony_Crackle_Ad_Hoc.mobileprovision -v -p asdf -c "iPhone Developer: Brett McGinnis (2QK9D9UL8S)"" />
|
53
|
+
<method />
|
54
|
+
</configuration>
|
55
|
+
<configuration default="false" name="Run test 'DropboxUtilTest': JenkinsUtil" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
|
56
|
+
<predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
|
57
|
+
<module name="JenkinsUtil" />
|
58
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
59
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$/test" />
|
60
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
61
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
62
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
63
|
+
<envs>
|
64
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
65
|
+
<env name="DROPBOX_ACCESS_TOKEN" value="H6uD6w9Am7AAAAAAAAAAYQBHY9UoaCqpnDwldLvRvJ_BtnMbFSNMxocsJg0i3D7m" />
|
66
|
+
</envs>
|
67
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
68
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
69
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
70
|
+
<COVERAGE_PATTERN ENABLED="true">
|
71
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
72
|
+
</COVERAGE_PATTERN>
|
73
|
+
</EXTENSION>
|
74
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
75
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/test/dropbox_test.rb" />
|
76
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
|
77
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
|
78
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
79
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
80
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
81
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
|
82
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
|
83
|
+
<method />
|
84
|
+
</configuration>
|
85
|
+
</component>
|
86
|
+
<component name="NewModuleRootManager">
|
87
|
+
<content url="file://$MODULE_DIR$">
|
88
|
+
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
89
|
+
<excludeFolder url="file://$MODULE_DIR$/.bundle" />
|
90
|
+
<excludeFolder url="file://$MODULE_DIR$/pkg" />
|
91
|
+
<excludeFolder url="file://$MODULE_DIR$/vendor/bundle" />
|
92
|
+
</content>
|
93
|
+
<orderEntry type="jdk" jdkName="ruby-2.3.0-p0" jdkType="RUBY_SDK" />
|
94
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
95
|
+
<orderEntry type="library" scope="PROVIDED" name="ast (v2.2.0, ruby-2.3.0-p0) [gem]" level="application" />
|
96
|
+
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.2, ruby-2.3.0-p0) [gem]" level="application" />
|
97
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.11.2, ruby-2.3.0-p0) [gem]" level="application" />
|
98
|
+
<orderEntry type="library" scope="PROVIDED" name="ci_reporter (v2.0.0, ruby-2.3.0-p0) [gem]" level="application" />
|
99
|
+
<orderEntry type="library" scope="PROVIDED" name="ci_reporter_test_unit (v1.0.1, ruby-2.3.0-p0) [gem]" level="application" />
|
100
|
+
<orderEntry type="library" scope="PROVIDED" name="docile (v1.1.5, ruby-2.3.0-p0) [gem]" level="application" />
|
101
|
+
<orderEntry type="library" scope="PROVIDED" name="dropbox-sdk (v1.6.5, ruby-2.3.0-p0) [gem]" level="application" />
|
102
|
+
<orderEntry type="library" scope="PROVIDED" name="open4 (v1.3.4, ruby-2.3.0-p0) [gem]" level="application" />
|
103
|
+
<orderEntry type="library" scope="PROVIDED" name="parser (v2.3.0.7, ruby-2.3.0-p0) [gem]" level="application" />
|
104
|
+
<orderEntry type="library" scope="PROVIDED" name="power_assert (v0.2.7, ruby-2.3.0-p0) [gem]" level="application" />
|
105
|
+
<orderEntry type="library" scope="PROVIDED" name="powerpack (v0.1.1, ruby-2.3.0-p0) [gem]" level="application" />
|
106
|
+
<orderEntry type="library" scope="PROVIDED" name="rainbow (v2.1.0, ruby-2.3.0-p0) [gem]" level="application" />
|
107
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v11.1.2, ruby-2.3.0-p0) [gem]" level="application" />
|
108
|
+
<orderEntry type="library" scope="PROVIDED" name="rubocop (v0.39.0, ruby-2.3.0-p0) [gem]" level="application" />
|
109
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.7.5, ruby-2.3.0-p0) [gem]" level="application" />
|
110
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.11.2, ruby-2.3.0-p0) [gem]" level="application" />
|
111
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.10.0, ruby-2.3.0-p0) [gem]" level="application" />
|
112
|
+
<orderEntry type="library" scope="PROVIDED" name="sys-proctable (v1.0.0, ruby-2.3.0-p0) [gem]" level="application" />
|
113
|
+
<orderEntry type="library" scope="PROVIDED" name="test-unit (v3.1.8, ruby-2.3.0-p0) [gem]" level="application" />
|
114
|
+
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v1.0.3, ruby-2.3.0-p0) [gem]" level="application" />
|
115
|
+
</component>
|
116
|
+
<component name="RModuleSettingsStorage">
|
117
|
+
<LOAD_PATH number="1" string0="$USER_HOME$/.rbenv/shims" />
|
118
|
+
<I18N_FOLDERS number="0" />
|
119
|
+
</component>
|
120
|
+
</module>
|
data/.idea/encodings.xml
ADDED
data/.idea/misc.xml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4">
|
3
|
+
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
4
|
+
<OptionsSetting value="true" id="Add" />
|
5
|
+
<OptionsSetting value="true" id="Remove" />
|
6
|
+
<OptionsSetting value="true" id="Checkout" />
|
7
|
+
<OptionsSetting value="true" id="Update" />
|
8
|
+
<OptionsSetting value="true" id="Status" />
|
9
|
+
<OptionsSetting value="true" id="Edit" />
|
10
|
+
<ConfirmationsSetting value="0" id="Add" />
|
11
|
+
<ConfirmationsSetting value="0" id="Remove" />
|
12
|
+
</component>
|
13
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="rbenv: 2.2.3" project-jdk-type="RUBY_SDK" />
|
14
|
+
</project>
|
data/.idea/modules.xml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4">
|
3
|
+
<component name="ProjectModuleManager">
|
4
|
+
<modules>
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/JenkinsUtil.iml" filepath="$PROJECT_DIR$/.idea/JenkinsUtil.iml" />
|
6
|
+
</modules>
|
7
|
+
</component>
|
8
|
+
</project>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
2
|
+
<configuration default="false" name="JenkinsUtil" type="RubyRunConfigurationType" factoryName="Ruby">
|
3
|
+
<module name="JenkinsUtil" />
|
4
|
+
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
5
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib" />
|
6
|
+
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
7
|
+
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
8
|
+
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
9
|
+
<envs />
|
10
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
|
11
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
12
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
13
|
+
<COVERAGE_PATTERN ENABLED="true">
|
14
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
15
|
+
</COVERAGE_PATTERN>
|
16
|
+
</EXTENSION>
|
17
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/JenkinsUtil.rb" />
|
18
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="-k $USER_HOME$/Downloads/Sony_Crackle_Ad_Hoc.mobileprovision -v -p asdf -c "iPhone Developer: Brett McGinnis (2QK9D9UL8S)"" />
|
19
|
+
<method />
|
20
|
+
</configuration>
|
21
|
+
</component>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
2
|
+
<configuration default="false" name="Run test 'DropboxUtilTest': JenkinsUtil" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
|
3
|
+
<predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
|
4
|
+
<module name="JenkinsUtil" />
|
5
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
6
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$/test" />
|
7
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
8
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
9
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
10
|
+
<envs>
|
11
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
12
|
+
<env name="DROPBOX_ACCESS_TOKEN" value="H6uD6w9Am7AAAAAAAAAAYQBHY9UoaCqpnDwldLvRvJ_BtnMbFSNMxocsJg0i3D7m" />
|
13
|
+
</envs>
|
14
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
15
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
16
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
17
|
+
<COVERAGE_PATTERN ENABLED="true">
|
18
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
19
|
+
</COVERAGE_PATTERN>
|
20
|
+
</EXTENSION>
|
21
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
22
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/test/dropbox_test.rb" />
|
23
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
|
24
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
|
25
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
26
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
27
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
28
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
|
29
|
+
<RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
|
30
|
+
<method />
|
31
|
+
</configuration>
|
32
|
+
</component>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<component name="ProjectRunConfigurationManager">
|
2
|
+
<configuration default="false" name="test" type="RakeRunConfigurationType" factoryName="Rake">
|
3
|
+
<module name="JenkinsUtil" />
|
4
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
5
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
6
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
7
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
8
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
9
|
+
<envs />
|
10
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
11
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
12
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
13
|
+
<COVERAGE_PATTERN ENABLED="true">
|
14
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
15
|
+
</COVERAGE_PATTERN>
|
16
|
+
</EXTENSION>
|
17
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_NAME" VALUE="test" />
|
18
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ARGS" VALUE="" />
|
19
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_ATTACHED_TEST_FRAMEWORKS" VALUE="" />
|
20
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_TRACE" VALUE="false" />
|
21
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_DRYRUN" VALUE="false" />
|
22
|
+
<RAKE_RUN_CONFIG_SETTINGS_ID NAME="RAKE_TASK_OPTION_PREREQS" VALUE="false" />
|
23
|
+
<method />
|
24
|
+
</configuration>
|
25
|
+
</component>
|
data/.idea/vcs.xml
ADDED
data/.rbenv-gemsets
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-global
|
data/.rubocop.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2015-12-27 12:27:13 -0800 using RuboCop version 0.35.1.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
Metrics/LineLength:
|
10
|
+
Max: 140
|
11
|
+
|
12
|
+
AllCops:
|
13
|
+
Exclude:
|
14
|
+
- '/**/JenkinsUtil.rb'
|
15
|
+
- '/**/xcode_util.rb'
|
16
|
+
- '/**/command_line_script.rb'
|
17
|
+
- '**/bin/**/*'
|
18
|
+
- '**/exe/**/*'
|
19
|
+
|
20
|
+
Documentation:
|
21
|
+
Enabled: false
|
data/.travis.yml
ADDED
data/Dockerfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
FROM ruby:latest
|
2
|
+
|
3
|
+
MAINTAINER Brett McGinnis brett@l4digital.com
|
4
|
+
|
5
|
+
ARG BUILD_DIR="/build"
|
6
|
+
ARG ARTIFACTS_DIR="/artifacts"
|
7
|
+
ARG BUILD_NUMBER="-1"
|
8
|
+
|
9
|
+
WORKDIR $BUILD_DIR
|
10
|
+
|
11
|
+
RUN apt-get update
|
12
|
+
|
13
|
+
RUN gem install bundler
|
14
|
+
|
15
|
+
ADD . ${BUILD_DIR}
|
16
|
+
|
17
|
+
WORKDIR ${BUILD_DIR}
|
18
|
+
|
19
|
+
RUN bundle install
|
20
|
+
RUN rake ci:setup:testunit test:default build
|
21
|
+
|
22
|
+
RUN mv test/reports ${ARTIFACTS_DIR}/
|
23
|
+
RUN mv pkg/* ${ARTIFACTS_DIR}
|
data/Gemfile
ADDED
data/JenkinsUtil.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'JenkinsUtil/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'jenkinsutil'
|
8
|
+
spec.version = JenkinsUtil::VERSION
|
9
|
+
spec.authors = ['Brett McGinnis']
|
10
|
+
spec.email = ['Brett@L4Digital.com']
|
11
|
+
spec.summary = 'A gem to help with basic tasks in jenkins'
|
12
|
+
|
13
|
+
spec.summary = 'Gem for managing tasks in CI'
|
14
|
+
spec.homepage = 'http://www.l4digital.com/'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = 'exe'
|
19
|
+
spec.executables = ['jenkinsutil']
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.add_dependency 'open4', '~> 1.3'
|
23
|
+
spec.add_dependency 'sys-proctable', '~> 1.0'
|
24
|
+
spec.add_dependency 'dropbox-sdk', '~> 1.6'
|
25
|
+
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
27
|
+
spec.add_development_dependency 'rake', '~> 11.1'
|
28
|
+
spec.add_development_dependency 'test-unit', '~> 3.1'
|
29
|
+
spec.add_development_dependency 'ci_reporter_test_unit', '~> 1.0'
|
30
|
+
spec.add_development_dependency 'simplecov', '~> 0.11'
|
31
|
+
spec.add_development_dependency 'rubocop', '~> 0.39'
|
32
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 Brett McGinnis
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'simplecov'
|
4
|
+
require 'ci/reporter/rake/test_unit'
|
5
|
+
|
6
|
+
Rake::TestTask.new('test:all') do |t|
|
7
|
+
t.libs = ['lib']
|
8
|
+
t.test_files = FileList['test/*test.rb']
|
9
|
+
t.verbose = true
|
10
|
+
end
|
11
|
+
|
12
|
+
Rake::TestTask.new('test:default') do |t|
|
13
|
+
t.libs = ['lib']
|
14
|
+
t.test_files = FileList['test/*test.rb'].exclude('test/*keychain*rb', 'test/*xcode*rb')
|
15
|
+
t.verbose = true
|
16
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "JenkinsUtil"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/exe/jenkinsutil
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
class ArgumentHandler
|
4
|
+
attr_reader :keychain,
|
5
|
+
:keychain_password,
|
6
|
+
:code_signing_identities,
|
7
|
+
:provisioning_profiles,
|
8
|
+
:dropbox_sources,
|
9
|
+
:dropbox_destination,
|
10
|
+
:dropbox_flatten,
|
11
|
+
:dropbox_root,
|
12
|
+
:verbose
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@keychain = nil
|
16
|
+
@keychain_password = nil
|
17
|
+
@code_signing_identities = []
|
18
|
+
@provisioning_profiles = []
|
19
|
+
@dropbox_sources = []
|
20
|
+
@dropbox_destination = nil
|
21
|
+
@dropbox_flatten = true
|
22
|
+
@dropbox_root = Dir.pwd
|
23
|
+
@verbose = false
|
24
|
+
|
25
|
+
if ARGV.length == 0
|
26
|
+
ARGV.push('-h')
|
27
|
+
end
|
28
|
+
|
29
|
+
parser = OptionParser.new do |opts|
|
30
|
+
opts.banner = 'Usage: JenkinsUtil'
|
31
|
+
|
32
|
+
# keychain_util
|
33
|
+
opts.on('-k', '--keychain [KEYCHAIN_PATH]', 'Path to Keychain to be unlocked') do |keychain|
|
34
|
+
@keychain = keychain
|
35
|
+
end
|
36
|
+
|
37
|
+
# keychain_util
|
38
|
+
opts.on('-p', '--keychain-password [KEYCHAIN_PASSWORD]', 'Password for Keychain to be unlocked') do |password|
|
39
|
+
@keychain_password = password
|
40
|
+
end
|
41
|
+
|
42
|
+
# keychain_util
|
43
|
+
opts.on('-c', '--code-signing-identities c1,c2', Array, 'Provisioning Profiles to check after keychain is unlocked') do |identities|
|
44
|
+
@code_signing_identities = identities
|
45
|
+
end
|
46
|
+
|
47
|
+
# keychain_util
|
48
|
+
opts.on('-P', '--provisioning-profiles p1,p2', Array, 'Provisioning Profiles to check after keychain is unlocked') do |profiles|
|
49
|
+
@provisioning_profiles = profiles
|
50
|
+
end
|
51
|
+
|
52
|
+
# dropbox_util
|
53
|
+
opts.on('-s', '--dropbox-sources s1,s2', Array, 'A set of paths/matchers for uploading to dropbox') do |sources|
|
54
|
+
@dropbox_sources = sources
|
55
|
+
end
|
56
|
+
|
57
|
+
# dropbox_util
|
58
|
+
opts.on('-d', '--dropbox-destination x', 'The dropbox destination usually /L4Builds/Path') do |destination|
|
59
|
+
@dropbox_destination = destination
|
60
|
+
end
|
61
|
+
|
62
|
+
# dropbox_util
|
63
|
+
opts.on('-f', '--dropbox-keep-folders', 'If passed file folders will be preserved') do
|
64
|
+
@dropbox_flatten = false
|
65
|
+
end
|
66
|
+
|
67
|
+
# dropbox_util
|
68
|
+
opts.on('-r', '--dropbox-root x', 'The path to remove when uploading defaults to pwd') do |root|
|
69
|
+
@dropbox_root = root
|
70
|
+
end
|
71
|
+
|
72
|
+
# logger_util
|
73
|
+
opts.on('-v', '--verbose', 'Output more information') do
|
74
|
+
@verbose = true
|
75
|
+
end
|
76
|
+
|
77
|
+
opts.on_tail('-h', '--help', 'Show this message') do
|
78
|
+
puts opts
|
79
|
+
abort
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
parser.parse!
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'open4'
|
2
|
+
require 'JenkinsUtil/logger_util'
|
3
|
+
|
4
|
+
class CommandLineScript
|
5
|
+
include LoggerUtil
|
6
|
+
|
7
|
+
attr_reader :command, :pid, :stdin, :stdout, :sterr, :exit_status
|
8
|
+
|
9
|
+
def initialize(command)
|
10
|
+
@command = command
|
11
|
+
|
12
|
+
LoggerUtil.log.debug("Executing: \"#{@command}\"")
|
13
|
+
status = Open4::popen4(@command) do |pid, stdin, stdout, stderr|
|
14
|
+
@pid = pid
|
15
|
+
@stdin = stdin
|
16
|
+
@stdout = stdout.readlines
|
17
|
+
@error = stderr.readlines
|
18
|
+
end
|
19
|
+
|
20
|
+
@exit_status = status.exitstatus
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'dropbox_sdk'
|
2
|
+
require 'JenkinsUtil/logger_util'
|
3
|
+
require 'JenkinsUtil/version'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
module DropboxUtil
|
7
|
+
include LoggerUtil
|
8
|
+
|
9
|
+
attr_reader :uploaded_files
|
10
|
+
|
11
|
+
def self.upload(sources, destination, flatten = true, root = nil)
|
12
|
+
LoggerUtil.fatal('Sources passed is nil') if sources.nil?
|
13
|
+
LoggerUtil.fatal('Destination passed is nil') if destination.nil?
|
14
|
+
LoggerUtil.fatal('Root must be passed if flatten is false') if !flatten && root.nil?
|
15
|
+
LoggerUtil.fatal('Please set environment variable DROPBOX_ACCESS_TOKEN') if ENV['DROPBOX_ACCESS_TOKEN'].nil?
|
16
|
+
|
17
|
+
@dropbox_client ||= DropboxClient.new(ENV['DROPBOX_ACCESS_TOKEN'])
|
18
|
+
@sources = sources
|
19
|
+
@destination = destination
|
20
|
+
@flatten = flatten
|
21
|
+
@root_path = Pathname.new(root) unless root.nil?
|
22
|
+
|
23
|
+
upload_files
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.delete(dropbox_location)
|
27
|
+
@dropbox_client ||= DropboxClient.new(JenkinsUtil::DROPBOX_ACCESS_TOKEN)
|
28
|
+
|
29
|
+
LoggerUtil.fatal('Location passed is nil') if dropbox_location.nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.upload_files
|
33
|
+
LoggerUtil.log.debug(@dropbox_client.account_info.inspect) # Check auth
|
34
|
+
|
35
|
+
@sources.each do |source|
|
36
|
+
source = File.join(source, '**', '*') if File.directory?(source)
|
37
|
+
|
38
|
+
Dir.glob(source).each do|file|
|
39
|
+
upload_and_share(file)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
rescue DropboxAuthError
|
43
|
+
LoggerUtil.fatal('User is not authenticated, please verify access token')
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.dropbox_file_destination(file)
|
47
|
+
if @flatten
|
48
|
+
name_and_extension = File.basename(file)
|
49
|
+
dropbox_destination = File.join(@destination, name_and_extension)
|
50
|
+
else
|
51
|
+
file_path = Pathname.new(file)
|
52
|
+
dropbox_destination = File.join(@destination, file_path.relative_path_from(@root_path))
|
53
|
+
end
|
54
|
+
|
55
|
+
dropbox_destination
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.upload_and_share(file)
|
59
|
+
@uploaded_files ||= []
|
60
|
+
|
61
|
+
dropbox_file = @dropbox_client.put_file(dropbox_file_destination(file), open(file), false)
|
62
|
+
share = @dropbox_client.shares(dropbox_file['path'])
|
63
|
+
|
64
|
+
LoggerUtil.log.info("path: #{dropbox_file['path']}")
|
65
|
+
LoggerUtil.log.info("url: #{share['url']}")
|
66
|
+
end
|
67
|
+
|
68
|
+
private_class_method :upload_files, :dropbox_file_destination, :upload_and_share
|
69
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'JenkinsUtil/command_line_script'
|
2
|
+
require 'JenkinsUtil/logger_util'
|
3
|
+
|
4
|
+
module KeychainUtil
|
5
|
+
include LoggerUtil
|
6
|
+
|
7
|
+
@security_executable = '/usr/bin/security'
|
8
|
+
@identity_regex = /\d+\)\s+.*? "(.*)"/
|
9
|
+
@provisioning_profile_regex = /SHA-1.*: (.*)/
|
10
|
+
|
11
|
+
def self.unlock_keychain(keychain, password, code_signing_identities)
|
12
|
+
unless File.exist?(@security_executable) && File.exist?(keychain)
|
13
|
+
LoggerUtil.log.fatal('security executable or keychain is not found')
|
14
|
+
abort
|
15
|
+
end
|
16
|
+
|
17
|
+
if password.nil? || password.to_s.empty?
|
18
|
+
LoggerUtil.log.fatal('Password is empty')
|
19
|
+
abort
|
20
|
+
end
|
21
|
+
|
22
|
+
exec_unlock_keychain(keychain, password)
|
23
|
+
exec_code_sign_identities(code_signing_identities)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.exec_unlock_keychain(keychain, password)
|
27
|
+
# This command registers keychain in keychain tool
|
28
|
+
CommandLineScript.new("#{@security_executable} list-keychain -s #{keychain}")
|
29
|
+
|
30
|
+
# Unlock key-chain
|
31
|
+
CommandLineScript.new("#{@security_executable} unlock-keychain -p #{password} #{keychain}")
|
32
|
+
|
33
|
+
# Change default timeout
|
34
|
+
CommandLineScript.new("#{@security_executable} set-keychain-settings -lut 7200 #{keychain}")
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.exec_code_sign_identities(desired_identities)
|
38
|
+
code_sign_command = CommandLineScript.new("#{@security_executable} find-identity -p codesigning -v")
|
39
|
+
|
40
|
+
validate_identities(code_sign_command.stdout, desired_identities)
|
41
|
+
end
|
42
|
+
|
43
|
+
# TODO: implment and pass desired_profiles
|
44
|
+
def self.exec_provisioning_profiles
|
45
|
+
CommandLineScript.new("#{@security_executable} find-certificate -a -Z")
|
46
|
+
# check_provisioning_profiles
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.validate_identities(output, code_signing_identities)
|
50
|
+
found_code_signing_identities = []
|
51
|
+
code_signing_identities = Array(code_signing_identities)
|
52
|
+
|
53
|
+
output.each do |identity_string|
|
54
|
+
match = identity_string.to_s.match(@identity_regex)
|
55
|
+
found_code_signing_identities.push(match[1]) unless match.nil?
|
56
|
+
end
|
57
|
+
|
58
|
+
log_identities(code_signing_identities, found_code_signing_identities)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.log_identities(desired_identities, found_identities)
|
62
|
+
log_message = "Identities passed: #{desired_identities}\nIdentities found: #{found_identities}"
|
63
|
+
if (desired_identities.uniq - found_identities.uniq).empty?
|
64
|
+
LoggerUtil.log.info('All passed identities were found')
|
65
|
+
LoggerUtil.log.debug(log_message)
|
66
|
+
else
|
67
|
+
LoggerUtil.log.fatal('Not all code signing identities were found')
|
68
|
+
LoggerUtil.fatal(log_message)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# TODO: implement and use in unlockKeychain
|
73
|
+
def self.check_provisioning_profiles # (find_certificate_output, provisioning_profiles)
|
74
|
+
LoggerUtil.log.debug('Checking Provisioning profiles is not yet implemented')
|
75
|
+
# provisioning_profiles = Array(provisioning_profiles)
|
76
|
+
# cleaned_provisioning_profiles = Array.new
|
77
|
+
# found_provisioning_profiles = Array.new
|
78
|
+
#
|
79
|
+
# # Remove '-' from passed profiles
|
80
|
+
# provisioning_profiles.uniq.each do |provisioning_profile|
|
81
|
+
# cleaned_provisioning_profiles.push(provisioning_profile.to_s.gsub('-', ''))
|
82
|
+
# end
|
83
|
+
#
|
84
|
+
# find_certificate_output.each do |line|
|
85
|
+
# match = line.to_s.match(@provisioning_profile_regex)
|
86
|
+
# unless match.nil?
|
87
|
+
# found_provisioning_profiles.push(match[1])
|
88
|
+
# end
|
89
|
+
# end
|
90
|
+
#
|
91
|
+
# unless (cleaned_provisioning_profiles.uniq - found_provisioning_profiles.uniq).empty?
|
92
|
+
# LoggerUtil.logger.fatal('Not all provisioning profiles were found')
|
93
|
+
# LoggerUtil.logger.fatal("Profiles passed: #{provisioning_profiles}")
|
94
|
+
# LoggerUtil.logger.fatal("Profiles found: #{found_provisioning_profiles}")
|
95
|
+
# abort
|
96
|
+
# else
|
97
|
+
# LoggerUtil.logger.info('All passed provisioning profiles were found')
|
98
|
+
# LoggerUtil.logger.debug("Profiles passed: #{provisioning_profiles}")
|
99
|
+
# LoggerUtil.logger.debug("Profiles found: #{found_provisioning_profiles}")
|
100
|
+
# end
|
101
|
+
end
|
102
|
+
|
103
|
+
private_class_method :validate_identities, :check_provisioning_profiles, :log_identities
|
104
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
module LoggerUtil
|
4
|
+
@logger ||= Logger.new(STDOUT)
|
5
|
+
|
6
|
+
def self.log
|
7
|
+
@logger
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.fatal(message)
|
11
|
+
@logger.fatal(message)
|
12
|
+
abort
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.verbose?(should_be_verbose)
|
16
|
+
if should_be_verbose
|
17
|
+
@logger.level = Logger::DEBUG
|
18
|
+
else
|
19
|
+
@logger.level = Logger::INFO
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'sys/proctable'
|
2
|
+
require 'JenkinsUtil/logger_util'
|
3
|
+
|
4
|
+
module ProcessUtil
|
5
|
+
include Sys
|
6
|
+
|
7
|
+
def self.kill_all_processes(name)
|
8
|
+
ProcTable.ps do |process|
|
9
|
+
if process.comm.to_s == name.to_s
|
10
|
+
begin
|
11
|
+
Process.kill('HUP', process.pid)
|
12
|
+
rescue Errno::ESRCH
|
13
|
+
LoggerUtil.log.debug("Killed process #{process.comm}")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'JenkinsUtil/process_util'
|
2
|
+
require 'JenkinsUtil/command_line_script'
|
3
|
+
require 'JenkinsUtil/logger_util'
|
4
|
+
|
5
|
+
class XcodeUtil
|
6
|
+
def initialize
|
7
|
+
@xcodebuild_version_major = nil
|
8
|
+
|
9
|
+
@default_xcodebuild_path = '/usr/bin/xcodebuild'
|
10
|
+
@ios_simulator_process_name = 'Simulator'
|
11
|
+
|
12
|
+
#xcodebuild flags
|
13
|
+
@xcodebuild_version_flag = '-version'
|
14
|
+
|
15
|
+
unless File.exist?(@default_xcodebuild_path)
|
16
|
+
LoggerUtil.log.fatal("xcodebuild not found: #{@default_xcodebuild_path}")
|
17
|
+
abort
|
18
|
+
end
|
19
|
+
|
20
|
+
get_version
|
21
|
+
end
|
22
|
+
|
23
|
+
def kill_ios_simulator
|
24
|
+
ProcessUtil.kill_all_processes(@ios_simulator_process_name)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_version
|
28
|
+
xcode_process = CommandLineScript.new("#{@default_xcodebuild_path} #{@xcodebuild_version_flag}")
|
29
|
+
@xcodebuild_version_major
|
30
|
+
puts xcode_process.get_output
|
31
|
+
end
|
32
|
+
end
|
data/lib/JenkinsUtil.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'JenkinsUtil/version'
|
2
|
+
require 'JenkinsUtil/command_line_script'
|
3
|
+
require 'JenkinsUtil/keychain_util'
|
4
|
+
require 'JenkinsUtil/xcode_util'
|
5
|
+
require 'JenkinsUtil/argument_handler'
|
6
|
+
require 'JenkinsUtil/logger_util'
|
7
|
+
require 'JenkinsUtil/process_util'
|
8
|
+
require 'JenkinsUtil/dropbox_util'
|
9
|
+
|
10
|
+
module JenkinsUtil
|
11
|
+
include LoggerUtil
|
12
|
+
|
13
|
+
args = ArgumentHandler.new
|
14
|
+
|
15
|
+
LoggerUtil.verbose?(args.verbose)
|
16
|
+
|
17
|
+
# KeychainUtil
|
18
|
+
unless args.keychain.nil? && args.keychain_password.nil?
|
19
|
+
KeychainUtil.unlock_keychain(args.keychain,args.keychain_password, args.code_signing_identities)
|
20
|
+
end
|
21
|
+
|
22
|
+
# DropboxUtil
|
23
|
+
unless args.dropbox_sources.nil? || args.dropbox_sources.empty? || args.dropbox_destination.nil?
|
24
|
+
DropboxUtil.upload(args.dropbox_sources, args.dropbox_destination, args.dropbox_flatten, args.dropbox_root)
|
25
|
+
end
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jenkinsutil
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brett McGinnis
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: open4
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sys-proctable
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: dropbox-sdk
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.6'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.11'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.11'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '11.1'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '11.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: test-unit
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ci_reporter_test_unit
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: simplecov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.11'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.11'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.39'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.39'
|
139
|
+
description:
|
140
|
+
email:
|
141
|
+
- Brett@L4Digital.com
|
142
|
+
executables:
|
143
|
+
- jenkinsutil
|
144
|
+
extensions: []
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- ".gitignore"
|
148
|
+
- ".idea/.name"
|
149
|
+
- ".idea/JenkinsUtil.iml"
|
150
|
+
- ".idea/dictionaries/brettmcginnis.xml"
|
151
|
+
- ".idea/encodings.xml"
|
152
|
+
- ".idea/misc.xml"
|
153
|
+
- ".idea/modules.xml"
|
154
|
+
- ".idea/runConfigurations/JenkinsUtil.xml"
|
155
|
+
- ".idea/runConfigurations/Run_test__DropboxUtilTest___JenkinsUtil.xml"
|
156
|
+
- ".idea/runConfigurations/test.xml"
|
157
|
+
- ".idea/vcs.xml"
|
158
|
+
- ".rbenv-gemsets"
|
159
|
+
- ".rubocop.yml"
|
160
|
+
- ".rubocop_todo.yml"
|
161
|
+
- ".travis.yml"
|
162
|
+
- Dockerfile
|
163
|
+
- Gemfile
|
164
|
+
- JenkinsUtil.gemspec
|
165
|
+
- LICENSE.txt
|
166
|
+
- README.md
|
167
|
+
- Rakefile
|
168
|
+
- bin/console
|
169
|
+
- bin/setup
|
170
|
+
- exe/jenkinsutil
|
171
|
+
- lib/JenkinsUtil.rb
|
172
|
+
- lib/JenkinsUtil/argument_handler.rb
|
173
|
+
- lib/JenkinsUtil/command_line_script.rb
|
174
|
+
- lib/JenkinsUtil/dropbox_util.rb
|
175
|
+
- lib/JenkinsUtil/keychain_util.rb
|
176
|
+
- lib/JenkinsUtil/logger_util.rb
|
177
|
+
- lib/JenkinsUtil/process_util.rb
|
178
|
+
- lib/JenkinsUtil/version.rb
|
179
|
+
- lib/JenkinsUtil/xcode_util.rb
|
180
|
+
homepage: http://www.l4digital.com/
|
181
|
+
licenses:
|
182
|
+
- MIT
|
183
|
+
metadata: {}
|
184
|
+
post_install_message:
|
185
|
+
rdoc_options: []
|
186
|
+
require_paths:
|
187
|
+
- lib
|
188
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
requirements: []
|
199
|
+
rubyforge_project:
|
200
|
+
rubygems_version: 2.6.3
|
201
|
+
signing_key:
|
202
|
+
specification_version: 4
|
203
|
+
summary: Gem for managing tasks in CI
|
204
|
+
test_files: []
|