mirror of https://github.com/google/oss-fuzz.git
gcb: add build_base_images.py
This commit is contained in:
parent
adcf1d8b0c
commit
afddaf4817
|
@ -0,0 +1,79 @@
|
||||||
|
#!/usr/bin/python2
|
||||||
|
|
||||||
|
"""Build base images on Google Cloud Builder.
|
||||||
|
|
||||||
|
Usage: build_base_images.py
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from oauth2client.client import GoogleCredentials
|
||||||
|
from googleapiclient.discovery import build
|
||||||
|
|
||||||
|
import build as gcb_build
|
||||||
|
|
||||||
|
BASE_IMAGES = [
|
||||||
|
'base-image',
|
||||||
|
'base-clang',
|
||||||
|
'base-builder',
|
||||||
|
'base-runner',
|
||||||
|
'base-runner-debug',
|
||||||
|
]
|
||||||
|
|
||||||
|
TAG_PREFIX = 'gcr.io/clusterfuzz-external/oss-fuzz/infra/'
|
||||||
|
|
||||||
|
|
||||||
|
def get_steps():
|
||||||
|
steps = []
|
||||||
|
|
||||||
|
for base_image in BASE_IMAGES:
|
||||||
|
steps.append({
|
||||||
|
'args': [
|
||||||
|
'build',
|
||||||
|
'-t',
|
||||||
|
TAG_PREFIX + base_image,
|
||||||
|
'.',
|
||||||
|
],
|
||||||
|
'dir': 'infra/base-images/' + base_image,
|
||||||
|
'name': 'gcr.io/cloud-builders/docker',
|
||||||
|
})
|
||||||
|
|
||||||
|
return steps
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
options = {}
|
||||||
|
if "GCB_OPTIONS" in os.environ:
|
||||||
|
options = yaml.safe_load(os.environ["GCB_OPTIONS"])
|
||||||
|
|
||||||
|
build_body = {
|
||||||
|
'source': {
|
||||||
|
'repoSource': {
|
||||||
|
'branchName': 'master',
|
||||||
|
'projectId': 'clusterfuzz-external',
|
||||||
|
'repoName': 'oss-fuzz',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'steps': get_steps(),
|
||||||
|
'timeout': str(4 * 3600) + 's',
|
||||||
|
'options': options,
|
||||||
|
'images': [
|
||||||
|
TAG_PREFIX + base_image for base_image in BASE_IMAGES
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
credentials = GoogleCredentials.get_application_default()
|
||||||
|
cloudbuild = build('cloudbuild', 'v1', credentials=credentials)
|
||||||
|
build_info = cloudbuild.projects().builds().create(projectId='clusterfuzz-external', body=build_body).execute()
|
||||||
|
build_id = build_info['metadata']['build']['id']
|
||||||
|
|
||||||
|
print build_id
|
||||||
|
|
||||||
|
# Create pub/sub topic for build logs.
|
||||||
|
log_topic = gcb_build.create_log_topic(build_id)
|
||||||
|
gcb_build.create_sink(log_topic, build_id)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue