Practical continuous quality gates for development process
-
Upload
andrii-soldatenko -
Category
Internet
-
view
2.285 -
download
6
Transcript of Practical continuous quality gates for development process
Practical continuous quality gates for
development process
Andrii Soldatenko 26-27 February 2016
@a_soldatenko
CI 101
"At regular intervals, the process of "continuous integration" yields
executable releases that grow in functionality at every release. ... It is
through these milestones that management can measure progress and quality, and hence anticipate,
identify, and then actively attach risks on an ongoing basis." --
Tip: use plugins.txt
cat Dockerfile
FROM jenkinsCOPY plugins.txt /usr/share/jenkins/ref/RUN /usr/local/bin/plugins.sh /usr/share/jenkins/ref/plugins.txt
Tip: use plugins.txt
$ cat plugins.txtcredentials:1.18github-oauth:0.22.2shiningpanda:0.22xunit:1.100postbuild-task:1.8ghprb:1.30.4jenkins-multijob-plugin:1.20
Wuala we see plugins
$ cat plugins.txtcredentials:1.18github-oauth:0.22.2shiningpanda:0.22xunit:1.100postbuild-task:1.8ghprb:1.30.4jenkins-multijob-plugin:1.20
2. What can you do with Jenkins REST API?
• retrieve information from Jenkins for programmatic consumption.
• trigger a new build • create/copy jobs
Create/copy jobs<project>
<actions/><description/><keepDependencies>false</keepDependencies><properties/><scm class="hudson.scm.NullSCM"/><canRoam>true</canRoam><disabled>false</disabled><blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding><blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/><concurrentBuild>false</concurrentBuild><builders/><publishers/><buildWrappers/>
</project>
Install JJB
git clone https://git.openstack.org/openstack-infra/jenkins-job-builder
cd jenkins-job-builder
python setup.py install
jenkins-jobs --help
usage: jenkins-jobs …
JJB Tip #1:Configure settings
cat /etc/jenkins_jobs/jenkins_jobs.ini-sample
[job_builder]ignore_cache=True
[jenkins]user=andriisoldatenkopassword=passwordurl=192.168.99.100:8080
JJB Tip #3: Updating/Delete Jenkins Jobs
# Update Jenkins Job jenkins-jobs --conf jenkins_jobs.ini \ update templates002.yaml # Delete Jenkins Job jenkins-jobs --conf jenkins_jobs.ini \ delete simple
JJB Example yaml template:
- job: name: regression_testing parameters: - string: name: one_param default: origin/master builders: - shining-panda: publishers: - email: recipients: [email protected]
Cons JJB:publishers: - raw: xml: | <hudson.tasks.junit.JUnitResultArchiver> <testResults>reports/*.xml</testResults> <keepLongStdio>false</keepLongStdio> <testDataPublishers> <hudson.plugins.sauce__ondemand.SauceOnDemandReportPublisher /> </testDataPublishers> <healthScaleFactor>1.0</healthScaleFactor> </hudson.tasks.junit.JUnitResultArchiver>
Slack and JJB- project: name: foo properties: - slack: notify-start: true include-test-summary: true show-commit-list: true room: '#jenkins' token: secret team-domain: example.com include-custom-message: true custom-message: message
publishers: - slack: team-domain: example.com auth-token: secret build-server-url: https://jenkins.example.com room: '#jenkins'
https://goo.gl/F513DU
Flaky Test Analyzer
Parse build logsGet all failed build ids
Return list of flaky tests
https://goo.gl/OZm0rA
Final Thoughts
• to be continuous integration • use yaml, git and jjb if possible • use more practical tips • read more books
Thank You
Your feedback is very
valuable and will help me
to continuously improve
my talks https://asoldatenko.com