simple-koji-ci: Start the port to openshift
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
This commit is contained in:
parent
e7d1f38175
commit
19d025a390
7 changed files with 278 additions and 0 deletions
50
playbooks/openshift-apps/simple-koji-ci.yml
Normal file
50
playbooks/openshift-apps/simple-koji-ci.yml
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
- name: make the app be real
|
||||||
|
hosts: os_masters_stg[0]:os_masters
|
||||||
|
user: root
|
||||||
|
gather_facts: False
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "/srv/private/ansible/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: openshift/project
|
||||||
|
app: simple-koji-ci
|
||||||
|
description: Do a scratch build on PRs opened on dist-git
|
||||||
|
appowners:
|
||||||
|
- cverna
|
||||||
|
- pingou
|
||||||
|
|
||||||
|
- role: openshift/keytab
|
||||||
|
app: simple-koji-ci
|
||||||
|
key: simple-koji-ci-keytab
|
||||||
|
secret_name: simple-koji-ci-keytab
|
||||||
|
service: simple-koji-ci
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
app: simple-koji-ci
|
||||||
|
template: imagestream.yml
|
||||||
|
objectname: imagestream.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
app: simple-koji-ci
|
||||||
|
template: buildconfig.yml
|
||||||
|
objectname: buildconfig.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
app: simple-koji-ci
|
||||||
|
template: configmap.yml
|
||||||
|
objectname: configmap.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
app: simple-koji-ci
|
||||||
|
template: deploymentconfig.yml
|
||||||
|
objectname: deploymentconfig.yml
|
||||||
|
|
||||||
|
- role: openshift/start-build
|
||||||
|
app: simple-koji-ci
|
||||||
|
buildname: simple-koji-ci-build
|
||||||
|
objectname: simple-koji-ci-build
|
||||||
|
tags:
|
||||||
|
- build
|
|
@ -0,0 +1,25 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: BuildConfig
|
||||||
|
metadata:
|
||||||
|
name: simple-koji-ci-build
|
||||||
|
labels:
|
||||||
|
environment: "simple-koji-ci"
|
||||||
|
spec:
|
||||||
|
source:
|
||||||
|
git:
|
||||||
|
{% if env == 'staging' %}
|
||||||
|
uri: https://pagure.io/forks/pingou/fedora-ci/simple-koji-ci.git
|
||||||
|
ref: "staging"
|
||||||
|
{% else %}
|
||||||
|
uri: https://pagure.io/fedora-ci/simple-koji-ci/.git
|
||||||
|
ref: "production"
|
||||||
|
{% endif %}
|
||||||
|
strategy:
|
||||||
|
type: Docker
|
||||||
|
triggers:
|
||||||
|
- type: ConfigChange
|
||||||
|
- type: ImageChange
|
||||||
|
output:
|
||||||
|
to:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: simple-koji-ci:latest
|
23
roles/openshift-apps/simple-koji-ci/templates/configmap.yml
Normal file
23
roles/openshift-apps/simple-koji-ci/templates/configmap.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{% macro load_file(filename) %}{% include filename %}{%- endmacro -%}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: simple-koji-ci-fedmsg
|
||||||
|
labels:
|
||||||
|
app: simple-koji-ci
|
||||||
|
data:
|
||||||
|
endpoints.py: |-
|
||||||
|
{{ load_file('endpoints.py') | indent }}
|
||||||
|
runner.cfg: |-
|
||||||
|
{{ load_file('simple_koji_ci.py') | indent }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: simple-koji-ci-krb
|
||||||
|
labels:
|
||||||
|
app: simple-koji-ci
|
||||||
|
data:
|
||||||
|
krb5.conf: |
|
||||||
|
{{ lookup('template', roles_path + '/base/templates/krb5.conf.j2') | indent }}
|
|
@ -0,0 +1,66 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: DeploymentConfig
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: simple-koji-ci
|
||||||
|
name: simple-koji-ci
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
app: simple-koji-ci
|
||||||
|
deploymentconfig: simple-koji-ci
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: simple-koji-ci
|
||||||
|
deploymentconfig: simple-koji-ci
|
||||||
|
spec:
|
||||||
|
hostAliases:
|
||||||
|
- hostnames:
|
||||||
|
- apps.stg.fedoraproject.org
|
||||||
|
ip: 10.5.128.177
|
||||||
|
containers:
|
||||||
|
- name: simple-koji-ci
|
||||||
|
image: simple-koji-ci:latest
|
||||||
|
resources: {}
|
||||||
|
env:
|
||||||
|
- name: KRB5_CONFIG
|
||||||
|
value: /etc/krb/krb5.conf
|
||||||
|
- name: KRB5_CLIENT_KTNAME
|
||||||
|
value: /etc/keytab/koji-keytab
|
||||||
|
- name: OPENSHIFT
|
||||||
|
value: "True"
|
||||||
|
volumeMounts:
|
||||||
|
- name: keytab-volume
|
||||||
|
mountPath: /etc/keytabs
|
||||||
|
readOnly: true
|
||||||
|
- name: simple-koji-ci-krb-volume
|
||||||
|
mountPath: /etc/krb/
|
||||||
|
readOnly: true
|
||||||
|
- name: simple-koji-ci-fedmsg-volumes
|
||||||
|
mountPath: /etc/fedmsg.d
|
||||||
|
readOnly: true
|
||||||
|
volumes:
|
||||||
|
- name: keytab-volume
|
||||||
|
secret:
|
||||||
|
secretName: simple-koji-ci-keytab
|
||||||
|
- name: simple-koji-ci-krb-volume
|
||||||
|
configMap:
|
||||||
|
name: simple-koji-ci-krb
|
||||||
|
- name: simple-koji-ci-fedmsg-volume
|
||||||
|
configMap:
|
||||||
|
name: simple-koji-ci-fedmsg
|
||||||
|
|
||||||
|
triggers:
|
||||||
|
- type: ConfigChange
|
||||||
|
- type: ImageChange
|
||||||
|
imageChangeParams:
|
||||||
|
automatic: true
|
||||||
|
containerNames:
|
||||||
|
- simple-koji-ci
|
||||||
|
from:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: simple-koji-ci:latest
|
35
roles/openshift-apps/simple-koji-ci/templates/endpoints.py
Normal file
35
roles/openshift-apps/simple-koji-ci/templates/endpoints.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# This file is part of fedmsg.
|
||||||
|
# Copyright (C) 2012 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# fedmsg is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# fedmsg is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with fedmsg; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# Authors: Ralph Bean <rbean@redhat.com>
|
||||||
|
#
|
||||||
|
config = dict(
|
||||||
|
# This is a dict of possible addresses from which fedmsg can send
|
||||||
|
# messages. fedmsg.init(...) requires that a 'name' argument be passed
|
||||||
|
# to it which corresponds with one of the keys in this dict.
|
||||||
|
endpoints={
|
||||||
|
# These are here so your local box can listen to the upstream
|
||||||
|
# infrastructure's bus. Cool, right? :)
|
||||||
|
"fedora-infrastructure": [
|
||||||
|
{% if env == 'staging' %}
|
||||||
|
"tcp://stg.fedoraproject.org:9940",
|
||||||
|
{% else %}
|
||||||
|
"tcp://hub.fedoraproject.org:9940",
|
||||||
|
{% endif %}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
)
|
|
@ -0,0 +1,4 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ImageStream
|
||||||
|
metadata:
|
||||||
|
name: "simple-koji-ci"
|
|
@ -0,0 +1,75 @@
|
||||||
|
class TargetTagsDict(dict):
|
||||||
|
"""A dict that returns the key for missing values"""
|
||||||
|
def __missing__(self, key):
|
||||||
|
return key
|
||||||
|
|
||||||
|
def get(self, key, default):
|
||||||
|
"""Normally, get() doesn't go trough __missing__"""
|
||||||
|
return self[key]
|
||||||
|
|
||||||
|
|
||||||
|
config = {
|
||||||
|
'simple-koji-ci.enabled': True,
|
||||||
|
|
||||||
|
'simple-koji-ci.koji': {
|
||||||
|
{% if env == 'staging' %}
|
||||||
|
'server': 'https://koji.stg.fedoraproject.org/kojihub',
|
||||||
|
'weburl': 'https://koji.stg.fedoraproject.org/koji',
|
||||||
|
'git_url': 'https://src.stg.fedoraproject.org/rpms/{package}.git',
|
||||||
|
'krb_principal': 'simple-koji-ci/simple-koji-ci-dev.fedorainfracloud.org@STG.FEDORAPROJECT.ORG',
|
||||||
|
'krb_keytab': '/etc/krb5.simple-koji-ci_simple-koji-ci-dev.fedorainfracloud.org.keytab',
|
||||||
|
{% else %}
|
||||||
|
'server': 'https://koji.fedoraproject.org/kojihub',
|
||||||
|
'weburl': 'https://koji.fedoraproject.org/koji',
|
||||||
|
'git_url': 'https://src.fedoraproject.org/rpms/{package}.git',
|
||||||
|
'krb_principal': 'simple-koji-ci/simple-koji-ci-prod.fedorainfracloud.org@FEDORAPROJECT.ORG',
|
||||||
|
'krb_keytab': '/etc/krb5.simple-koji-ci_simple-koji-ci-prod.fedorainfracloud.org.keytab',
|
||||||
|
{% endif %}
|
||||||
|
# Kerberos configuration to authenticate with Koji. In development
|
||||||
|
# environments, use `kinit <fas-name>@FEDORAPROJECT.ORG` to get a
|
||||||
|
# Kerberos ticket and use the default settings below.
|
||||||
|
'krb_ccache': None,
|
||||||
|
'krb_proxyuser': None,
|
||||||
|
'krb_sessionopts': {'timeout': 3600, 'krb_rdns': False},
|
||||||
|
'opts': {'scratch': True},
|
||||||
|
'priority': 30,
|
||||||
|
'target_tags': TargetTagsDict(master='rawhide'),
|
||||||
|
},
|
||||||
|
|
||||||
|
"simple-koji-ci.cache": {
|
||||||
|
"backend": "dogpile.cache.dbm",
|
||||||
|
"expiration_time": 300,
|
||||||
|
"arguments": {
|
||||||
|
"filename": "/var/tmp/simple-koji-ci-cache.dbm",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{% if env == 'staging' %}
|
||||||
|
"simple-koji-ci.pagure_url" : "https://src.stg.fedoraproject.org",
|
||||||
|
"simple-koji-ci.pagure_token" : "{{ simple_koji_ci_pagure_token_stg }}",
|
||||||
|
{% else %}
|
||||||
|
"simple-koji-ci.pagure_url" : "https://src.fedoraproject.org",
|
||||||
|
"simple-koji-ci.pagure_token" : "{{ simple_koji_ci_pagure_token }}",
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# The time in seconds the-new-hotness should wait for a socket to connect
|
||||||
|
# before giving up.
|
||||||
|
'simple-koji-ci.connect_timeout': 15,
|
||||||
|
# The time in seconds the-new-hotness should wait for a read from a socket
|
||||||
|
# before giving up.
|
||||||
|
'simple-koji-ci.read_timeout': 15,
|
||||||
|
# The number of times the-new-hotness should retry a network request that
|
||||||
|
# that failed for any reason (e.g. read timeout, DNS error, etc)
|
||||||
|
'simple-koji-ci.requests_retries': 3,
|
||||||
|
|
||||||
|
"logging": {
|
||||||
|
"loggers": {
|
||||||
|
"simple_koji_ci": {
|
||||||
|
"level": "DEBUG",
|
||||||
|
"propagate": True,
|
||||||
|
"handlers": ["console"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue