Tito Miroslav Suchý Red Hat 17. 9. 2010.

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

Version Control, Revision Control Software Configuration Management.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git: Part 1 Overview & Object Model These slides were largely cut-and-pasted from tutorial/, with some additions.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
Downloading & Installing Software Chapter 13. Maintaining the System Yum Pirut BitTiorrent Rpm Keeping Software Up To Date Up2date Red Hat Network Wget.
Git. What’s Git? A British swear A Distributed Version Control System Developed in 2005 by Linus Torvalds for use on the Linux Kernel Git Logo by Jason.
Dustin Harman VM Workshop 2015 RPM Basics. What is RPM? Red Hat Package Manager Native package manager on RHEL, Fedora, SUSE, some Mandriva RPM/SRPM files.
Package Management How to use rpms. Topics The Problem of Software Installation Package Management Systems Using RPM Finding RPMs Building RPMs.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
…using Git/Tortoise Git
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
Introduction to Version Control with Git CSC/ECE 517, Fall 2014 A joint project of the CSC/ECE 517 staff, including Titus Barik, Gaurav Tungatkar, Govind.
March 11, 2008 USCMS Tier-2 Workshop Oh Dear God Alain made a PowerPoint presentation 1.
Page 1 TBD 12/08/2014 Formation GIT Laurent Kappel Groupe SII 65, rue de Bercy Paris Tél : Fax :
12 CVS Mauro Jaskelioff (originally by Gail Hopkins)
Yannick Patois - Datagrid Software Repository Presentation - March, n° 1 Datagrid Software Repository Presentation CVS, packages and automatic.
Falcons Git Usage Andre Pool Version 2.0 October 2015 / Veldhoven.
Separate distribution of the analysis code (and more) P. Hristov 19/03/2014.
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
Git How to 1. Why Git To resolve problems in lab exams (accidental deletions) Use existing Libraries with ease (Statistics and Computer) Prepare undergraduates.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Luke Macken [ bodhi ]. ● History of Fedora updates ● bodhi ● goals ● features ● architecture ● using ● testing/qa ● hacking ● future ideas [ overview.
System Administration Application Management. ● A common task for a system administrator is the installation, updating and removal of software. Several.
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
Git for bzr users October Aurélien Gâteau An attempt at making you comfortable when you have to work with a git repository.
Getting Started in RPM Packaging Izhar Firdaus / KageSenshi Contributor Fedora Project
Spacewalk + Fedora = 42. What is Spacewalk? A systems management platform designed to provide complete lifecycle management of the operating system and.
Into Fedora RPM packages Lubomir Rintel Presented by Fedora Package Maintainer Creative Commons Attribution-ShareAlike license applies. Packaging Gems.
Perl in RPM-Land Dave Cross Magnum Solutions Ltd YAPC::Europe 15 th August 2008.
1 April 2, Software Packaging and Releasing Best Practices William Cohen NCSU CSC 591W April 2, 2008.
Backing up a machine with git
Workshop: Advanced Packaging
Karsten Wade Sr. Developer Community Mgr, Red Hat.
RPM101: A gentle intro to creating your own packages Richard Keech Red Hat Asia-Pacific.
Building Good RPM Packages
New Tools Used by the Scientific Linux Team
Introduction to GitHub
Information Systems and Network Engineering Laboratory II
Build process of ovirt-node and the plugins
How to make good RPM Packages
RPM Packaging for Sysadmins
Version Control Systems
11 Version control (part 2)
Rebuilding Modules and Containers
Software Packaging and Releasing
Git Practice walkthrough.
Packaging Example All Hands Meeting, Padova,
COMP Introduction to Operating Systems Project 1 – Installing CentOS
CSE 303 Concepts and Tools for Software Development
Going the open source way
Spacewalk and Koji at Fermilab
Opyum: offline package management with Yum -- Debarshi Ray
June 2011 David Front Weizmann Institute
Let’s start with some questions:
The Websites Team Robert Mayr (robyduck).
Version Control System
More Scripting & Chapter 11
RedHat Package Management
Akshay Narayan git up to speed with RCS Akshay Narayan
Anatomy of a Git Project
CVS Concurrent Versioning System
Git CS Fall 2018.
Version Control System - Git
Version control with Git
Perl in RPM-Land Dave Cross Magnum Solutions Ltd YAPC::Europe
Git Fundamentals.
Git Introduction.
Presentation transcript:

Tito Miroslav Suchý Red Hat 17. 9. 2010

Common cases one product one package one repository pack everything in one tar.gz

Spacewalk 84 packages 10-20 new releases of packages each day plus testing rpms not possible to do it manualy create tar reproducible way

History Makefile - too much escaping, hard to read Tito - in python, plugins...

What Tito does? Tag new releases with incremented RPM version or release. Auto-generate spec file changelog based on git history since last tag. Create reliable tar.gz's with consistent checksums from any tag. Build source and binary rpms off any tag. Build source and binary "test" rpms off most recently committed code. Build multiple source rpms with appropriate disttag's for submission to the Koji build system

What Tito do? (cont.) Vary the way packages are built/tagged. Report on any diffs or commits messages missing since last tag. Build packages off an "upstream" git repository, where modifications in the "downstream" git repository will be applied as a patch in the source rpm. Manage all of the above for a git repository with many disjoint packages within it.

Quick start $ tito tag $ tito build --rpm --test $ tito build --release

Initialization $ tito init Create files: ./rel-eng ./rel-eng/packages ./rel-eng/tito.props

Project props $ cat ./rel-eng/tito.props [globalconfig] default_builder = tito.builder.Builder default_tagger = tito.tagger.VersionTagger

Package overrides $ cat ./selinux/oracle- selinux/build.py.props [buildconfig] builder = tito.builder.NoTgzBuilder tagger = tito.tagger.ReleaseTagger #builder = tito.builder.YourOwnBuilder

Tito config $ cat ~/.titorc RPMBUILD_BASEDIR=/tmp/spacewalk-build KOJI_OPTIONS=-c ~/.koji/spacewalkproject.org-config build --nowait

Builders Builder Includes functionality for a standard package build. Packages which require other unusual behavior can subclass this to inject the desired behavior. NoTgzBuilder Builder for packages that do not require the creation of a tarball. Usually these packages have source tarballs checked directly into git. i.e. most of the packages in spec-tree.

Taggers VersionTagger Standard Tagger class, used for tagging packages built from source in git. (as opposed to packages which commit a tarball directly into git). Releases will be tagged by incrementing the package version, and the actual RPM "release" will always be set to 1. ReleaseTagger Tagger which increments the spec file release instead of version. Used for: Packages we build from a tarball checked directly into git. Satellite packages built on top of Spacewalk tarballs.

Test builds [msuchy@dri/~/rhn/spacewalk.pub/client/rhel/rhn-client-tools]$ tito build --srpm --test Building package [rhn-client-tools-1.2.7-1] Wrote: /tmp/spacewalk-build/rhn-client-tools-git-0.48f88ed.tar.gz Wrote: /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.git.0.48f88ed.el6.src.rpm

Tagging [msuchy@dri/~/rhn/spacewalk.pub/client/rhel/rhn-client-tools]$ tito tag Tagging new version of rhn-client-tools: 1.2.6-1 -> 1.2.7-1 Created tag: rhn-client-tools-1.2.7-1 View: git show HEAD Undo: tito tag -u Push: git push && git push --tags [msuchy@dri/~/rhn/spacewalk.pub/client/rhel/rhn-client-tools]$ git push Counting objects: 16, done. Delta compression using up to 2 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (9/9), 920 bytes, done. Total 9 (delta 6), reused 0 (delta 0) To ssh://msuchy@git.fedorahosted.org/git/spacewalk.git/ 5947535..48f88ed master -> master [msuchy@dri/~/rhn/spacewalk.pub/client/rhel/rhn-client-tools]$ git push --tags Counting objects: 1, done. Writing objects: 100% (1/1), 228 bytes, done. Total 1 (delta 0), reused 0 (delta 0) * [new tag] rhn-client-tools-1.2.7-1 -> rhn-client-tools-1.2.7-1

Author: Miroslav Suchý <msuchy@redhat.com> 2010-09-14 11:34:29 Committer: Miroslav Suchý <msuchy@redhat.com> 2010-09-14 11:34:29 Tags: rhn-client-tools-1.2.7-1 Parent: 5947535a0377ebe16785a6a60201ef311afc85dd (Automatic commit of package [spacewalk-schema] release [1.2.20-1].) Child: 48e1bf038584ae4414a35a3cbbc24ac1bd71cb91 (foo) Branches: master, remotes/origin/master Follows: spacewalk-schema-1.2.20-1 Precedes: Automatic commit of package [rhn-client-tools] release [1.2.7-1]. -------------- client/rhel/rhn-client-tools/rhn-client-tools.spec -------------- index 046ecbf..70adbe3 100644 @@ -4,7 +4,7 @@ Group: System Environment/Base Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz URL: https://fedorahosted.org/spacewalk Name: rhn-client-tools -Version: 1.2.6 +Version: 1.2.7 Release: 1%{?dist} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch @@ -281,6 +281,12 @@ make -f Makefile.rhn-client-tools test %endif %changelog +* Tue Sep 14 2010 Miroslav Suchý <msuchy@redhat.com> 1.2.7-1 +- 632203 - fix comment to corespond with code, decoding unicode to unicode + produce traceback (msuchy@redhat.com) +- l10n: Updates to Oriya (or) translation (mgiri@fedoraproject.org) +- l10n: Updates to Russian (ru) translation (ypoyarko@fedoraproject.org) + * Tue Aug 31 2010 Jan Pazdziora 1.2.6-1 - 603028 - when checking package architecture during errata update, allow transition to and from noarch. ---------------------- rel-eng/packages/rhn-client-tools ---------------------- index d495483..aafef8a 100644 @@ -1 +1 @@ -1.2.6-1 client/rhel/rhn-client-tools/ +1.2.7-1 client/rhel/rhn-client-tools/

Building [msuchy@dri/~/rhn/spacewalk.pub/client/rhel/rhn-client-tools]$ tito build --koji-release Checking for tag [rhn-client-tools-1.2.7-1] in git repo [ssh://msuchy@git.fedorahosted.org/git/spacewalk.git/] WARNING: rpmbuild directory already exists, removing... Building package [rhn-client-tools-1.2.7-1] Building release in Koji... Wrote: /tmp/spacewalk-build/rhn-client-tools-1.2.7.tar.gz Wrote: /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.el5.src.rpm Submitting build with: koji -c ~/.koji/spacewalkproject.org-config build --nowait dist-5E-sw-1.2-candidate /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.el5.src.rpm Uploading srpm: /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.el5.src.rpm [====================================] 100% 00:00:10 1.87 MiB 175.59 KiB/sec Created task: 46707 Task info: http://koji.spacewalkproject.org/koji/taskinfo?taskID=46707 Wrote: /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.fc12.src.rpm Submitting build with: koji -c ~/.koji/spacewalkproject.org-config build --nowait dist-f12-sw-1.2-candidate /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.fc12.src.rpm Uploading srpm: /tmp/spacewalk-build/rhn-client-tools-1.2.7-1.fc12.src.rpm [====================================] 100% 00:00:11 1.87 MiB 163.02 KiB/sec Created task: 46708 Task info: http://koji.spacewalkproject.org/koji/taskinfo?taskID=46708

Real life props $ cat rel-eng/tito.props [globalconfig] default_builder = spacewalk.releng.builder.Builder default_tagger = spacewalk.releng.tagger.VersionTagger [koji] autobuild_tags = dist-5E-sw-1.2-candidate dist-f12-sw-1.2-candidate dist-f13-sw-1.2-candidate [dist-5E-sw-1.2-candidate] disttag = .el5 [dist-f12-sw-1.2-candidate] disttag = .fc12 blacklist=jabberd-selinux [dist-f13-sw-1.2-candidate] disttag = .fc13 [cvs] cvsroot = :gserver:your.dist-cvs.server.com:/cvs/dist branches = SATELLITE-5_4-RHEL-5

Get it http://github.com/dgoodwin/tito available at Fedora and Epel yum install tito

Questions?

How does Tito looks like?