1818# OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
1919# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2020
21- import os , re , tempfile , json
21+ import os , re , tempfile , json , base64
2222from webdevops import Command
2323from .BaseDockerTaskLoader import BaseDockerTaskLoader
2424from .BaseTaskLoader import BaseTaskLoader
@@ -75,18 +75,18 @@ def task_run(dockerfile, configuration, task):
7575 tmp_suffix = '.%s_%s_%s.tmp' % (dockerfile ['image' ]['repository' ], dockerfile ['image' ]['imageName' ], dockerfile ['image' ]['tag' ])
7676 test_dockerfile = tempfile .NamedTemporaryFile (prefix = 'Dockerfile.' , suffix = tmp_suffix , dir = configuration .get ('serverspecPath' ), bufsize = 0 , delete = False )
7777
78- # serverspec options
79- serverspec_opts = []
80- serverspec_opts .extend (['--pattern' , spec_path ])
81-
82- # serverspec env
83- serverspec_env = DockerTestServerspecTaskLoader .generate_serverspec_environment (
78+ # serverspec conf
79+ serverspec_conf = DockerTestServerspecTaskLoader .generate_serverspec_configuration (
8480 path = os .path .basename (test_dockerfile .name ),
8581 dockerfile = dockerfile ,
8682 configuration = configuration ,
8783 is_toolimage = is_toolimage
8884 )
8985
86+ # serverspec options
87+ serverspec_opts = []
88+ serverspec_opts .extend ([spec_path , dockerfile ['image' ]['fullname' ], base64 .b64encode (json .dumps (serverspec_conf )), os .path .basename (test_dockerfile .name )])
89+
9090 # dockerfile content
9191 dockerfile_content = DockerTestServerspecTaskLoader .generate_dockerfile (
9292 dockerfile = dockerfile ,
@@ -103,15 +103,13 @@ def task_run(dockerfile, configuration, task):
103103 print ' path: %s' % (spec_path )
104104 print ' args: %s' % (' ' .join (serverspec_opts ))
105105 print ''
106- print 'environment :'
107- print '------------'
108- print json .dumps (serverspec_env , indent = 4 , sort_keys = True )
106+ print 'spec configuration :'
107+ print '------------------- '
108+ print json .dumps (serverspec_conf , indent = 4 , sort_keys = True )
109109 print ''
110110 print 'Dockerfile:'
111111 print '-----------'
112112 print dockerfile_content
113-
114- os .remove (test_dockerfile .name )
115113 return True
116114
117115 # check if we have any tests
@@ -123,10 +121,6 @@ def task_run(dockerfile, configuration, task):
123121 cmd = ['bash' , 'serverspec.sh' ]
124122 cmd .extend (serverspec_opts )
125123
126- # Set environment variables
127- env = os .environ .copy ()
128- env .update (serverspec_env )
129-
130124 # create Dockerfile
131125 with open (test_dockerfile .name , mode = 'w' , buffering = 0 ) as f :
132126 f .write (dockerfile_content )
@@ -137,7 +131,7 @@ def task_run(dockerfile, configuration, task):
137131 test_status = False
138132 for retry_count in range (0 , configuration .get ('retry' )):
139133 try :
140- test_status = Command .execute (cmd , cwd = configuration .get ('serverspecPath' ), env = env )
134+ test_status = Command .execute (cmd , cwd = configuration .get ('serverspecPath' ))
141135 except Exception as e :
142136 print e
143137 pass
@@ -149,23 +143,22 @@ def task_run(dockerfile, configuration, task):
149143 else :
150144 print ' failed, giving up'
151145
152- os .remove (test_dockerfile .name )
153146 return test_status
154147
155148 @staticmethod
156- def generate_serverspec_environment (path , dockerfile , configuration , is_toolimage = False ):
149+ def generate_serverspec_configuration (path , dockerfile , configuration , is_toolimage = False ):
157150 """
158- Generate serverspec environment dict
151+ Generate serverspec configuration dict
159152 """
160153 ret = {}
161154
162155 # add default vars
163- default_env_list = configuration .get ('dockerTest.environment .default' , False )
156+ default_env_list = configuration .get ('dockerTest.configuration .default' , False )
164157 if default_env_list :
165158 ret = default_env_list .to_dict ().copy ()
166159
167160 # add docker image specific vars
168- image_env_list = configuration .get ('dockerTest.environment .image' )
161+ image_env_list = configuration .get ('dockerTest.configuration .image' )
169162 if image_env_list :
170163 image_env_list = image_env_list .to_dict ().copy ()
171164 for term in image_env_list :
@@ -191,6 +184,7 @@ def generate_dockerfile(dockerfile, configuration, is_toolimage=False):
191184
192185 ret .append ('FROM %s' % dockerfile ['image' ]['fullname' ])
193186 ret .append ('COPY conf/ /' )
187+ ret .append ('RUN echo "%s" > /DOCKER.IMAGENAME' % dockerfile ['image' ]['fullname' ])
194188
195189 if is_toolimage :
196190 ret .append ('RUN chmod +x /loop-entrypoint.sh' )
0 commit comments