// Copyright 2016 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// // Jenkins build script for base images. def dockerOptions="--no-cache" // Flattens all intermediate layers of the image. // Usefull when image has lots of deleted files. def flattenDockerImage(image) { def containerName = image.replaceAll('/', '_') + "-tmp"; sh "echo ${image} ${containerName}" sh "docker rm -f ${containerName} || true" sh "docker run --name ${containerName} ${image} /bin/true" sh "docker export ${containerName} | docker import - ${image}" } node { git url: 'https://github.com/google/oss-fuzz/' stage name: 'Build ossfuzz/base', concurrency: 1 sh "docker build $dockerOptions --pull -t ossfuzz/base infra/base-images/base" stage name: 'Build ossfuzz/base-clang', concurrency: 1 sh "docker build $dockerOptions -t ossfuzz/base-clang infra/base-images/base-clang" // flattenDockerImage("ossfuzz/base-clang") stage name: 'Build ossfuzz/base-libfuzzer', concurrency: 1 sh "docker build $dockerOptions -t ossfuzz/base-libfuzzer infra/base-images/base-libfuzzer" stage name: 'Build ossfuzz/libfuzzer-runner', concurrency: 1 sh "docker build $dockerOptions -t ossfuzz/libfuzzer-runner infra/base-images/libfuzzer-runner" // Show docker images tree sh "docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz images -t" }