OpenStack의 Gerrit의 Jenkins의 job은 어디에 정의되어 있습니까?
10303 단어 openstack
그럴 때, 평소라면 누군가 '대단한 사람'이 고쳐 줄 것이라고 생각하고, 그 백엔드의 테스트 구조를 생각한 적이 없었다.
그러나, 그럼 조금 기분 나쁘기 때문에, 조금 정도 뒤의 구조를 알아 두자.
그런 이유로, Gerrit의 Jenkins의 job은 어디에서 정의되고 있는 것일까.
OpenStack(Gerrit)에 패치를 내면 이런 일이 나올 것
우선은, 원래 어디의 이야기를 하고 있는지를, 안녕.
Gerrit(OpenStack의 CodeReview 시스템)에 패치를 내면 오른쪽에 Jenkins Check라는 것이 표시된다. 여기가 어떻게 되어 있는가.
각 작업의 세부 사항은 어디에서 볼 수 있습니까?
OpenStack의 jenkins 서버가 7대 있는 것 같다.
https://jenkins < 01-07 >.openstack.org/
각 job의 화면은/job/< jobname > 에서 볼 수 있다.
기본적으로, jenkins의 job의 log의 link가 gerrit에 붙여지기 때문에, 직접 jenkins를 보러 가는 것은 없다고 생각하지만 일단 존재는 알고 있던 것이 좋을 것이다.
다음 질문,
프로젝트와 job의 대응에 대해
무슨 말을 하고 싶은지 말하면, 예를 들어 neutron의 패치를 테스트할 때, 어떤 job을 맞추고, nova의 테스트를 할 때는, 어떤 job을 맞추라고 하는 것을 어디에서 관리하고 있는 것인가? 라고 이야기.
분명히 openstack-infra/project-config에서 jenkins 설정이 관리되는 것 같습니다.
그 안의 zuul/layout.yaml 로 각 프로젝트에서 실행하는 job 가 정의되고 있다.
zuul/layout.yaml
省略
------
- name: openstack/rally
template:
- name: merge-check
- name: python-jobs
- name: python26-jobs
- name: python3-jobs
- name: check-requirements
- name: docs-on-rtfd
- name: publish-to-pypi
check:
- rally-coverage
- gate-rally-install-bare-centos6
- gate-rally-install-bare-precise
- gate-rally-dsvm-rally
- gate-rally-dsvm-rally-cinder
- gate-rally-dsvm-rally-heat
- gate-rally-dsvm-rally-nova
- gate-rally-dsvm-neutron-rally
- gate-rally-dsvm-neutron-unstable
------
省略
이러한 세부 설정은 jenkins/jobs의 파일에 정의되어 있습니다.
그래서,
하나의 작업의 처리 내용을 살펴 보겠습니다.
여기서는 독단과 편견으로 gate-rally-dsvm-rally-nova를 살펴본다.
이것은 jenkins/jobs/rally.yaml에 정의가 있습니다.
jenkins/jobs/rally.yaml
省略
---- 580L
- job-template:
name: 'gate-rally-dsvm-rally-{service}'
node: 'devstack-precise || devstack-trusty'
wrappers:
- build-timeout:
timeout: 125
- timestamps
builders:
- devstack-rally-gate:
scenario: '{service}'
ironic: '0'
neutron: '{neutron}'
zaqar: '0'
large_ops: '0'
publishers:
- devstack-logs
- console-log
- rally-plot
---- 602L
省略
이것을 읽는 방법은 분위기에서 알 수 있다고 생각한다.
builders가 테스트 내용이 되고 있다. 여기서는 devstack-rally-gate를 지정하고 구체적인 처리 내용은 다른 곳에 쓰여있다 (뭐 함수 같은 것)
동일한 파일의 45행에 정의되어 있습니다.
jenkins/jobs/rally.yaml
省略
---- 45L
- builder:
name: devstack-rally-gate
builders:
- link-logs
- devstack-checkout
- shell: |
#!/bin/bash -xe
export PROJECTS="openstack/rally $PROJECTS"
export PROJECTS="openstack/ceilometer $PROJECTS"
export CEILOMETER_NOTIFICATION_TOPICS=notifications,profiler
export DEVSTACK_GATE_NEUTRON={neutron}
export DEVSTACK_GATE_IRONIC={ironic}
export DEVSTACK_GATE_ZAQAR={zaqar}
export DEVSTACK_GATE_TEMPEST_LARGE_OPS={large_ops}
export DEVSTACK_GATE_EXERCISES=0
export DEVSTACK_GATE_TIMEOUT=120
export DEVSTACK_LOCAL_CONFIG="enable_plugin sahara git://git.openstack.org/openstack/sahara"
export RALLY_SCENARIO={scenario}
ENABLED_SERVICES=sahara,key,horizon,
ENABLED_SERVICES+=cinder,c-api,c-vol,c-sch,c-bak
ENABLED_SERVICES+=g-api,g-reg,
ENABLED_SERVICES+=heat,h-api,h-api-cfn,h-api-cw,h-eng,
ENABLED_SERVICES+=n-api,n-crt,n-obj,n-cpu,n-sch,n-cond,
ENABLED_SERVICES+=s-proxy,s-account,s-container,s-object,
ENABLED_SERVICES+=ceilometer-acompute,ceilometer-acentral,ceilometer-api,
ENABLED_SERVICES+=ceilometer-anotification,ceilometer-collector,
ENABLED_SERVICES+=ceilometer-alarm-evaluator,ceilometer-alarm-notifier,
if [ $DEVSTACK_GATE_NEUTRON -ne 1 ]; then
ENABLED_SERVICES+=n-net,n-api-meta,
fi
if [ $DEVSTACK_GATE_IRONIC -ne 0 ]; then
ENABLED_SERVICES+=ironic,ir-api,ir-cond,
fi
export ENABLED_SERVICES
# TODO(mrostecki): Remove this if statement after implementing
# Devstack plugin in Rally.
if [ -d $BASE/new/rally/devstack ]; then
# New-style Devstack integration
export DEVSTACK_LOCAL_CONFIG="enable_plugin rally git://git.openstack.org/openstack/rally"
else
# Old-style Devstack integration
ENABLED_SERVICES+=rally,
function pre_test_hook {{
# Install rally-devstack integration
cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/
}}
export -f pre_test_hook
fi
function post_test_hook {{
$BASE/new/rally/tests/ci/rally-gate.sh
}}
export -f post_test_hook
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
./safe-devstack-vm-gate-wrap.sh
----
省略
link-logs라든지 devstack-check라든지 여기서도, 또 다른 builder를 참조하고 있다.
여러가지 파일로부터 불리는 것이 상정되고 있다, builder는, jenkins/jobs/macros.yaml 에 정의되고 있으므로, 거기를 보면 좋다.
빈번하게, 커밋하는 프로젝트라든가는, 일대로 job를 봐 두는 것이 좋을지도.
Reference
이 문제에 관하여(OpenStack의 Gerrit의 Jenkins의 job은 어디에 정의되어 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ukinau/items/d53767a4953eb0285c8b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)