MuranoCLI 3.1.0.beta.3 → 3.1.0.beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/dockers/Dockerfile.2.2.9 +27 -0
- data/dockers/Dockerfile.2.3.6 +27 -0
- data/dockers/Dockerfile.2.4.3 +27 -0
- data/dockers/Dockerfile.2.5.0 +27 -0
- data/dockers/Dockerfile.GemRelease +47 -0
- data/dockers/Dockerfile.m4 +103 -0
- data/dockers/README.rst +261 -0
- data/dockers/docker-test.sh +97 -0
- data/dockers/gem-release.sh +4 -0
- data/lib/MrMurano/Commander-Entry.rb +2 -0
- data/lib/MrMurano/Config.rb +34 -2
- data/lib/MrMurano/commands/solution.rb +1 -1
- data/lib/MrMurano/makePretty.rb +7 -2
- data/lib/MrMurano/version.rb +1 -1
- data/spec/cmd_common.rb +3 -1
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a496a97244bc5b3c72007dbeca1b1aba1727c5b04d30e0918ee89ea8bdfe7299
|
4
|
+
data.tar.gz: 9c2b8a4552c037a649c09eafe16eeed9ef758c85d2ac091bd13054ad5c5f7056
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fd6b6278866a777328db9aa3921e1e27f239ffdd4d880b97502c50e824d910e3ecaa5e6063cb5b6c8cad1813d6d7d16081cc9f38f53e281a367135a61c21fd4
|
7
|
+
data.tar.gz: e66db775e437b051dcee81a55f84861bb0fca0d022a144ee617cacb5ac3b86809731fdfffcd385e8622e04fa6d85129c08a533869313f25b3fb1989179a3d9e7
|
@@ -0,0 +1,27 @@
|
|
1
|
+
FROM ruby:2.2.9-jessie
|
2
|
+
|
3
|
+
USER root
|
4
|
+
|
5
|
+
ENV LANGUAGE en_US.UTF-8
|
6
|
+
ENV LANG en_US.UTF-8
|
7
|
+
|
8
|
+
RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
|
9
|
+
|
10
|
+
WORKDIR /app
|
11
|
+
COPY . /app
|
12
|
+
|
13
|
+
RUN /bin/chown -R jenkins /app
|
14
|
+
|
15
|
+
USER jenkins
|
16
|
+
|
17
|
+
RUN cd /app && \
|
18
|
+
gem install bundler && \
|
19
|
+
gem install rspec && \
|
20
|
+
bundler install && \
|
21
|
+
rake build
|
22
|
+
|
23
|
+
RUN gem install \
|
24
|
+
pkg/MuranoCLI-$(ruby -e \
|
25
|
+
'require "/app/lib/MrMurano/version.rb"; puts MrMurano::VERSION' \
|
26
|
+
).gem
|
27
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
FROM ruby:2.3.6-jessie
|
2
|
+
|
3
|
+
USER root
|
4
|
+
|
5
|
+
ENV LANGUAGE en_US.UTF-8
|
6
|
+
ENV LANG en_US.UTF-8
|
7
|
+
|
8
|
+
RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
|
9
|
+
|
10
|
+
WORKDIR /app
|
11
|
+
COPY . /app
|
12
|
+
|
13
|
+
RUN /bin/chown -R jenkins /app
|
14
|
+
|
15
|
+
USER jenkins
|
16
|
+
|
17
|
+
RUN cd /app && \
|
18
|
+
gem install bundler && \
|
19
|
+
gem install rspec && \
|
20
|
+
bundler install && \
|
21
|
+
rake build
|
22
|
+
|
23
|
+
RUN gem install \
|
24
|
+
pkg/MuranoCLI-$(ruby -e \
|
25
|
+
'require "/app/lib/MrMurano/version.rb"; puts MrMurano::VERSION' \
|
26
|
+
).gem
|
27
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
FROM ruby:2.4.3-jessie
|
2
|
+
|
3
|
+
USER root
|
4
|
+
|
5
|
+
ENV LANGUAGE en_US.UTF-8
|
6
|
+
ENV LANG en_US.UTF-8
|
7
|
+
|
8
|
+
RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
|
9
|
+
|
10
|
+
WORKDIR /app
|
11
|
+
COPY . /app
|
12
|
+
|
13
|
+
RUN /bin/chown -R jenkins /app
|
14
|
+
|
15
|
+
USER jenkins
|
16
|
+
|
17
|
+
RUN cd /app && \
|
18
|
+
gem install bundler && \
|
19
|
+
gem install rspec && \
|
20
|
+
bundler install && \
|
21
|
+
rake build
|
22
|
+
|
23
|
+
RUN gem install \
|
24
|
+
pkg/MuranoCLI-$(ruby -e \
|
25
|
+
'require "/app/lib/MrMurano/version.rb"; puts MrMurano::VERSION' \
|
26
|
+
).gem
|
27
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
FROM ruby:2.5.0-jessie
|
2
|
+
|
3
|
+
USER root
|
4
|
+
|
5
|
+
ENV LANGUAGE en_US.UTF-8
|
6
|
+
ENV LANG en_US.UTF-8
|
7
|
+
|
8
|
+
RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
|
9
|
+
|
10
|
+
WORKDIR /app
|
11
|
+
COPY . /app
|
12
|
+
|
13
|
+
RUN /bin/chown -R jenkins /app
|
14
|
+
|
15
|
+
USER jenkins
|
16
|
+
|
17
|
+
RUN cd /app && \
|
18
|
+
gem install bundler && \
|
19
|
+
gem install rspec && \
|
20
|
+
bundler install && \
|
21
|
+
rake build
|
22
|
+
|
23
|
+
RUN gem install \
|
24
|
+
pkg/MuranoCLI-$(ruby -e \
|
25
|
+
'require "/app/lib/MrMurano/version.rb"; puts MrMurano::VERSION' \
|
26
|
+
).gem
|
27
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
FROM ruby:2.2.9-jessie
|
2
|
+
|
3
|
+
USER root
|
4
|
+
|
5
|
+
ENV LANGUAGE en_US.UTF-8
|
6
|
+
ENV LANG en_US.UTF-8
|
7
|
+
|
8
|
+
RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
|
9
|
+
|
10
|
+
RUN \
|
11
|
+
echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
|
12
|
+
>> /etc/apt/sources.list \
|
13
|
+
&& echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
|
14
|
+
>> /etc/apt/sources.list \
|
15
|
+
&& apt-get -qq update \
|
16
|
+
&& apt-get install -y curl \
|
17
|
+
&& apt-get install -y bzip2 \
|
18
|
+
&& apt-get install -y tar
|
19
|
+
|
20
|
+
WORKDIR /app
|
21
|
+
COPY . /app
|
22
|
+
|
23
|
+
RUN /bin/chown -R jenkins /app
|
24
|
+
|
25
|
+
USER jenkins
|
26
|
+
|
27
|
+
RUN cd /app && \
|
28
|
+
gem install bundler && \
|
29
|
+
gem install rspec && \
|
30
|
+
bundler install && \
|
31
|
+
rake build
|
32
|
+
|
33
|
+
RUN gem install \
|
34
|
+
pkg/MuranoCLI-$(ruby -e \
|
35
|
+
'require "/app/lib/MrMurano/version.rb"; puts MrMurano::VERSION' \
|
36
|
+
).gem
|
37
|
+
|
38
|
+
# Install github-release.
|
39
|
+
|
40
|
+
RUN mkdir -p /home/jenkins/Downloads && \
|
41
|
+
cd /home/jenkins/Downloads && \
|
42
|
+
curl -L https://github.com/aktau/github-release/releases/download/v0.6.2/linux-amd64-github-release.tar.bz2 | bzcat | tar xf - && \
|
43
|
+
mkdir -p /home/jenkins/bin && \
|
44
|
+
cp bin/linux/amd64/github-release /home/jenkins/bin/github-release
|
45
|
+
|
46
|
+
# vim:tw=0:ts=4:sw=4:noet:ft=conf:
|
47
|
+
|
@@ -0,0 +1,103 @@
|
|
1
|
+
FROM ruby:RUBY_VERSION()-jessie
|
2
|
+
|
3
|
+
dnl # NOTE: Environs from Jenkins, like ${WORKSPACE} or any passwords you
|
4
|
+
dnl # inject, are not available from here (Build Environment setup).
|
5
|
+
dnl #
|
6
|
+
dnl # This is already a given, but just to be clear:
|
7
|
+
USER root
|
8
|
+
|
9
|
+
dnl # Jenkins defaults to the ASCII encoding, but we want UTF-8.
|
10
|
+
dnl #
|
11
|
+
dnl # FIXME/MEH: (lb): Murano CLI still has encoding issues, e.g.,
|
12
|
+
dnl # the highline.say() command crashes on some strings, complaining:
|
13
|
+
dnl #
|
14
|
+
dnl # invalid byte sequence in US-ASCII
|
15
|
+
dnl #
|
16
|
+
dnl # which we currently work around by running Murand CLI in ASCII, e.g.,
|
17
|
+
dnl #
|
18
|
+
dnl # murano --no-progress --no-color --ascii ...
|
19
|
+
dnl #
|
20
|
+
dnl # which means our Jenkins/Docker test is not quite testing how
|
21
|
+
dnl # people usually run the app. Oh well.
|
22
|
+
dnl #
|
23
|
+
dnl # ((lb): I had hoped that setting ENV herein would help, and while it
|
24
|
+
dnl # does change the encoding for the `docker exec` command that Jenkins
|
25
|
+
dnl # runs later, it doesn't fix the "invalid byte sequence" error.)
|
26
|
+
dnl #
|
27
|
+
dnl # NOTE: You cannot change the encoding from the Execute Shell build
|
28
|
+
dnl # command. If you tried, you'd see, e.g.,:
|
29
|
+
dnl #
|
30
|
+
dnl # $ export LC_ALL=en_US.UTF-8
|
31
|
+
dnl # setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
|
32
|
+
dnl #
|
33
|
+
dnl # ALSO: Skip LC_ALL, otherwise when Jenkins runs `docker exec ...` you'll see:
|
34
|
+
dnl #
|
35
|
+
dnl # /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
|
36
|
+
dnl #
|
37
|
+
ENV LANGUAGE en_US.UTF-8
|
38
|
+
ENV LANG en_US.UTF-8
|
39
|
+
|
40
|
+
dnl # Jenkins runs the Execute Shell script on Docker as the 'jenkins' user,
|
41
|
+
dnl # but Docker is confused unless we create that user now and assign it the
|
42
|
+
dnl # UID that gets used. ((lb): This is hacky; Ops might fix this eventually.)
|
43
|
+
dnl #
|
44
|
+
dnl # Without adding the user to the root group and having them run as such,
|
45
|
+
dnl # we'd see Errno::EACCES "Permission denied @ rb_sysopen" errors, and we'd
|
46
|
+
dnl # have to do the hideous, grotesque act of granting permissions to all:
|
47
|
+
dnl #
|
48
|
+
dnl # RUN /bin/chmod -R go+w /app
|
49
|
+
dnl # RUN /bin/chmod 2777 /app
|
50
|
+
dnl #
|
51
|
+
RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
|
52
|
+
|
53
|
+
dnl # (lb): So. Weird. Sometimes the Jenkins Docker Volumes mount with 2755
|
54
|
+
dnl # permissions. Othertimes with 2777. In case this happens again, I'll
|
55
|
+
dnl # leaving this code here. Give jenkins user power to fix permissions on the
|
56
|
+
dnl # mounted Volumes: /app/report and /app/coverage mount as 2755 root:root.
|
57
|
+
dnl # NOTE: Skipping `RUN apt-get upgrade -y` to run faster.
|
58
|
+
dnl # RUN \
|
59
|
+
dnl # echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
|
60
|
+
dnl # >> /etc/apt/sources.list \
|
61
|
+
dnl # && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
|
62
|
+
dnl # >> /etc/apt/sources.list \
|
63
|
+
dnl # && apt-get -qq update \
|
64
|
+
dnl # && apt-get install -y sudo
|
65
|
+
dnl # #RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
66
|
+
dnl # RUN echo "jenkins ALL= NOPASSWD: chmod" >> /etc/sudoers
|
67
|
+
dnl #
|
68
|
+
dnl # Create the /app directory and give ownership to the new user, otherwise
|
69
|
+
dnl # if we switch to the new user first, they cannot create the workdir.
|
70
|
+
dnl #
|
71
|
+
WORKDIR /app
|
72
|
+
COPY . /app
|
73
|
+
|
74
|
+
RUN /bin/chown -R jenkins /app
|
75
|
+
|
76
|
+
dnl # Run as the new jenkins user, otherwise Ruby gem permissions are
|
77
|
+
dnl # restrictive, and we don't want to have to fudge them, e.g.,
|
78
|
+
dnl #
|
79
|
+
dnl # # Madness!
|
80
|
+
dnl # RUN chmod 2777 /usr/local/bundle
|
81
|
+
dnl # RUN chmod 2777 /usr/local/bundle/bin
|
82
|
+
dnl # RUN find /usr/local/bundle -type d -exec chmod 2777 {} +
|
83
|
+
dnl # RUN find /usr/local/bundle -type f -exec chmod u+rw,g+rw,o+rw {} +
|
84
|
+
dnl #
|
85
|
+
dnl # Prepare the bundle and rspec Ruby commands, and build Murano CLI.
|
86
|
+
dnl #
|
87
|
+
USER jenkins
|
88
|
+
|
89
|
+
RUN cd /app && \
|
90
|
+
gem install bundler && \
|
91
|
+
gem install rspec && \
|
92
|
+
bundler install && \
|
93
|
+
rake build
|
94
|
+
|
95
|
+
dnl # Install Murano CLI.
|
96
|
+
dnl #
|
97
|
+
RUN gem install \
|
98
|
+
pkg/MuranoCLI-$(ruby -e \
|
99
|
+
'require "/app/lib/MrMurano/version.rb"; puts MrMurano::VERSION' \
|
100
|
+
).gem
|
101
|
+
|
102
|
+
dnl # vim:tw=0:ts=4:sw=4:noet:ft=conf:
|
103
|
+
dnl
|
data/dockers/README.rst
ADDED
@@ -0,0 +1,261 @@
|
|
1
|
+
########################
|
2
|
+
Murano CLI Jenkins Notes
|
3
|
+
########################
|
4
|
+
|
5
|
+
========================
|
6
|
+
Creating the Dockerfiles
|
7
|
+
========================
|
8
|
+
|
9
|
+
(lb): I tried installing RVM in a bare Ubuntu Docker container, but I ended
|
10
|
+
up down a rabbit hole without any success. Fortunately, there are some ready-
|
11
|
+
made Ruby images available, albeit just for the latest Rubies (i.e., not for
|
12
|
+
Ruby 2.0 or Ruby 2.1). So we'll use these images, and we'll hopefully
|
13
|
+
deprecate support for the older Rubies, and then we won't have to make
|
14
|
+
RVM (or chruby) work.
|
15
|
+
|
16
|
+
Generate Dockerfiles from the M4 template:
|
17
|
+
|
18
|
+
.. code-block:: bash
|
19
|
+
|
20
|
+
for ruby_vers in \
|
21
|
+
"2.5.0" \
|
22
|
+
"2.4.3" \
|
23
|
+
"2.3.6" \
|
24
|
+
"2.2.9" \
|
25
|
+
; do
|
26
|
+
m4 \
|
27
|
+
--define=RUBY_VERSION="${ruby_vers}" \
|
28
|
+
dockers/Dockerfile.m4 \
|
29
|
+
> dockers/Dockerfile.${ruby_vers}
|
30
|
+
done
|
31
|
+
|
32
|
+
===============================================
|
33
|
+
Jenkins project configuration: Murano CLI Tests
|
34
|
+
===============================================
|
35
|
+
|
36
|
+
- Jenkins project:
|
37
|
+
|
38
|
+
- NEW:
|
39
|
+
|
40
|
+
https://jenkins.exosite.com/job/MuranoCLI/job/Murano%20CLI%20Tests%20-%20Ruby%202.3/configure
|
41
|
+
|
42
|
+
- OLD:
|
43
|
+
|
44
|
+
https://build.exosite.com/view/MuranoCLI/job/MrMurano%20Tests/configure
|
45
|
+
|
46
|
+
- General configuration
|
47
|
+
|
48
|
+
- Project name: ``Murano CLI Tests - Ruby 2.3``
|
49
|
+
|
50
|
+
- Discard old builds ``✓``
|
51
|
+
|
52
|
+
- Strategy: ``Log Rotation``
|
53
|
+
|
54
|
+
- Days to keep builds: ``60``
|
55
|
+
|
56
|
+
- Max # builds to keep: ``5``
|
57
|
+
|
58
|
+
- GitHub project ``✓``
|
59
|
+
|
60
|
+
- Project url: https://github.com/exosite/MuranoCLI/
|
61
|
+
|
62
|
+
- Source Code Management
|
63
|
+
|
64
|
+
- Git ``✓``
|
65
|
+
|
66
|
+
- Repositories
|
67
|
+
|
68
|
+
- Repository URL: https://github.com/exosite/MuranoCLI.git
|
69
|
+
|
70
|
+
- Credentials: (SSH key. Set Deploy Key in GitHub; Credentials in Jenkins.)
|
71
|
+
|
72
|
+
- Branches to build
|
73
|
+
|
74
|
+
- Branch Specifier (blank for 'any') : ````
|
75
|
+
|
76
|
+
- Build Triggers
|
77
|
+
|
78
|
+
- GitHub hook trigger for GITScm polling ``✓``
|
79
|
+
|
80
|
+
- Build Environment
|
81
|
+
|
82
|
+
- Build inside a Docker container ``✓``
|
83
|
+
|
84
|
+
- Docker image to use
|
85
|
+
|
86
|
+
- Build from Dockerfile ``✓``
|
87
|
+
|
88
|
+
- path to docker context: ``.``
|
89
|
+
|
90
|
+
- Dockerfile: ``./dockers/Dockerfile.${RUBY_VERS}``
|
91
|
+
|
92
|
+
- [Click Advanced]
|
93
|
+
|
94
|
+
- Volumes
|
95
|
+
|
96
|
+
- Add
|
97
|
+
|
98
|
+
- Path on host: ``$WORKSPACE/report``
|
99
|
+
|
100
|
+
- Path inside container: ``/app/report``
|
101
|
+
|
102
|
+
- Add
|
103
|
+
|
104
|
+
- Path on host: ``$WORKSPACE/coverage``
|
105
|
+
|
106
|
+
- Path inside container: ``/app/coverage``
|
107
|
+
|
108
|
+
- User group: ``root``
|
109
|
+
|
110
|
+
- Container start command: ``/bin/cat``
|
111
|
+
|
112
|
+
- Network bridge: ``bridge``
|
113
|
+
|
114
|
+
- Inject passwords to the build as environment variables ``✓``
|
115
|
+
|
116
|
+
- Job passwords
|
117
|
+
|
118
|
+
- Add
|
119
|
+
|
120
|
+
- Name: ``LANDON_PASSWORD``
|
121
|
+
|
122
|
+
- Password: ``****************``
|
123
|
+
|
124
|
+
- Add
|
125
|
+
|
126
|
+
- Name: ``LANDON_USERNAME``
|
127
|
+
|
128
|
+
- Password: ``****************``
|
129
|
+
|
130
|
+
- Build
|
131
|
+
|
132
|
+
- Execute shell
|
133
|
+
|
134
|
+
- Command::
|
135
|
+
|
136
|
+
#!/bin/bash
|
137
|
+
/app/dockers/docker-test.sh
|
138
|
+
|
139
|
+
- Post-build Actions
|
140
|
+
|
141
|
+
- Publish HTML reports
|
142
|
+
|
143
|
+
- Reports
|
144
|
+
|
145
|
+
- Add
|
146
|
+
|
147
|
+
- HTML directory to archive: ``report``
|
148
|
+
|
149
|
+
- Index page[s]: ``index-2_2_7.html,index-2_3_4.html,index-2_4_1.html``
|
150
|
+
|
151
|
+
- Report title: ``RSpec Report``
|
152
|
+
|
153
|
+
- Add
|
154
|
+
|
155
|
+
- HTML directory to archive: ``coverage``
|
156
|
+
|
157
|
+
- Index page[s]: ``index.html``
|
158
|
+
|
159
|
+
- Report title: ``Coverage Report``
|
160
|
+
|
161
|
+
- E-mail Notification
|
162
|
+
|
163
|
+
- Recipients: ``landonbouma@exosite.com``
|
164
|
+
|
165
|
+
=====================================================
|
166
|
+
Jenkins project configuration: Murano CLI Gem Release
|
167
|
+
=====================================================
|
168
|
+
|
169
|
+
- Jenkins project:
|
170
|
+
|
171
|
+
- NEW:
|
172
|
+
|
173
|
+
*TBD*
|
174
|
+
|
175
|
+
- OLD:
|
176
|
+
|
177
|
+
https://build.exosite.com/view/MuranoCLI/job/MrMurano%20Gem%20Release/configure
|
178
|
+
|
179
|
+
- General configuration
|
180
|
+
|
181
|
+
- Project name: ``Murano CLI Gem Release``
|
182
|
+
|
183
|
+
- Discard old builds ``✓``
|
184
|
+
|
185
|
+
- Strategy: ``Log Rotation``
|
186
|
+
|
187
|
+
- Days to keep builds: ``60``
|
188
|
+
|
189
|
+
- Max # builds to keep: ``5``
|
190
|
+
|
191
|
+
- GitHub project ``✓``
|
192
|
+
|
193
|
+
- Project url: https://github.com/exosite/MuranoCLI/
|
194
|
+
|
195
|
+
- Source Code Management
|
196
|
+
|
197
|
+
- Git ``✓``
|
198
|
+
|
199
|
+
- Repositories
|
200
|
+
|
201
|
+
- Repository URL: https://github.com/exosite/MuranoCLI.git
|
202
|
+
|
203
|
+
- Credentials: (SSH key. Set Deploy Key in GitHub; Credentials in Jenkins.)
|
204
|
+
|
205
|
+
- Branches to build
|
206
|
+
|
207
|
+
- Branch Specifier (blank for 'any') : ``*/tags/*``
|
208
|
+
|
209
|
+
- Build Triggers
|
210
|
+
|
211
|
+
- Poll SCM ``✓``
|
212
|
+
|
213
|
+
- Schedule::
|
214
|
+
|
215
|
+
H/5 * * * *
|
216
|
+
|
217
|
+
- Build Environment
|
218
|
+
|
219
|
+
- Build inside a Docker container ``✓``
|
220
|
+
|
221
|
+
- Docker image to use
|
222
|
+
|
223
|
+
- Build from Dockerfile ``✓``
|
224
|
+
|
225
|
+
- path to docker context: ``.``
|
226
|
+
|
227
|
+
- Dockerfile: ``./dockers/Dockerfile.GemRelease``
|
228
|
+
|
229
|
+
- Inject environment variables to the build process ``✓``
|
230
|
+
|
231
|
+
- Properties Content::
|
232
|
+
|
233
|
+
GITHUB_REPO=MuranoCLI
|
234
|
+
GITHUB_USER=exosite
|
235
|
+
PATH=$HOME/bin:$PATH
|
236
|
+
|
237
|
+
- Inject passwords to the build as environment variables ``✓``
|
238
|
+
|
239
|
+
- Job passwords
|
240
|
+
|
241
|
+
- Name: ``GITHUB_TOKEN``
|
242
|
+
|
243
|
+
- Password: (App token generated on GitHub.)
|
244
|
+
|
245
|
+
- Mask password parameters ``✓``
|
246
|
+
|
247
|
+
- Build
|
248
|
+
|
249
|
+
- Execute shell
|
250
|
+
|
251
|
+
- Command::
|
252
|
+
|
253
|
+
#!/bin/bash
|
254
|
+
/app/dockers/gem-release.sh
|
255
|
+
|
256
|
+
- Post-build Actions
|
257
|
+
|
258
|
+
- Files to archive: ``pkg/MuranoCLI-*.gem``
|
259
|
+
|
260
|
+
FIXME: Missing GitHub & other notifications. See old job.
|
261
|
+
|
@@ -0,0 +1,97 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# This script is called by the Jenkins Build step Execute Shell command,
|
4
|
+
# via `docker exec`.
|
5
|
+
#
|
6
|
+
# This script is run in a Docker container as user 'jenkins'. If Dockerfile
|
7
|
+
# did not set up the user first, you'd permissions issues, and you'd see
|
8
|
+
# weird behavior, such as:
|
9
|
+
#
|
10
|
+
# $ whoami
|
11
|
+
# sudo: unknown uid 1001: who are you?
|
12
|
+
# $ sudo whoami
|
13
|
+
# whoami: cannot find name for user ID 1001
|
14
|
+
# whoami:
|
15
|
+
# $ echo ${USER}
|
16
|
+
# jenkins
|
17
|
+
# $ users
|
18
|
+
# $ groups
|
19
|
+
# cannot find name for group ID 1001
|
20
|
+
# 1001
|
21
|
+
#
|
22
|
+
# To work around this, the Dockerfile calls `useradd ... jenkins`,
|
23
|
+
# and the Jenkins Build Environment "User group" is set to 'root'.
|
24
|
+
# (This
|
25
|
+
|
26
|
+
# Jenkins runs the Build step Execute Shell command from the
|
27
|
+
# ${WORKSPACE} directory, e.g.,
|
28
|
+
#
|
29
|
+
# /tmp/jenkins-ff750fb5/workspace/MuranoCLI/MrMurano Tests
|
30
|
+
#
|
31
|
+
# which is actually outside the Docker container (on the host).
|
32
|
+
#
|
33
|
+
# We use the advanced Docker option, Volumes, to wire our container to
|
34
|
+
# the host. Specifically, Dockerfile wires /app/report and /app/coverage
|
35
|
+
# to ${WORKSPACE}/report and ${WORKSPACE}/coverage, respectively.
|
36
|
+
|
37
|
+
# The Dockerfile uses ENV to change the encoding from ASCII, which
|
38
|
+
# we cannot do from within the container. You should see UTF-8.
|
39
|
+
#
|
40
|
+
# $ echo ${LANG}
|
41
|
+
# en_US.UTF-8
|
42
|
+
|
43
|
+
# Jenkins sets a few environs, like ${WORKSPACE}, and we pull in a few
|
44
|
+
# more from the Jenkins Environment Injector Plugin.
|
45
|
+
|
46
|
+
[[ -z ${WORKSPACE} ]] && echo "ERROR: Expected WORKSPACE to be set" && exit 1
|
47
|
+
|
48
|
+
export MURANO_USERNAME="${LANDON_USERNAME}"
|
49
|
+
export MURANO_PASSWORD="${LANDON_PASSWORD}"
|
50
|
+
|
51
|
+
[[ -z ${MURANO_USERNAME} ]] && echo "ERROR: Please set MURANO_USERNAME" && exit 1
|
52
|
+
[[ -z ${MURANO_PASSWORD} ]] && echo "ERROR: Please set MURANO_PASSWORD" && exit 1
|
53
|
+
|
54
|
+
# Create a basic Murano CLI config indicating the Murano account credentials.
|
55
|
+
|
56
|
+
cat > "${WORKSPACE}/test.run.muranocfg" <<-EOCFB
|
57
|
+
[user]
|
58
|
+
name = landonbouma+jenkins-nix@exosite.com
|
59
|
+
[business]
|
60
|
+
id = hd7opcgbyjfqd7vi
|
61
|
+
[net]
|
62
|
+
host = bizapi.hosted.exosite.io
|
63
|
+
EOCFB
|
64
|
+
export MURANO_CONFIGFILE="${WORKSPACE}/test.run.muranocfg"
|
65
|
+
|
66
|
+
# Switch to the project directory and run tests.
|
67
|
+
|
68
|
+
cd /app
|
69
|
+
|
70
|
+
# Instead of `rake test_clean_up -t`, call CLI directly with --no-color.
|
71
|
+
|
72
|
+
echo "Removing existing solutions from Murano account."
|
73
|
+
|
74
|
+
ruby -Ilib bin/murano solutions expunge -y --no-progress --no-color --ascii
|
75
|
+
|
76
|
+
# Fix the PATH to avoid the error:
|
77
|
+
#
|
78
|
+
# /tmp/jenkins8459777890102160498.sh: line 81: rspec: command not found
|
79
|
+
PATH=${PATH}:/usr/local/bundle/bin
|
80
|
+
|
81
|
+
# (lb): Sometimes the host drive directories mount as root:root with 2755
|
82
|
+
# permissions. But sometimes not. If it starts happening again, you'll see
|
83
|
+
# Errno::EACCES: Permission denied. Uncomment the sudoers code in Dockerfile.
|
84
|
+
# chmod 2777 /app/report
|
85
|
+
# chmod 2777 /app/coverage
|
86
|
+
|
87
|
+
echo "############################################################################################"
|
88
|
+
echo "Testing \"$(murano -v)\" on \"$(ruby -v)\""
|
89
|
+
echo "############################################################################################"
|
90
|
+
|
91
|
+
# Hint: Add `--example "<...>"` to limit the test suite.
|
92
|
+
|
93
|
+
rspec \
|
94
|
+
--format html \
|
95
|
+
--out /app/report/index-${RVERS}.html \
|
96
|
+
--format documentation
|
97
|
+
|
@@ -43,6 +43,8 @@ program :description, %(
|
|
43
43
|
# etc., then do not do progress.
|
44
44
|
# TEST/2017-08-23: Does this work on Windows?
|
45
45
|
ARGV.push('--no-progress') unless $stdout.tty? || ARGV.include?('--no-progress')
|
46
|
+
ARGV.push('--ascii') unless $stdout.tty? || ARGV.include?('--ascii')
|
47
|
+
ARGV.push('--ascii') if ''.encode('ASCII').encoding == __ENCODING__
|
46
48
|
|
47
49
|
default_command :help
|
48
50
|
|
data/lib/MrMurano/Config.rb
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
require 'highline'
|
9
9
|
require 'inifile'
|
10
|
+
require 'os'
|
10
11
|
require 'pathname'
|
11
12
|
require 'rainbow'
|
12
13
|
require 'MrMurano/verbosing'
|
@@ -47,7 +48,7 @@ module MrMurano
|
|
47
48
|
if defined?($cfg) && !$cfg.nil? && $cfg['tool.dry']
|
48
49
|
# $cfg.nil? when run from spec tests that don't load it with:
|
49
50
|
# include_context "CI_CMD"
|
50
|
-
|
51
|
+
warning('--dry: Not writing config file')
|
51
52
|
return
|
52
53
|
end
|
53
54
|
self[:path] = Pathname.new(path) unless path.is_a?(Pathname)
|
@@ -332,13 +333,44 @@ module MrMurano
|
|
332
333
|
root = nil
|
333
334
|
when :project
|
334
335
|
root = @project_dir + CFG_DIR_NAME
|
336
|
+
verbose %(file_at: @project_dir: #{@project_dir} / + #{CFG_DIR_NAME} / #{root})
|
335
337
|
when :user
|
336
338
|
root = Pathname.new(Dir.home) + CFG_DIR_NAME
|
339
|
+
verbose %(file_at: Dir.home: #{Dir.home} / + #{CFG_DIR_NAME} / #{root})
|
337
340
|
when :defaults
|
338
341
|
root = nil
|
339
342
|
end
|
340
343
|
return nil if root.nil?
|
341
|
-
|
344
|
+
begin
|
345
|
+
root.mkpath
|
346
|
+
rescue StandardError => err
|
347
|
+
error %(Failed to "#{root}".mkpath: #{err})
|
348
|
+
verbose %(Dir.pwd: #{Dir.pwd})
|
349
|
+
if OS.windows?
|
350
|
+
# Ref:
|
351
|
+
# https://stackoverflow.com/questions/3258518/ruby-get-available-disk-drives
|
352
|
+
require 'win32ole'
|
353
|
+
file_system = WIN32OLE.new('Scripting.FileSystemObject')
|
354
|
+
drives = file_system.Drives
|
355
|
+
drives.each do |drive|
|
356
|
+
verbose %(Drive "#{drive.DriveLetter}":)
|
357
|
+
verbose Dir.entries(drive.Path + '\\')
|
358
|
+
end
|
359
|
+
if root.to_s[1] == ':'
|
360
|
+
# MUR-5081: (lb): I am confused. The user's error is EINVAL:
|
361
|
+
# in `mkdir': Invalid argument @ dir_s_mkdir - H: (Errno::EINVAL)
|
362
|
+
# Which is very strange. When testing on Windows, I can only generate the
|
363
|
+
# error, ENOENT, "No such file or directory @ dir_s_mkdir - H:." when
|
364
|
+
# trying, e.g., Pathname.new("H:").mkpath, and related. So I'm confused.
|
365
|
+
drive_lr = root.to_s.slice(0, 2)
|
366
|
+
path_start = 2
|
367
|
+
path_start = 3 if root.to_s[2] == '\\'
|
368
|
+
dir_path = root.to_s.slice(path_start, len(root.to_s))
|
369
|
+
verbose %(drive_lr: #{drive_lr} / dir_path: #{dir_path})
|
370
|
+
end
|
371
|
+
end
|
372
|
+
raise
|
373
|
+
end
|
342
374
|
root + name
|
343
375
|
end
|
344
376
|
|
@@ -252,7 +252,7 @@ def solution_delete(name_or_id, use_sol: nil, type: :all, yes: false)
|
|
252
252
|
MrMurano::Verbose.whirly_start('Deleting solutions...')
|
253
253
|
solz.each do |sol|
|
254
254
|
ret = biz.delete_solution(sol.sid)
|
255
|
-
if !ret.is_a?(Hash) && !ret.empty?
|
255
|
+
if ret.nil? || (!ret.is_a?(Hash) && !ret.empty?)
|
256
256
|
MrMurano::Verbose.error("Delete failed: #{ret}")
|
257
257
|
n_faulted += 1
|
258
258
|
else
|
data/lib/MrMurano/makePretty.rb
CHANGED
@@ -20,7 +20,9 @@ module MrMurano
|
|
20
20
|
end
|
21
21
|
HighLine.color_scheme = PRETTIES_COLORSCHEME
|
22
22
|
|
23
|
-
TERM_WIDTH, _rows =
|
23
|
+
TERM_WIDTH, _rows = (
|
24
|
+
!$stdout.tty? && [0, 0] || HighLine::SystemExtensions.terminal_size
|
25
|
+
)
|
24
26
|
|
25
27
|
# rubocop:disable Style/MethodName: "Use snake_case for method names."
|
26
28
|
def self.makeJsonPretty(data, options, indent: nil, object_nl: nil)
|
@@ -92,7 +94,10 @@ module MrMurano
|
|
92
94
|
inter_spaces = (min_width == 0) && 0 || options.one_line && 1 || 3
|
93
95
|
min_width = text.length + inter_spaces unless options.align
|
94
96
|
if !options.one_line && options.align && min_width == 0
|
95
|
-
prefix =
|
97
|
+
prefix = 0
|
98
|
+
if TERM_WIDTH > (raw.length - text.length)
|
99
|
+
prefix = TERM_WIDTH - raw.length - text.length
|
100
|
+
end
|
96
101
|
out += ' ' * prefix
|
97
102
|
raw += ' ' * prefix
|
98
103
|
end
|
data/lib/MrMurano/version.rb
CHANGED
@@ -26,7 +26,7 @@ module MrMurano
|
|
26
26
|
# '3.0.0-beta.2' is changed to '3.0.0.pre.beta.2'
|
27
27
|
# which breaks our build (which expects the version to match herein).
|
28
28
|
# So stick to using the '.pre.X' syntax, which ruby/gems knows.
|
29
|
-
VERSION = '3.1.0.beta.
|
29
|
+
VERSION = '3.1.0.beta.8'
|
30
30
|
EXE_NAME = File.basename($PROGRAM_NAME)
|
31
31
|
SIGN_UP_URL = 'https://exosite.com/signup/'
|
32
32
|
end
|
data/spec/cmd_common.rb
CHANGED
@@ -250,7 +250,9 @@ RSpec.shared_context 'CI_CMD' do
|
|
250
250
|
# +Linked ΓÇÿsyncdowntestprd1e8b4034ΓÇÖ to ΓÇÿsyncdowntestapp23d5135bΓÇÖ
|
251
251
|
#
|
252
252
|
# which we can solve with an encode call. (Or but using norm quotes.)
|
253
|
-
str.
|
253
|
+
str.nil? && "" || str.encode!(
|
254
|
+
'UTF-8', 'UTF-8').tr(%(‘), %(')).tr(%(’), %(')
|
255
|
+
)
|
254
256
|
end
|
255
257
|
|
256
258
|
# *** rb-commander goodies
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: MuranoCLI
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.0.beta.
|
4
|
+
version: 3.1.0.beta.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Conrad Tadpol Tilstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: certified
|
@@ -462,6 +462,15 @@ files:
|
|
462
462
|
- Rakefile
|
463
463
|
- TODO.taskpaper
|
464
464
|
- bin/murano
|
465
|
+
- dockers/Dockerfile.2.2.9
|
466
|
+
- dockers/Dockerfile.2.3.6
|
467
|
+
- dockers/Dockerfile.2.4.3
|
468
|
+
- dockers/Dockerfile.2.5.0
|
469
|
+
- dockers/Dockerfile.GemRelease
|
470
|
+
- dockers/Dockerfile.m4
|
471
|
+
- dockers/README.rst
|
472
|
+
- dockers/docker-test.sh
|
473
|
+
- dockers/gem-release.sh
|
465
474
|
- docs/basic_example.rst
|
466
475
|
- docs/completions/murano_completion-bash
|
467
476
|
- docs/demo.md
|
@@ -656,7 +665,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
656
665
|
version: 1.3.1
|
657
666
|
requirements: []
|
658
667
|
rubyforge_project:
|
659
|
-
rubygems_version: 2.4
|
668
|
+
rubygems_version: 2.7.4
|
660
669
|
signing_key:
|
661
670
|
specification_version: 4
|
662
671
|
summary: Do more from the command line with Murano
|