summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md137
1 files changed, 110 insertions, 27 deletions
diff --git a/README.md b/README.md
index 67dad5f..d9d173d 100644
--- a/README.md
+++ b/README.md
@@ -1,38 +1,121 @@
-Puppet Boostrap Module
-======================
+Debian packaging effort!
+========================
-This is a multi-purpose but very specific puppet module which can be used:
+In the past, we used to be [heavy slackware users](https://simplepkg.sarava.org) when we just
+had a few boxes to manage. Then we had to change our whole packaging paradigm when we switched
+to Debian.
-* As the base repository for a puppet infrastructure.
-* As a standalone provisioner for boxes, with Vagrant support.
-* It can be optionally used together with the Hydra Suite from https://git.sarava.org/?p=hydra.git
+These notes are mainly references to the detailed Debian/Ubuntu documentations we're using in
+the course of learning the intricacies of Debian packaging.
-Setting up a new puppetmaster repository
-----------------------------------------
+Grab this repository using
-You'll basically use the `bootstrap` repository as your `puppet` repository:
+ git clone --recursive git://git.sarava.org/debian.git
- git clone git://git.sarava.org/puppet-bootstrap.git puppet
- cd puppet && git tag -v # check integrity
- make deps # install dependencies
- make submodules # add all needed puppet module as as git submodules
- make config # basic configuration
+Configuration files
+-------------------
-Using as a standalone provisioner
----------------------------------
+All the commands in this guide assumes that you're using [these configuration
+files](https://git.sarava.org/?p=rhatto/dotfiles/debian.git;a=summary).
-This will be a `Vagrant` example:
+Starting a new package
+----------------------
- cd your-project
- git clone git://git.sarava.org/puppet-bootstrap.git puppet # use submodule or subtree as you please
- ln -s puppet/Vagrantfile # or copy if you want to customize
- ( cd puppet && make modules ) # need the mr binary to download the submodules
- vagrant up web # with no arguments, all defined VMs are started
+We use the `packages/` folder from this repo to store sources:
-Using subtrees or symlinks for modules
---------------------------------------
+ mkdir package/$package
+ cd package/$package
-You might use `make subtrees` instead of `make submodules`. Also, if you already have
-all the modules in a different subtree, use
+Build environment creation
+--------------------------
- make symlinks MODULES=/path/to/puppet/modules
+The following steps needs to be run just once for each arch and distro version.
+
+### Setup cowbuilder chroots
+
+This is the recommended method:
+
+ sudo mkdir /var/cache/pbuilder/sid-amd64
+ sudo -E cowbuilder --create
+
+ sudo mkdir /var/cache/pbuilder/wheezy-amd64
+ sudo -E DIST=wheezy cowbuilder --create
+
+### Setup pbuilder chroots
+
+If you want to setup directly using `pbuilder`:
+
+ git-pbuilder create
+ DIST=wheezy git-pbuilder
+
+### Compatibility with git-buildpackage
+
+This is a workaround while we don't find a cleaner way to fix
+[this issue](http://ramblingfoo.blogspot.com.br/2012/10/howto-sudo-cowbuilder-git-buildpackage.html)
+with `git-buildpackage` not getting `~/.pbuilderrc` from the local user:
+
+ ( cd /var/cache/pbuilder/ && sudo ln -s sid-amd64/base.cow )
+
+External repo integration
+-------------------------
+
+If your package storage lives elsewhere, make a symlink like this:
+
+ (
+ cd /var/cache/pbuilder/wheezy-amd64 && \
+ sudo rm -rf result && \
+ sudo ln -s /var/data/apps/distros/debian/packages/build-area/wheezy-amd64 result
+ )
+
+Environment maintenance
+-----------------------
+
+These steps should be run once in a while to ensure we have an up to date packaging environment.
+
+### Pbuilder
+
+ DIST=sid git-pbuilder update
+ DIST=wheezy git-pbuilder update --override-config
+
+### Cowbuilder
+
+ DIST=sid sudo -E cowbuilder --update
+ DIST=wheezy sudo -E cowbuilder --update --override-config
+
+Building
+--------
+
+ DIST=wheezy sudo -E cowbuilder --build $package*.dsc
+
+Signing
+-------
+
+To sign both the `.dsc` and the `.changes` files:
+
+ debsign $package*.changes
+
+Uploading
+---------
+
+Simply run
+
+ dupload *changes
+
+This assumes a `~/.dupload.conf` like the following:
+
+ package config;
+ $default_host = "myremote";
+
+ $cfg{'myremote'} = {
+ fqdn => "myremote.example.org",
+ login => "user",
+ method => "scpb",
+ incoming => "/var/reprepro/incoming/",
+ # The dinstall on ftp-master sends emails itself
+ #dinstall_runs => 1,
+ };
+
+It's also important that:
+
+ 1. The host remote port is correctly defined at your `~/.ssh/config`.
+ 2. The user is in the `reprepro` group in the server.