Skip to content

Commit

Permalink
Fixes for release scripts:
Browse files Browse the repository at this point in the history
Add a flag to allow keeping bundles around (helps with CI)

Fix several problems in repo make targets

* quote DOCKER_EXPERIMENTAL variable
* pass-through arguments for gpg  provided to dpkg-sig are now quoted
  properly, so passphrases with shell-interpolated symbols can be used
* when determining deb suites, don't rely on 'origin' to be
  github.com/docker/docker

Fix some issues with deb repository creation from scratch

* Don't add empty components to the repository configuration as they
  will cause failure when generating.

Add old docker-engine-cs name to package conflicts

Signed-off-by: Mike Dougherty <mike.dougherty@docker.com>
  • Loading branch information
mikedougherty committed Nov 24, 2015
1 parent 0d98e24 commit a15b67b
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 17 deletions.
2 changes: 1 addition & 1 deletion contrib/reprepro/suites.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ cd "$(dirname "$BASH_SOURCE")/../.."

targets_from() {
git fetch -q https://github.com/docker/docker.git "$1"
git ls-tree -r --name-only origin/master contrib/builder/deb | grep '/Dockerfile$' | sed -r 's!^contrib/builder/deb/|-debootstrap|/Dockerfile$!!g'
git ls-tree -r --name-only "$(git rev-parse FETCH_HEAD)" contrib/builder/deb | grep '/Dockerfile$' | sed -r 's!^contrib/builder/deb/|-debootstrap|/Dockerfile$!!g'
}

release_branch=$(git ls-remote --heads https://github.com/docker/docker.git | awk -F 'refs/heads/' '$2 ~ /^release/ { print $2 }' | sort -V | tail -1)
Expand Down
2 changes: 1 addition & 1 deletion hack/make.sh
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ main() {
# We want this to fail if the bundles already exist and cannot be removed.
# This is to avoid mixing bundles from different versions of the code.
mkdir -p bundles
if [ -e "bundles/$VERSION" ]; then
if [ -e "bundles/$VERSION" ] && [ -z "$KEEPBUNDLE" ]; then
echo "bundles/$VERSION already exists. Removing."
rm -fr "bundles/$VERSION" && mkdir "bundles/$VERSION" || exit 1
echo
Expand Down
2 changes: 1 addition & 1 deletion hack/make/.build-deb/control
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Recommends: aufs-tools,
xz-utils,
${apparmor:Recommends},
${yubico:Recommends}
Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package
Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine-cs
Description: Docker: the open-source application container engine
Docker is an open source project to build, ship and run any application as a
lightweight container
Expand Down
1 change: 1 addition & 0 deletions hack/make/.build-rpm/docker-engine.spec
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ Requires(pre): %{name}-selinux >= %{epoch}:%{version}-%{release}
# conflicting packages
Conflicts: docker
Conflicts: docker-io
Conflicts: docker-engine-cs

%description
Docker is an open source project to build, ship and run any application as a
Expand Down
41 changes: 27 additions & 14 deletions hack/make/release-deb
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,29 @@ mkdir -p "$APTDIR/conf" "$APTDIR/db"

# supported arches/sections
arches=( amd64 i386 )
components=( main testing experimental )

# Preserve existing components but don't add any non-existing ones
for component in main testing experimental ; do
if ls "$APTDIR/dists/*/$component" >/dev/null 2>&1 ; then
components+=( $component )
fi
done

# set the component for the version being released
component="main"

if [[ "$VERSION" == *-rc* ]]; then
component="testing"
fi

if [ "$DOCKER_EXPERIMENTAL" ] || [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
component="experimental"
fi

# Make sure our component is in the list of components
if [[ ! "${components[*]}" =~ $component ]] ; then
components+=( $component )
fi

# create/update apt-ftparchive file
if [ ! -f "$APTDIR/conf/apt-ftparchive.conf" ]; then
Expand Down Expand Up @@ -53,7 +75,7 @@ if [ ! -f "$APTDIR/conf/apt-ftparchive.conf" ]; then
for suite in $(exec contrib/reprepro/suites.sh); do
cat <<-EOF
Tree "dists/${suite}" {
Sections "main testing experimental";
Sections "${components[*]}";
Architectures "${arches[*]}";
}
Expand All @@ -70,17 +92,6 @@ if [ ! -f "$APTDIR/conf/docker-engine-release.conf" ]; then
EOF
fi

# set the component for the version being released
component="main"

if [[ "$VERSION" == *-rc* ]]; then
component="testing"
fi

if [ $DOCKER_EXPERIMENTAL ] || [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
component="experimental"
fi

# release the debs
for dir in contrib/builder/deb/*/; do
version="$(basename "$dir")"
Expand All @@ -91,7 +102,7 @@ for dir in contrib/builder/deb/*/; do
# if we have a $GPG_PASSPHRASE we may as well
# dpkg-sign before copying the deb into the pool
if [ ! -z "$GPG_PASSPHRASE" ]; then
dpkg-sig -g "--passphrase $GPG_PASSPHRASE" \
dpkg-sig -g "--no-tty --passphrase '$GPG_PASSPHRASE'" \
-k "$GPG_KEYID" --sign builder "${DEBFILE[@]}"
fi

Expand All @@ -100,6 +111,7 @@ for dir in contrib/builder/deb/*/; do
cp "${DEBFILE[@]}" "$APTDIR/pool/$component/d/docker-engine/"

# update the filelist for this codename/component
mkdir -p "$APTDIR/dists/$codename/$component"
find "$APTDIR/pool/$component" \
-name *~${codename#*-}*.deb > "$APTDIR/dists/$codename/$component/filelist"
done
Expand All @@ -122,6 +134,7 @@ for dir in contrib/builder/deb/*/; do
"$APTDIR/dists/$codename" > "$APTDIR/dists/$codename/Release"

for arch in "${arches[@]}"; do
mkdir -p "$APTDIR/dists/$codename/$component/binary-$arch"
apt-ftparchive \
-o "APT::FTPArchive::Release::Codename=$codename" \
-o "APT::FTPArchive::Release::Suite=$codename" \
Expand Down

0 comments on commit a15b67b

Please sign in to comment.