Add openshift-base job
This change adds a PoC job to use openshift as a build resource. Depends-On: Icdb9e800177dc770c58f65b02456a6b904be0666 Change-Id: I74f8fc56b72e40d6b69ed55adc2b44d050f50d3c
This commit is contained in:
parent
e79613fa30
commit
62d1092c3b
|
@ -0,0 +1,68 @@
|
|||
---
|
||||
- name: create project ImageStream spec file
|
||||
copy:
|
||||
dest: "{{ zuul.executor.work_root }}/project_imagestream.yaml"
|
||||
content: |
|
||||
apiVersion: v1
|
||||
kind: ImageStream
|
||||
metadata:
|
||||
generation: 1
|
||||
labels:
|
||||
app: "{{ zuul.project.short_name }}"
|
||||
name: "{{ zuul.project.short_name }}"
|
||||
namespace: "{{ zuul.resource.namespace }}"
|
||||
resourceversion: '1487'
|
||||
spec:
|
||||
lookupPolicy:
|
||||
local: false
|
||||
|
||||
- name: apply project ImageStream
|
||||
command: "oc apply -f {{ zuul.executor.work_root }}/project_imagestream.yaml"
|
||||
|
||||
- name: create project BuildConfig spec file
|
||||
copy:
|
||||
dest: "{{ zuul.executor.work_root }}/project_buildconfig.yaml"
|
||||
content: |
|
||||
apiVersion: v1
|
||||
kind: BuildConfig
|
||||
metadata:
|
||||
labels:
|
||||
app: "{{ zuul.project.short_name }}"
|
||||
name: "{{ zuul.project.short_name }}"
|
||||
namespace: "{{ zuul.resource.namespace }}"
|
||||
resourceVersion: '2488'
|
||||
spec:
|
||||
output:
|
||||
to:
|
||||
kind: ImageStreamTag
|
||||
name: '{{ zuul.project.short_name }}:latest'
|
||||
postCommit: {}
|
||||
resources: {}
|
||||
runPolicy: Serial
|
||||
source:
|
||||
git:
|
||||
ref: master
|
||||
uri: 'http://zuul-merger-server:8080/'
|
||||
type: Git
|
||||
strategy:
|
||||
sourceStrategy:
|
||||
from:
|
||||
kind: ImageStreamTag
|
||||
name: '{{ base_image }}'
|
||||
namespace: openshift
|
||||
type: Source
|
||||
triggers:
|
||||
- type: ImageChange
|
||||
- type: ConfigChange
|
||||
status:
|
||||
lastVersion: 1
|
||||
|
||||
- name: apply project BuildConfig
|
||||
command: "oc apply -f {{ zuul.executor.work_root }}/project_buildconfig.yaml"
|
||||
|
||||
- name: wait for project image built
|
||||
command: oc get builds -o "jsonpath={.items[?(@.metadata.labels.buildconfig!='zuul-merger-server')].status.phase}"
|
||||
register: _project_build
|
||||
retries: 120
|
||||
delay: 1
|
||||
until: "'Complete' in _project_build.stdout"
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- include_tasks: prepare-namespace.yaml
|
||||
- include_tasks: build-project.yaml
|
|
@ -0,0 +1,166 @@
|
|||
---
|
||||
- name: setup kube config
|
||||
shell: >
|
||||
oc --namespace {{ zuul.resource.namespace }} \
|
||||
login {{ zuul.resource.host }} \
|
||||
--insecure-skip-tls-verify={{ zuul.resource.skiptls }} \
|
||||
--token $(echo {{ zuul.resource.token }} | base64 -d)
|
||||
|
||||
# Note: this can probably be simplified by running a ready to use http server.
|
||||
# In this PoC, the http server is constructed using the openshift/httpd-ex template
|
||||
- name: create zuul-merger ImageStream spec file
|
||||
copy:
|
||||
dest: "{{ zuul.executor.work_root }}/zm_imagestream.yaml"
|
||||
content: |
|
||||
apiVersion: v1
|
||||
kind: ImageStream
|
||||
metadata:
|
||||
generation: 1
|
||||
labels:
|
||||
app: zuul-merger-server
|
||||
name: zuul-merger-server
|
||||
namespace: "{{ zuul.resource.namespace }}"
|
||||
resourceversion: '1487'
|
||||
spec:
|
||||
lookupPolicy:
|
||||
local: false
|
||||
|
||||
- name: apply zuul-merger ImageStream
|
||||
command: "oc apply -f {{ zuul.executor.work_root }}/zm_imagestream.yaml"
|
||||
|
||||
- name: create zuul-merger BuildConfig spec file
|
||||
copy:
|
||||
dest: "{{ zuul.executor.work_root }}/zm_buildconfig.yaml"
|
||||
content: |
|
||||
apiVersion: v1
|
||||
kind: BuildConfig
|
||||
metadata:
|
||||
labels:
|
||||
app: zuul-merger-server
|
||||
name: zuul-merger-server
|
||||
namespace: "{{ zuul.resource.namespace }}"
|
||||
resourceVersion: '2488'
|
||||
spec:
|
||||
output:
|
||||
to:
|
||||
kind: ImageStreamTag
|
||||
name: 'zuul-merger-server:latest'
|
||||
postCommit: {}
|
||||
resources: {}
|
||||
runPolicy: Serial
|
||||
source:
|
||||
git:
|
||||
ref: master
|
||||
uri: 'https://github.com/openshift/httpd-ex.git'
|
||||
type: Git
|
||||
strategy:
|
||||
sourceStrategy:
|
||||
from:
|
||||
kind: ImageStreamTag
|
||||
name: 'httpd:2.4'
|
||||
namespace: openshift
|
||||
type: Source
|
||||
triggers:
|
||||
- type: ImageChange
|
||||
- type: ConfigChange
|
||||
status:
|
||||
lastVersion: 1
|
||||
|
||||
- name: apply zuul-merger BuildConfig
|
||||
command: "oc apply -f {{ zuul.executor.work_root }}/zm_buildconfig.yaml"
|
||||
|
||||
- name: create zuul-merger DeploymentConfig spec file
|
||||
copy:
|
||||
dest: "{{ zuul.executor.work_root }}/zm_deploymentconfig.yaml"
|
||||
content: |
|
||||
apiVersion: v1
|
||||
kind: DeploymentConfig
|
||||
metadata:
|
||||
generation: 2
|
||||
labels:
|
||||
app: zuul-merger-server
|
||||
name: zuul-merger-server
|
||||
namespace: "{{ zuul.resource.namespace }}"
|
||||
resourceVersion: '2604'
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
deploymentconfig: zuul-merger-server
|
||||
strategy:
|
||||
resources: {}
|
||||
type: Rolling
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: zuul-merger-server
|
||||
deploymentconfig: zuul-merger-server
|
||||
spec:
|
||||
containers:
|
||||
- image: "172.30.1.1:5000/{{ zuul.resource.namespace }}/zuul-merger-server"
|
||||
# imagePullPolicy: Always
|
||||
name: zuul-merger-server
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
protocol: TCP
|
||||
- containerPort: 8443
|
||||
protocol: TCP
|
||||
resources: {}
|
||||
dnsPolicy: ClusterFirst
|
||||
restartPolicy: Always
|
||||
schedulerName: default-scheduler
|
||||
securityContext: {}
|
||||
terminationGracePeriodSeconds: 30
|
||||
test: false
|
||||
|
||||
- name: apply zuul-merger DeploymentConfig
|
||||
command: "oc apply -f {{ zuul.executor.work_root }}/zm_deploymentconfig.yaml"
|
||||
|
||||
- name: create zuul-merger Service spec file
|
||||
copy:
|
||||
dest: "{{ zuul.executor.work_root }}/zm_service.yaml"
|
||||
content: |
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: zuul-merger-server
|
||||
name: zuul-merger-server
|
||||
namespace: "{{ zuul.resource.namespace }}"
|
||||
resourceVersion: '12063'
|
||||
spec:
|
||||
ports:
|
||||
- name: 8080-tcp
|
||||
port: 8080
|
||||
protocol: TCP
|
||||
targetPort: 8080
|
||||
selector:
|
||||
deploymentconfig: zuul-merger-server
|
||||
sessionAffinity: None
|
||||
type: ClusterIP
|
||||
status:
|
||||
loadBalancer: {}
|
||||
|
||||
- name: apply zuul-merger Service
|
||||
command: "oc apply -f {{ zuul.executor.work_root }}/zm_service.yaml"
|
||||
|
||||
- name: get zuul-merger-server pod name
|
||||
command: oc get pods --field-selector=status.phase=Running -o "jsonpath={.items[?(@.metadata.labels.app=='zuul-merger-server')].metadata.name}"
|
||||
register: _zm_name
|
||||
retries: 120
|
||||
delay: 1
|
||||
until: "'zuul-merger' in _zm_name.stdout"
|
||||
|
||||
- name: prepare dumb bare clone of future state
|
||||
git:
|
||||
repo: "{{ zuul.executor.work_root }}/{{ zuul.project.src_dir }}"
|
||||
dest: "{{ zuul.executor.work_root }}/{{ zuul.project.src_dir }}.git"
|
||||
bare: yes
|
||||
|
||||
- name: update server info
|
||||
command: git update-server-info
|
||||
args:
|
||||
chdir: "{{ zuul.executor.work_root }}/{{ zuul.project.src_dir }}.git"
|
||||
|
||||
- name: copy project future state to the http server
|
||||
command: "oc rsync {{ zuul.executor.work_root }}/{{ zuul.project.src_dir }}.git/ {{ _zm_name.stdout }}:/opt/app-root/src/"
|
||||
|
12
zuul.yaml
12
zuul.yaml
|
@ -26,3 +26,15 @@
|
|||
roles:
|
||||
- zuul: openstack-infra/zuul-jobs
|
||||
timeout: 1800
|
||||
|
||||
- job:
|
||||
name: openshift-base
|
||||
parent: null
|
||||
description: |
|
||||
A base job that build a container image using project future state.
|
||||
pre-run: playbooks/openshift/pre.yaml
|
||||
roles:
|
||||
- zuul: openstack-infra/zuul-jobs
|
||||
timeout: 1800
|
||||
vars:
|
||||
base_image: "python:3.6"
|
||||
|
|
Loading…
Reference in New Issue