SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
Inuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTT
February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016
whoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoami
• JJJJJJJJJJJJJJJJJulien Pivotto
• rrrrrrrrrrrrrrrrroidelapluie
• SSSSSSSSSSSSSSSSSysadmin
• FFFFFFFFFFFFFFFFFLOSS since 2004
• IIIIIIIIIIIIIIIIInuits since 2011
• CCCCCCCCCCCCCCCCCentOS CfgMgmtSig
Native packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packages
• RRRRRRRRRRRRRRRRReally? It is still needed?
• PPPPPPPPPPPPPPPPPypi/Rubygems/npm/pear…
• OOOOOOOOOOOOOOOOOmnibus/FPM/…
No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .
It is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easy
gem install fpm
ERROR: Could not find a valid gem `fpm'
(>= 0), here is why:
Unable to download data from https://
rubygems.org/ − Errno::ECONNREFUSED:
Connection refused − connect(2) for "
api.rubygems.org" port 443 (https://api
.rubygems.org/latest_specs.4.8.gz)
I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)
• /////////////////usr/bin/fpm
• ./vendor/bin/fpm
• /////////////////usr/local/bin/fpm
• ~~~~~~~~~~~~~~~~~/.ruby/2.4/gems/rubygems/fpm/bin/fpm
Now I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prod
• DDDDDDDDDDDDDDDDDev: version 1.1
• UUUUUUUUUUUUUUUUUAT (deployed next day): 1.2
• PPPPPPPPPPPPPPPPProd (a week after): 2.0. broken.
Open questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questions
• WWWWWWWWWWWWWWWWWhat is installed?
• WWWWWWWWWWWWWWWWWhere does the file come from?
• CCCCCCCCCCCCCCCCCompilation at install time?
RPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPM
How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011
• hhhhhhhhhhhhhhhhhttps://github.com/roidelapluie/vagrant-
build-mapnik
• /////////////////usr/bin/wget -O /tmp/mapnik.tar.bz2
https://github.com/mapnik-2.0.0.tar.bz2
• /////////////////usr/bin/screen -d -m
/usr/local/bin/build_mapnik.sh
• AAAAAAAAAAAAAAAAAll of that in puppet manifests
I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…
After vagrant provision , wait until the
compilation is done.
You can see the compilations process:
vagrant ssh
sudo screen −r
The packages will be located in the "rpms"
folder.
Building in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VM
cd /opt/mapnik −2.0.0
python scons/scons.py configure PREFIX=${
target} PYTHON_PREFIX=${target}
python scons/scons.py
python scons/scons.py install
FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…
fpm −s dir −n mapnik −v 2.0.0 −−iteration "${
start_date}" 
−C "${target}" −t rpm −−prefix /usr −−url
http://mapnik.org/ 
−−description "Mapnik is a Free Toolkit for
developing mapping applications." 
−−exclude include
Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…
fpm −s dir −n mapnik−devel −v 2.0.0 −−
iteration "${start_date}" 
−C "${target}/include" −t rpm −−prefix /usr/
include −−url http://mapnik.org/ 
−−description "The mapnik−devel package
contains header files for developing
programs using the Mapnik library." 
−−depends "mapnik = 2.0.0"
How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014
• hhhhhhhhhhhhhhhhhttps://github.com/roidelapluie/collectd-
rpm
• SSSSSSSSSSSSSSSSSpec file in collectd upstream
• wwwwwwwwwwwwwwwwwget sources
• iiiiiiiiiiiiiiiiinstall build deps
• rrrrrrrrrrrrrrrrrpmbuild -bb
install build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build deps
egrep "^BuildRequires" collectd −5.5.0/contrib/
redhat/collectd.spec | cut −d `:' −f 2 | tr
−d ` t' | sed `s/,/n/' | uniq | tr −d `
n' | tr `,' ` '|xargs yum install −y
And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?
PackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglovePackaginglove
• hhhhhhhhhhhhhhhhhttp://packaginglove.github.io/packaging-
book/
• CCCCCCCCCCCCCCCCCurrently limited to RPM
• AAAAAAAAAAAAAAAAA pragmatic approach
• DDDDDDDDDDDDDDDDDeb coming
• PPPPPPPPPPPPPPPPPlz contribute
Pick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better tools
• dddddddddddddddddocker instead of vagrant
• yyyyyyyyyyyyyyyyyum/rpm helpers commands
• rrrrrrrrrrrrrrrrreuse/rebuild fedora packages
• ttttttttttttttttthe Cloud ©: copr/travis
RPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpers
• yyyyyyyyyyyyyyyyyum-builddeps install build dependencies
• ssssssssssssssssspectool download the sources
Reuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packages
• ccccccccccccccccclone spec file
• fffffffffffffffffix if needed
dockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdocker
• dddddddddddddddddocker runs on travis
• FFFFFFFFFFFFFFFFFaster than vagrant
• uuuuuuuuuuuuuuuuuseful run options: --rm -v -w -t -i --env
Docker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" image
FROM centos:7
MAINTAINER Julien Pivotto <roidelapluie@inuits
.eu>
RUN yum install −y /usr/bin/wget
RUN yum install −y /usr/bin/spectool
RUN yum install −y /usr/bin/rpmbuild
RUN yum install −y /usr/bin/yum−builddep
RUN yum install −y /usr/bin/make
RUN yum install −y epel−release
Docker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" image
docker build −t el7−build .
Docker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker run
docker run −e XUID="$(id −u)" −−rm −ti −v $PWD
:/work −w /work el7−build ./el7−build.sh
• ------------------rm: do not fill my disk
• -----------------t: allocate a tty
• -----------------i: interactive
• -----------------v $PWD:/work mount current dir on host to
/work in container
• -----------------w /work: use /work as working dir
el7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.sh
useradd −u ${XUID:−1000} rpm
mkdir −p /home/rpm/rpmbuild/SOURCES
spectool −C /home/rpm/rpmbuild/SOURCES −g test
.spec
yum−builddep −y facter.spec
chown −R rpm: /home/rpm
su − rpm −c "rpmbuild −bb /work/facter.spec"
cp −a /home/rpm/rpmbuild/SRPMS/*.src.rpm .
cp −a /home/rpm/rpmbuild/RPMS/*/*.rpm .
Cloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud tools
travis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secrets
• TTTTTTTTTTTTTTTTTravis "secrets" = encrypted variables
• UUUUUUUUUUUUUUUUUse for password, credentials
• VVVVVVVVVVVVVVVVVariables or files
• TTTTTTTTTTTTTTTTThe travis gem
• PPPPPPPPPPPPPPPPPublish to github releases
travis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gem
travis setup releases
travis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.ymltravis.yml
sudo: required
services:
− docker
script:
− make
deploy:
provider: releases
api_key:
secure: Some encrypted stuff
skip_cleanup: true
file_glob: true
file: python−*.rpm
on:
tags: true
coprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcopr
•
hhhhhhhhhhhhhhhhhttps://copr.fedorainfracloud.org/coprs/roidelapl
• fffffffffffffffffedora project
• IIIIIIIIIIIIIIIIInfra to build RPM
• WWWWWWWWWWWWWWWWWeb interface
• pppppppppppppppppublic builds
• llllllllllllllllless limitations than travis
copr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and travis
travis encrypt−file copr−config −−add
echo copr−config > .gitignore
copr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and travis
sudo: required
services:
− docker
script:
− make
before_install:
− openssl aes−256−cbc −K
$encrypted_2ec4d63b6867_key −iv
$encrypted_2ec4d63b6867_iv
−in copr−config.enc −out copr−config −d
MakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefile
el7:
docker run −e XUID="$(shell id −u)" −−rm −v
$(shell pwd):/work −w /work −ti fedora:23
./dockerscript.sh
dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)
#!/bin/bash
set −x;set −e
dnf install −y /usr/bin/spectool /usr/bin/
rpmbuild /usr/bin/copr−cli /usr/bin/python3
−config
useradd −u ${XUID:−1000} bob
mkdir −p /home/bob/rpmbuild/SOURCES
find . −maxdepth 1 −type f −exec cp −v '{}' /
home/bob/rpmbuild/SOURCES ';'
spectool −C /home/bob/rpmbuild/SOURCES −g /
work/boost.spec
chown −R bob: /home/bob
dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)
su − bob −c "rpmbuild −bs /work/boost.spec"
copr−cli −−debug −−config ./copr−config build
boost /home/bob/rpmbuild/SRPMS/*.src.rpm
• rrrrrrrrrrrrrrrrrpmbuild -bs: build only SRPM
• cccccccccccccccccopr-cli --debug is to avoid the 10 minutes
limitation in travis-ci
ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion
ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion
• fffffffffffffffffedora: source of pkgs
• tttttttttttttttttravis/copr: Public builds
• dddddddddddddddddocker: reproducible locally

Mais conteúdo relacionado

Mais procurados

Making Py Pi Sux Less Key
Making Py Pi Sux Less KeyMaking Py Pi Sux Less Key
Making Py Pi Sux Less Key
Andreas Jung
 

Mais procurados (20)

An introduction to the Pulp project
An introduction to the Pulp projectAn introduction to the Pulp project
An introduction to the Pulp project
 
Diving Into Puppet Providers Development: The Puppet-Corosync Module
Diving Into Puppet Providers Development: The Puppet-Corosync ModuleDiving Into Puppet Providers Development: The Puppet-Corosync Module
Diving Into Puppet Providers Development: The Puppet-Corosync Module
 
DNSSec
DNSSecDNSSec
DNSSec
 
Monitoring at Cloud Scale
Monitoring at Cloud ScaleMonitoring at Cloud Scale
Monitoring at Cloud Scale
 
Dive into Puppet 4
Dive into Puppet 4Dive into Puppet 4
Dive into Puppet 4
 
Coworking with git
Coworking with gitCoworking with git
Coworking with git
 
Postgresql 9.0 HA at RMLL 2012
Postgresql 9.0 HA at RMLL 2012Postgresql 9.0 HA at RMLL 2012
Postgresql 9.0 HA at RMLL 2012
 
Linux HA anno 2014
Linux HA anno 2014Linux HA anno 2014
Linux HA anno 2014
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet code
 
11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack 11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack
 
Making Py Pi Sux Less Key
Making Py Pi Sux Less KeyMaking Py Pi Sux Less Key
Making Py Pi Sux Less Key
 
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
 
Onsi Fakhouri at SpringOne Platform 2017
Onsi Fakhouri at SpringOne Platform 2017Onsi Fakhouri at SpringOne Platform 2017
Onsi Fakhouri at SpringOne Platform 2017
 
Logstash and friends
Logstash and friendsLogstash and friends
Logstash and friends
 
Dependency Management With Pinto
Dependency Management With PintoDependency Management With Pinto
Dependency Management With Pinto
 
Chef Conf 2015: Package Management & Chef
Chef Conf 2015: Package Management & ChefChef Conf 2015: Package Management & Chef
Chef Conf 2015: Package Management & Chef
 
Monitoring in an Infrastructure as Code Age
Monitoring in an Infrastructure as Code AgeMonitoring in an Infrastructure as Code Age
Monitoring in an Infrastructure as Code Age
 
Another 7 tools for your #devops stack
Another 7 tools for your #devops stackAnother 7 tools for your #devops stack
Another 7 tools for your #devops stack
 
Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015
 
VCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT WorkshopVCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT Workshop
 

Semelhante a RPM experiments

Quest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFREDQuest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFRED
Andi Smith
 
Speed up your development environment PHP + Nginx + Fedora + PG
Speed up your development environment PHP + Nginx + Fedora + PGSpeed up your development environment PHP + Nginx + Fedora + PG
Speed up your development environment PHP + Nginx + Fedora + PG
Marcus Sá
 

Semelhante a RPM experiments (20)

[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
[BreizhCamp, format 15min] Construire et automatiser l'ecosystème de son Saa...
 
Mojolicious lite
Mojolicious liteMojolicious lite
Mojolicious lite
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Lpreservereurobsd2014
Lpreservereurobsd2014Lpreservereurobsd2014
Lpreservereurobsd2014
 
Snapshots, Replication, and Boot-Environments by Kris Moore
Snapshots, Replication, and Boot-Environments by Kris Moore Snapshots, Replication, and Boot-Environments by Kris Moore
Snapshots, Replication, and Boot-Environments by Kris Moore
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Quest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFREDQuest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFRED
 
Introduction to VeriFast @ Kyoto
Introduction to VeriFast @ KyotoIntroduction to VeriFast @ Kyoto
Introduction to VeriFast @ Kyoto
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
 
Life Preserver - AsiaBSDCon2014
Life Preserver - AsiaBSDCon2014Life Preserver - AsiaBSDCon2014
Life Preserver - AsiaBSDCon2014
 
Swing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and SinatraSwing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and Sinatra
 
Perl dancer
Perl dancerPerl dancer
Perl dancer
 
How To Install OpenFire in CentOS 7
How To Install OpenFire in CentOS 7How To Install OpenFire in CentOS 7
How To Install OpenFire in CentOS 7
 
Pipfile, pipenv, pip… what?!
Pipfile, pipenv, pip… what?!Pipfile, pipenv, pip… what?!
Pipfile, pipenv, pip… what?!
 
Speed up your development environment PHP + Nginx + Fedora + PG
Speed up your development environment PHP + Nginx + Fedora + PGSpeed up your development environment PHP + Nginx + Fedora + PG
Speed up your development environment PHP + Nginx + Fedora + PG
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Deploying Foreman in Enterprise Environments
Deploying Foreman in Enterprise EnvironmentsDeploying Foreman in Enterprise Environments
Deploying Foreman in Enterprise Environments
 
Groovy there's a docker in my application pipeline
Groovy there's a docker in my application pipelineGroovy there's a docker in my application pipeline
Groovy there's a docker in my application pipeline
 
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software Development
 

Mais de Julien Pivotto

Mais de Julien Pivotto (20)

The O11y Toolkit
The O11y ToolkitThe O11y Toolkit
The O11y Toolkit
 
What's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its Ecosystem
 
Prometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is coming
 
What's new in Prometheus?
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?
 
Introduction to Grafana Loki
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana Loki
 
Why you should revisit mgmt
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmt
 
Observing the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From Prometheus
 
Monitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with Prometheus
 
5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery
 
Prometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an Introduction
 
Powerful graphs in Grafana
Powerful graphs in GrafanaPowerful graphs in Grafana
Powerful graphs in Grafana
 
YAML Magic
YAML MagicYAML Magic
YAML Magic
 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress Controller
 
Improved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and Alertmanager
 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with Keycloak
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
 
Incident Resolution as Code
Incident Resolution as CodeIncident Resolution as Code
Incident Resolution as Code
 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
 
An introduction to Ansible
An introduction to AnsibleAn introduction to Ansible
An introduction to Ansible
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

RPM experiments

  • 1. RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016RPM Building in 2016 Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto Inuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTTInuits TTT February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016February 26th, 2016
  • 2. whoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoami • JJJJJJJJJJJJJJJJJulien Pivotto • rrrrrrrrrrrrrrrrroidelapluie • SSSSSSSSSSSSSSSSSysadmin • FFFFFFFFFFFFFFFFFLOSS since 2004 • IIIIIIIIIIIIIIIIInuits since 2011 • CCCCCCCCCCCCCCCCCentOS CfgMgmtSig
  • 3. Native packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packagesNative packages • RRRRRRRRRRRRRRRRReally? It is still needed? • PPPPPPPPPPPPPPPPPypi/Rubygems/npm/pear… • OOOOOOOOOOOOOOOOOmnibus/FPM/…
  • 4. No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .No need for native packages. . .
  • 5. It is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easyIt is so easy gem install fpm ERROR: Could not find a valid gem `fpm' (>= 0), here is why: Unable to download data from https:// rubygems.org/ − Errno::ECONNREFUSED: Connection refused − connect(2) for " api.rubygems.org" port 443 (https://api .rubygems.org/latest_specs.4.8.gz)
  • 6. I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/)I have it installed (4 times :-/) • /////////////////usr/bin/fpm • ./vendor/bin/fpm • /////////////////usr/local/bin/fpm • ~~~~~~~~~~~~~~~~~/.ruby/2.4/gems/rubygems/fpm/bin/fpm
  • 7. Now I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prodNow I can deploy to prod • DDDDDDDDDDDDDDDDDev: version 1.1 • UUUUUUUUUUUUUUUUUAT (deployed next day): 1.2 • PPPPPPPPPPPPPPPPProd (a week after): 2.0. broken.
  • 8. Open questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questionsOpen questions • WWWWWWWWWWWWWWWWWhat is installed? • WWWWWWWWWWWWWWWWWhere does the file come from? • CCCCCCCCCCCCCCCCCompilation at install time?
  • 10. How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011How I built RPM in 2011 • hhhhhhhhhhhhhhhhhttps://github.com/roidelapluie/vagrant- build-mapnik • /////////////////usr/bin/wget -O /tmp/mapnik.tar.bz2 https://github.com/mapnik-2.0.0.tar.bz2 • /////////////////usr/bin/screen -d -m /usr/local/bin/build_mapnik.sh • AAAAAAAAAAAAAAAAAll of that in puppet manifests
  • 11. I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young…I was so young… After vagrant provision , wait until the compilation is done. You can see the compilations process: vagrant ssh sudo screen −r The packages will be located in the "rpms" folder.
  • 12. Building in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VMBuilding in the VM cd /opt/mapnik −2.0.0 python scons/scons.py configure PREFIX=${ target} PYTHON_PREFIX=${target} python scons/scons.py python scons/scons.py install
  • 13. FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things…FPM all the things… fpm −s dir −n mapnik −v 2.0.0 −−iteration "${ start_date}" −C "${target}" −t rpm −−prefix /usr −−url http://mapnik.org/ −−description "Mapnik is a Free Toolkit for developing mapping applications." −−exclude include
  • 14. Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package…Even the devel package… fpm −s dir −n mapnik−devel −v 2.0.0 −− iteration "${start_date}" −C "${target}/include" −t rpm −−prefix /usr/ include −−url http://mapnik.org/ −−description "The mapnik−devel package contains header files for developing programs using the Mapnik library." −−depends "mapnik = 2.0.0"
  • 15. How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014How I built RPM in 2014 • hhhhhhhhhhhhhhhhhttps://github.com/roidelapluie/collectd- rpm • SSSSSSSSSSSSSSSSSpec file in collectd upstream • wwwwwwwwwwwwwwwwwget sources • iiiiiiiiiiiiiiiiinstall build deps • rrrrrrrrrrrrrrrrrpmbuild -bb
  • 16. install build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build depsinstall build deps egrep "^BuildRequires" collectd −5.5.0/contrib/ redhat/collectd.spec | cut −d `:' −f 2 | tr −d ` t' | sed `s/,/n/' | uniq | tr −d ` n' | tr `,' ` '|xargs yum install −y
  • 17. And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?And in 2016?
  • 19. Pick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better toolsPick better tools • dddddddddddddddddocker instead of vagrant • yyyyyyyyyyyyyyyyyum/rpm helpers commands • rrrrrrrrrrrrrrrrreuse/rebuild fedora packages • ttttttttttttttttthe Cloud ©: copr/travis
  • 20. RPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpersRPM/yum helpers • yyyyyyyyyyyyyyyyyum-builddeps install build dependencies • ssssssssssssssssspectool download the sources
  • 21. Reuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packagesReuse fedora packages • ccccccccccccccccclone spec file • fffffffffffffffffix if needed
  • 22. dockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdockerdocker • dddddddddddddddddocker runs on travis • FFFFFFFFFFFFFFFFFaster than vagrant • uuuuuuuuuuuuuuuuuseful run options: --rm -v -w -t -i --env
  • 23. Docker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" image FROM centos:7 MAINTAINER Julien Pivotto <roidelapluie@inuits .eu> RUN yum install −y /usr/bin/wget RUN yum install −y /usr/bin/spectool RUN yum install −y /usr/bin/rpmbuild RUN yum install −y /usr/bin/yum−builddep RUN yum install −y /usr/bin/make RUN yum install −y epel−release
  • 24. Docker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" imageDocker "el7-build" image docker build −t el7−build .
  • 25. Docker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker runDocker run docker run −e XUID="$(id −u)" −−rm −ti −v $PWD :/work −w /work el7−build ./el7−build.sh • ------------------rm: do not fill my disk • -----------------t: allocate a tty • -----------------i: interactive • -----------------v $PWD:/work mount current dir on host to /work in container • -----------------w /work: use /work as working dir
  • 26. el7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.shel7-build.sh useradd −u ${XUID:−1000} rpm mkdir −p /home/rpm/rpmbuild/SOURCES spectool −C /home/rpm/rpmbuild/SOURCES −g test .spec yum−builddep −y facter.spec chown −R rpm: /home/rpm su − rpm −c "rpmbuild −bb /work/facter.spec" cp −a /home/rpm/rpmbuild/SRPMS/*.src.rpm . cp −a /home/rpm/rpmbuild/RPMS/*/*.rpm .
  • 27. Cloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud toolsCloud tools
  • 28. travis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secretstravis secrets • TTTTTTTTTTTTTTTTTravis "secrets" = encrypted variables • UUUUUUUUUUUUUUUUUse for password, credentials • VVVVVVVVVVVVVVVVVariables or files • TTTTTTTTTTTTTTTTThe travis gem • PPPPPPPPPPPPPPPPPublish to github releases
  • 29. travis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gemtravis gem travis setup releases
  • 31. coprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcoprcopr • hhhhhhhhhhhhhhhhhttps://copr.fedorainfracloud.org/coprs/roidelapl • fffffffffffffffffedora project • IIIIIIIIIIIIIIIIInfra to build RPM • WWWWWWWWWWWWWWWWWeb interface • pppppppppppppppppublic builds • llllllllllllllllless limitations than travis
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. copr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and travis travis encrypt−file copr−config −−add echo copr−config > .gitignore
  • 37. copr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and traviscopr and travis sudo: required services: − docker script: − make before_install: − openssl aes−256−cbc −K $encrypted_2ec4d63b6867_key −iv $encrypted_2ec4d63b6867_iv −in copr−config.enc −out copr−config −d
  • 38. MakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefileMakefile el7: docker run −e XUID="$(shell id −u)" −−rm −v $(shell pwd):/work −w /work −ti fedora:23 ./dockerscript.sh
  • 39. dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2)dockerscript.sh (1/2) #!/bin/bash set −x;set −e dnf install −y /usr/bin/spectool /usr/bin/ rpmbuild /usr/bin/copr−cli /usr/bin/python3 −config useradd −u ${XUID:−1000} bob mkdir −p /home/bob/rpmbuild/SOURCES find . −maxdepth 1 −type f −exec cp −v '{}' / home/bob/rpmbuild/SOURCES ';' spectool −C /home/bob/rpmbuild/SOURCES −g / work/boost.spec chown −R bob: /home/bob
  • 40. dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2)dockerscript.sh (2/2) su − bob −c "rpmbuild −bs /work/boost.spec" copr−cli −−debug −−config ./copr−config build boost /home/bob/rpmbuild/SRPMS/*.src.rpm • rrrrrrrrrrrrrrrrrpmbuild -bs: build only SRPM • cccccccccccccccccopr-cli --debug is to avoid the 10 minutes limitation in travis-ci