If you want to do this, run screen -d -m -S shared
as debian-cd on each of
casulana and pettersson. Then each person wanting to connect should run
screen -x shared
. Easy!
git pull
) on both machines
every hour (12 *
); developers are expected to commit on their machines,
push to Salsa, then pull from casulana or pettersson as needed.Stop the daily/weekly build triggers in ~/build/ftp.cron
:
sed 's/^\(ABORT_.*\)=.*/\1=y/' -i ~/build/ftp.cron
Set codename and release name. Examples:
# d-i release:
export CODENAME=bookworm
export RELEASE=bookworm_di_rc2
# full release: [FIXME:CHECK!]
export CODENAME=bullseye
export RELEASE=11.7.0
Update config files to reflect the release details, keeping in mind the first one rarely needs an update (e.g. when dropping an arch):
editor ~/build.${CODENAME?}/settings.sh
editor ~/build.${CODENAME?}/CONF.sh.${RELEASE?}
editor ~/live/available/CONF.sh.${RELEASE?}
Make sure you’re running in screen, then trigger the build, generating a log file:
cd ~/build.${RELEASE?}
script -c "RELEASE_BUILD=${RELEASE?} ./cronjob.weekly" ${RELEASE?}.log
As of April 2023, expect ~3.5 hours for a d-i release.
Stuff will start to appear under the 2 following release dirs on pettersson:
/mnt/nfs-cdimage/.${RELEASE?}
/mnt/nfs-cdimage/unofficial/non-free/cd-including-firmware/.${RELEASE?}
For Bookworm+: only the first directory is used, it contains
debian-cd
, firmware
, and live-free
.
Note: Snapshots (part 1 and part 2) can be done without waiting on the testing, snapshotting is relatively cheap and can be done multiple times in case images needed to be respinned.
Do some testing, ideally get help!
There are 3 machines involved in snapshots:
The first two need to get files from pettersson, and require the following.
In the background, rsync the jigdo files out elsewhere (particularly ftp.uk.debian.org). On the remote machines, picking the right release:
export RELEASE=bookworm_di_rc2
export RELEASE=11.7.0
rsync -avx --delete --exclude *.tmp --exclude 'iso*' \
--exclude 'bt*' --exclude 'list*' \
cdimage.debian.org::cdimage/.${RELEASE?}/debian-cd/ ${RELEASE?}
(Snapshots part 2 is at the end of this doc.)
This is needed for the update images that we build.
$ cd ~/lists/
$ ~/bin/make-cd-list
r<release_number>list
If this is a point release, next generate a diff from r0 to r<release_number>, grabbing out just the list of new files in this release since r0:
$ diff -u r0list r<release_number>list | grep ^+pool \ | cut -c2- > r0-r<release_number>.diff
As a sanity check, you should be able to see that the diff file is a little larger than the previous one (if one exists).
The list and the diff file should also be committed into the git repo, as other people use the information too:
https://salsa.debian.org/images-team/package-lists.git
(To do that you’ll need to copy the new files to a personal clone somewhere else using ssh - the debian-cd user on casulana/pettersson cannot commit.)
This uses the above diff. cd to
/home/debian-cd/build.
Near the top of the script, change a couple of variable definitions. Set the version for the release you’re doing, and point to the diff file you’ve just created. Then:
$ ./update-cd dvd
will generate the update images.
When things look good, time to sign and release.
All the following happens on pettersson.
Remember to set the codename/release once, and switch to the work directory:
export CODENAME=bookworm
export RELEASE=bookworm_di_rc2
export CODENAME=bullseye
export RELEASE=11.7.0
cd /mnt/nfs-cdimage/
For d-i releases, list then delete the bittorrent bits:
find . -name bt*
find . -name bt* | xargs rm -rvf
REMEMBER TO CHECK EACH PATH BELOW, RECONSTRUCTED FROM NOTES/HISTORY, DON’T TRUST ANYTHING JUST YET!
For each release dir (both free and non-free), go into
.${RELEASE?}/debian-cd
and generate the final checksums files:
~/build.${CODENAME?}/merge-sums $PWD
Grab the checksums into a tarball ready to copy elsewhere for signing:
cd /mnt/nfs-cdimage/XXX
find . -name '*SUMS' | xargs tar czvf ~/md5.tar.gz
Copy those to another machine where you have the key for signing, sign, tar up again and push back to pettersson. Then:
tar xvf ~DEVELOPER/md5.tar.gz
Move the now-signed release into place under
/mnt/nfs-cdimage/release/${RELEASE?}
.
Example for a d-i release:
cd /mnt/nfs-cdimage/${RELEASE?}
mv firmware/ /mnt/nfs-cdimage/firmware/bookworm/${RELEASE?}
mv debian-cd/ /mnt/nfs-cdimage/${RELEASE?}
mv live-free/ /mnt/nfs-cdimage/${RELEASE?}-live
The rest of this section is only for full releases.
Move the old builds out of the way to the archive dir.
For the installer CD builds, create a directory
/mnt/nfs-cdimage/release/project/build/${RELEASE?}
. In it, add a file
containing “cd dvd” for each architecture in the release. The mirrors
use this to work out what/how to mirror things.
Update the current and current-live symlinks to point to the most recent release version.
Update the latest-*
links if needed as appropriate in
/mnt/nfs-cdimage/archive /mnt/nfs-cdimage/unofficial/non-free/images-including-firmware/archive
Push the mirrors and seeders
~/bin/trigger_seeders ~/bin/trigger_mirrors
Once the release is all done, trigger the snapshot rebuilds on the remote machines too.
Also put them in place on /org/cdbuilder.debian.org/dst/deb-cd/cdimage. You do that by creating a snapshot on pettersson once the release is published:
$ ~/bin/release-snapshot $VERSION_NUMBER
Re-enable the daily/weekly builds:
sed 's/^\(ABORT_.*\)=.*/\1=n/' -i ~/build/ftp.cron
Update the text in various places in /mnt/nfs-cdimage/HEADER.html
. This is
done by editing publish-docs/images-HEADER.html
in the setup repository
(salsa.debian.org:images-team/setup.git
).
Sleep!