From e1b602d79c720ed6daae07092d4d99d68ba58f75 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Thu, 5 Jan 2017 10:39:31 -0600 Subject: [PATCH] add docker base image compose Signed-off-by: Dennis Gilmore --- docker-nightly.sh | 106 +++++++++++++++++++++ fedora-docker.conf | 228 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 334 insertions(+) create mode 100755 docker-nightly.sh create mode 100644 fedora-docker.conf diff --git a/docker-nightly.sh b/docker-nightly.sh new file mode 100755 index 0000000..3e1265d --- /dev/null +++ b/docker-nightly.sh @@ -0,0 +1,106 @@ +#!/bin/sh + +export LC_ALL=C + +LABEL=$1 + +CONFIG="fedora-docker.conf" +TARGET_DIR="/mnt/koji/compose/" +#OLD_COMPOSES_DIR="--old-composes=/mnt/fedora_koji/compose/f23 --old-composes=$TARGET_DIR" +NIGHTLY="" +SKIP_PHASES="--skip-phase=productimg --skip-phase=pkgset --skip-phase=gather --skip-phase=extra_files --skip-phase=creatrepo" +DEST=$(pwd) +DATE=$(date "+%Y%m%d") +DIST="25" +BRANCHED="25" +BRANCH="branched" +COMPSFILE="comps-f25.xml" +GIT_BRANCH="f25" +TMPDIR=`mktemp -d /tmp/$DIST.$DATE.XXXX` +TOMAIL="devel@lists.fedoraproject.org test@lists.fedoraproject.org" +FROM="Fedora Branched Report " +RSYNCPREFIX="sudo -u ftpsync" +ATOMIC=$(mktemp -d /tmp/atomic.${DIST}.$DATE.XXXX) +ATOMICREPO="/mnt/koji/compose/atomic/$BRANCHED/" +ATOMICDEST="/pub/fedora/linux/atomic/$BRANCHED/" +OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-Fedora-Atomic-25/COMPOSE_ID) +# uncomment and edit for resuming a failed compose +#COMPOSE_ID="Fedora-23-20150530.n.0" + +# assume a releng dir is a git checkout of teh releng repo +# if it does not exist clone it +if [ -d releng ]; then + pushd releng + git pull --rebase + popd +else + git clone https://pagure.io/releng.git +fi + +# Set up our fedmsg function, using the releng repo definition +fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s"}' "$BRANCHED" "$ARCH") +fedmsg_json_done=$(printf '{"log": "done", "branch": "%s", "arch": "%s"}' "$BRANCHED" "$ARCH") +FEDMSG_MODNAME="compose" +FEDMSG_CERTPREFIX="releng" +. ./releng/scripts/fedmsg-functions.sh + +# Announce that we are starting... +send_fedmsg "${fedmsg_json_start}" ${DIST} start + + +pushd $TMPDIR +git clone https://pagure.io/fedora-comps.git && { + pushd fedora-comps + make "${COMPSFILE}" + cp "${COMPSFILE}" $DEST/ + popd +} +popd + +CMD="pungi-koji --notification-script=/usr/bin/pungi-fedmsg-notification --config=$CONFIG --old-composes=$TARGET_DIR $OLD_COMPOSES_DIR $NIGHTLY $SKIP_PHASES --label=$LABEL" + +if [ -z "$COMPOSE_ID" ]; then + CMD="$CMD --target-dir=$TARGET_DIR" +else + CMD="$CMD --debug-mode --compose-dir=$TARGET_DIR/$COMPOSE_ID" +fi + +time $CMD "$@" +if [ "$?" = "0" ]; then + export mail=0 +fi + +NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-Fedora-Atomic-25/COMPOSE_ID) +SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||g') + + +DESTDIR=$TARGET_DIR/$NEWCOMPOSE_ID +$RSYNCPREFIX mkdir -p $DESTDIR + +# Tell interested persons that the rsync is starting (zomg!) + +send_fedmsg "${fedmsg_json_start}" ${DIST} rsync.start + +#for dir in Docker metadata ; +# do +# $RSYNCPREFIX rsync -avhH $TARGET_DIR/$NEWCOMPOSE_ID/compose/$dir/ /pub/alt/atomic/testing/$SHORTCOMPOSE_ID/$dir/ ; +# done + + +# Tell interested persons that the rsync is done. + +#send_fedmsg "${fedmsg_json_done}" ${DIST} rsync.complete + +# Tell everyone by fedmsg about the compose + +send_fedmsg "${fedmsg_json_done}" ${DIST} complete + +SUBJECT='Fedora '$DIST' compose report: '$SHORTCOMPOSE_ID' changes' +#if [ "$mail" = "0" ]; then +# for tomail in $TOMAIL ; do +# cat $TARGET_DIR/$NEWCOMPOSE_ID/logs/*verbose $DESTDIR/logs/depcheck | \ +# mutt -e "set from=\"$FROM\"" -e 'set envelope_from=yes' -s "$SUBJECT" $tomail +# done +#fi + + diff --git a/fedora-docker.conf b/fedora-docker.conf new file mode 100644 index 0000000..ef377b5 --- /dev/null +++ b/fedora-docker.conf @@ -0,0 +1,228 @@ +# PRODUCT INFO +release_name = 'Fedora-Docker' +release_short = 'Fedora-Docker' +release_version = '25' +release_is_layered = False +# GENERAL SETTINGS +bootable = False +comps_file = 'comps-f25.xml' #{ +# 'scm': 'git', +# 'repo': 'git://git.fedorahosted.org/git/comps.git', +# 'branch': None, # defaults to cvs/HEAD or git/master +# 'file': 'comps-f23.xml', +#} +variants_file='variants-fedora.xml' +sigkeys = ['FDB19C98', 'E372E838'] # None = unsigned +# limit tree architectures +# if undefined, all architectures from variants.xml will be included +tree_arches = ['x86_64', 'armhfp'] +# limit tree variants +# if undefined, all variants from variants.xml will be included +tree_variants = ['Docker'] +hashed_directories = True +# RUNROOT settings +runroot = True +#runroot_channel = 'fedora_compose' +runroot_channel = 'compose' +runroot_tag = 'f25-build' +# PKGSET +pkgset_source = 'koji' # koji, repos +pkgset_koji_tag = 'f25-updates' +pkgset_koji_inherit = True +filter_system_release_packages = False +# GATHER +gather_source = 'comps' +gather_method = 'deps' +check_deps = False +greedy_method = 'build' +# fomat: [(variant_uid_regex, {arch|*: [repos]})] +# gather_lookaside_repos = [] +# GATHER - JSON +# format: {variant_uid: {arch: package: [arch1, arch2, None (for any arch)]}} +#gather_source_mapping = '/path/to/mapping.json' +# CREATEREPO +createrepo_c = True +createrepo_checksum = 'sha256' +# CHECKSUMS +media_checksums = ['sha256'] +media_checksum_one_file = True +media_checksum_base_filename = 'Fedora-%(variant)s-%(version)s-%(date)s.%(respin)s-%(arch)s' +#jigdo +create_jigdo = False +#extra_packages = [ +# '/mnt/packages/foo*', +#] +# fomat: [(variant_uid_regex, {arch|*: [packages]})] +additional_packages = [ + ('.*', { + '*': [ + 'kernel.*', + 'dracut.*', + 'autocorr-.*', + 'eclipse-nls-.*', + 'hunspell-.*', + 'hyphen-.*', + 'calligra-l10n-.*', + 'kde-l10n-.*', + 'libreoffice-langpack-.*', + 'man-pages-.*', + 'mythes-.*', + ], + }), + ('^Everything$', { + '*': [ + '*', + ], + }), + ('^Server$', { + '*': [ + ], + }), + ('^Workstation$', { + '*': [ + ], + }), + ('^Cloud$', { + '*': [ + ], + }), +] +multilib = [ + ('^Everything$', { + 'x86_64': ['devel', 'runtime'], + 's390x': ['devel', 'runtime'] + }) +] +filter_packages = [ + ('(Workstation|Server|Cloud)$', { + '*': [ + '^kernel.*debug.*', + '^kernel-kdump.*', + '^kernel-tools.*', + '^syslog-ng.*', + '^astronomy-bookmarks', + '^generic.*', + '^GConf2-dbus.*', + '^bluez-gnome', + #Periods cause problems in paterns, so replace with *s + '^java-1.8.0-openjdk', + '^community-mysql.*', + '^jruby.*', + '^gimp-help-.*', + ] + }), +] +# format: {arch|*: [packages]} +multilib_blacklist = { + '*': ['kernel*', 'kernel-PAE*', 'kernel*debug*', + 'dmraid-devel', 'kdeutils-devel', 'mkinitrd-devel', + 'java-1.5.0-gcj-devel', 'java-1.7.0-icedtea-devel', + 'php-devel', 'java-1.6.0-openjdk-devel', + 'java-1.7.0-openjdk-devel', 'java-1.8.0-openjdk-devel', + 'httpd-devel', 'tomcat-native', 'php*', 'httpd', + 'krb5-server', 'krb5-server-ldap', 'mod_*', 'ghc-*' + ], +} +# format: {arch|*: [packages]} +multilib_whitelist = { + '*': ['libgnat', 'wine*', 'lmms-vst', 'nspluginwrapper', + 'libflashsupport', 'valgrind', 'perl-libs', 'redhat-lsb', + 'yaboot', 'syslinux-extlinux-nonlinux', 'syslinux-nonlinux', + 'syslinux-tftpboot', 'nosync', '*-static' + ], +} +createiso_skip = [ + ('^Workstation$', { + '*': True, + 'src': True + }), + ('^Server$', { + 'src': True + }), + ('^Cloud$', { + '*': True, + 'src': True + }), + ('^Everything$', { + '*': True, + 'src': True + }), + ] +# fomat: [(variant_uid_regex, {arch|*: [scm_dicts]})] +#extra_files = [ +# ('^(Server|Workstation|Cloud)$', { +# '*': [ +# { +# 'scm': 'rpm', +# 'repo': 'fedora-release-%(variant_id_lower)s', +# 'branch': None, +# 'file': [ +# '/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-release', +# ], +# 'target': '', +# }, +# ], +# }), +#] +# Image name respecting Fedora's image naming policy +image_name_format = 'Fedora-%(variant)s-%(disc_type)s-%(arch)s-%(version)s-%(date)s.%(respin)s.iso' +# # Use the same format for volume id +image_volid_formats = [ + 'Fedora-%(variant)s-%(disc_type)s-%(arch)s-%(version)s' + ] +# No special handling for layered products, use same format as for regular images +image_volid_layered_product_formats = [] +# Replace 'Cloud' with 'C' in volume id etc. +volume_id_substitutions = { + 'Rawhide': 'rawh', + 'Images': 'img', + 'MATE_Compiz': 'MATE', + 'Security': 'Sec', + 'Electronic_Lab': 'Elec', + 'Robotics': 'Robo', + 'Scientific_KDE': 'SciK', + 'Astronomy_KDE': 'AstK', + 'Design_suite': 'Dsgn', + 'Games': 'Game', + 'Jam_KDE': 'Jam', + 'Workstation': 'WS', + 'Everything': 'E', + 'Server': 'S', + 'Cloud': 'C', + 'Alpha': 'A', + 'Beta': 'B', + 'TC': 'T', +} +disc_types = { + 'boot': 'netinst', + 'live': 'Live', +} +translate_paths = [ + ('/mnt/koji/compose/', 'http://kojipkgs.fedoraproject.org/compose/'), +] +image_build = { + '^Docker$': [ + { + 'image-build': { + 'format': [('docker', 'tar.xz')] + 'name': 'Fedora-Docker-Base', + 'target': 'f25', + 'version': '25', + 'release': None, + # correct SHA1 hash will be put into the URL below automatically + 'ksurl': 'git+https://pagure.io/fedora-kickstarts.git?#origin/f25', + 'kickstart': 'fedora-docker-base.ks', + 'distro': 'Fedora-20', + 'disk_size': 3, + 'arches': ['x86_64', 'armhfp'], + 'repo_from': 'http://kojipkgs.fedoraproject.org/pub/fedora/linux/releases/25/Everything/$arch/os/', + 'repo': [ + 'http://kojipkgs.fedoraproject.org/pub/fedora/linux/updates/25/$arch/', + ], + 'install_tree_from': '', + 'subvariant': 'Docker_Base' + } + } + ], +} +koji_profile = 'compose_koji'