зеркало из https://github.com/microsoft/docker.git
packaging-ubuntu, issue #30: streamline building and uploading to PPA
This commit is contained in:
Родитель
fd39af7f85
Коммит
523cd8e29c
|
@ -1,73 +1,57 @@
|
||||||
|
# Ubuntu package Makefile
|
||||||
|
#
|
||||||
|
# Dependencies: debhelper autotools-dev devscripts golang
|
||||||
|
# Notes:
|
||||||
|
# Use 'make ubuntu' to create the ubuntu package
|
||||||
|
# GPG_KEY environment variable needs to contain a GPG private key for package to be signed
|
||||||
|
# and uploaded to docker PPA.
|
||||||
|
# If GPG_KEY is not defined, make ubuntu will create docker package and exit with
|
||||||
|
# status code 2
|
||||||
|
|
||||||
PKG_NAME=lxc-docker
|
PKG_NAME=lxc-docker
|
||||||
PKG_ARCH=amd64
|
VERSION=$(shell head -1 changelog | sed 's/^.\+(\(.\+\)..).\+$$/\1/')
|
||||||
PKG_VERSION=1
|
GITHUB_PATH=github.com/dotcloud/docker
|
||||||
ROOT_PATH:=$(PWD)
|
DOCKER_VERSION=${PKG_NAME}_${VERSION}
|
||||||
BUILD_PATH=build # Do not change, decided by dpkg-buildpackage
|
DOCKER_FVERSION=${PKG_NAME}_$(shell head -1 changelog | sed 's/^.\+(\(.\+\)).\+$$/\1/')
|
||||||
BUILD_SRC=build_src
|
BUILD_SRC=${CURDIR}/../../build_src
|
||||||
GITHUB_PATH=src/github.com/dotcloud/docker
|
|
||||||
INSDIR=usr/bin
|
|
||||||
SOURCE_PACKAGE=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
|
|
||||||
DEB_PACKAGE=$(PKG_NAME)_$(PKG_VERSION)_$(PKG_ARCH).deb
|
|
||||||
EXTRA_GO_PKG=./auth
|
|
||||||
|
|
||||||
TMPDIR=$(shell mktemp -d -t XXXXXX)
|
all:
|
||||||
|
# Compile docker. Used by dpkg-buildpackage.
|
||||||
|
cd src/${GITHUB_PATH}/docker; GOPATH=${CURDIR} go build
|
||||||
|
|
||||||
|
|
||||||
# Build a debian source package
|
|
||||||
all: clean build_in_deb
|
|
||||||
|
|
||||||
build_in_deb:
|
|
||||||
echo "GOPATH = " $(ROOT_PATH)
|
|
||||||
mkdir bin
|
|
||||||
cd $(GITHUB_PATH)/docker; GOPATH=$(ROOT_PATH) go build -o $(ROOT_PATH)/bin/docker
|
|
||||||
|
|
||||||
# DESTDIR provided by Debian packaging
|
|
||||||
install:
|
install:
|
||||||
# Call this from a go environment (as packaged for deb source package)
|
# Used by dpkg-buildpackage
|
||||||
mkdir -p $(DESTDIR)/$(INSDIR)
|
mkdir -p ${DESTDIR}/usr/bin
|
||||||
mkdir -p $(DESTDIR)/etc/init
|
mkdir -p ${DESTDIR}/etc/init
|
||||||
install -m 0755 bin/docker $(DESTDIR)/$(INSDIR)
|
install -m 0755 src/${GITHUB_PATH}/docker/docker ${DESTDIR}/usr/bin
|
||||||
install -o root -m 0755 etc/docker.upstart $(DESTDIR)/etc/init/docker.conf
|
install -o root -m 0755 debian/docker.upstart ${DESTDIR}/etc/init/docker.conf
|
||||||
|
|
||||||
$(BUILD_SRC): clean
|
ubuntu:
|
||||||
# Copy ourselves into $BUILD_SRC to comply with unusual golang constraints
|
# This Makefile will compile the github master branch of dotcloud/docker
|
||||||
tar --exclude=*.tar.gz --exclude=checkout.tgz -f checkout.tgz -cz *
|
# Retrieve docker project and its go structure from internet
|
||||||
mkdir -p $(BUILD_SRC)/$(GITHUB_PATH)
|
rm -rf ${BUILD_SRC}
|
||||||
tar -f checkout.tgz -C $(BUILD_SRC)/$(GITHUB_PATH) -xz
|
GOPATH=${BUILD_SRC} go get ${GITHUB_PATH}
|
||||||
cd $(BUILD_SRC)/$(GITHUB_PATH)/docker; GOPATH=$(ROOT_PATH)/$(BUILD_SRC) go get -d
|
# Add debianization
|
||||||
for d in `find $(BUILD_SRC) -name '.git*'`; do rm -rf $$d; done
|
mkdir ${BUILD_SRC}/debian
|
||||||
# Populate source build with debian stuff
|
cp Makefile ${BUILD_SRC}
|
||||||
cp -R -L ./deb/* $(BUILD_SRC)
|
cp -r * ${BUILD_SRC}/debian
|
||||||
|
cp ../../README.md ${BUILD_SRC}
|
||||||
$(SOURCE_PACKAGE): $(BUILD_SRC)
|
# Cleanup
|
||||||
rm -f $(SOURCE_PACKAGE)
|
for d in `find ${BUILD_SRC} -name '.git*'`; do rm -rf $$d; done
|
||||||
# Create the debian source package
|
rm -rf ${BUILD_SRC}/../${DOCKER_VERSION}.orig.tar.gz
|
||||||
tar -f $(SOURCE_PACKAGE) -C ${ROOT_PATH}/${BUILD_SRC} -cz .
|
rm -rf ${BUILD_SRC}/pkg
|
||||||
|
# Create docker debian files
|
||||||
# Build deb package fetching go dependencies and cleaning up git repositories
|
cd ${BUILD_SRC}; tar czf ../${DOCKER_VERSION}.orig.tar.gz .
|
||||||
deb: $(DEB_PACKAGE)
|
cd ${BUILD_SRC}; dpkg-buildpackage -us -uc
|
||||||
|
rm -rf ${BUILD_SRC}
|
||||||
$(DEB_PACKAGE): $(SOURCE_PACKAGE)
|
# Sign package and upload it to PPA if GPG_KEY environment variable
|
||||||
# dpkg-buildpackage looks for source package tarball in ../
|
# holds a private GPG KEY
|
||||||
cd $(BUILD_SRC); dpkg-buildpackage
|
if /usr/bin/test "$${GPG_KEY}" == ""; then exit 2; fi
|
||||||
rm -rf $(BUILD_PATH) debian/$(PKG_NAME)* debian/files
|
mkdir ${BUILD_SRC}
|
||||||
|
# Import gpg signing key
|
||||||
debsrc: $(SOURCE_PACKAGE)
|
echo "$${GPG_KEY}" | gpg --allow-secret-key-import --import
|
||||||
|
# Sign the package
|
||||||
# Build local sources
|
cd ${BUILD_SRC}; dpkg-source -x ${BUILD_SRC}/../${DOCKER_FVERSION}.dsc
|
||||||
#$(PKG_NAME): build_local
|
cd ${BUILD_SRC}/${PKG_NAME}-${VERSION}; debuild -S -sa
|
||||||
|
cd ${BUILD_SRC};dput ppa:dotcloud/lxc-docker ${DOCKER_FVERSION}_source.changes
|
||||||
build_local:
|
rm -rf ${BUILD_SRC}
|
||||||
-@mkdir -p bin
|
|
||||||
cd docker && go build -o ../bin/docker
|
|
||||||
|
|
||||||
gotest:
|
|
||||||
@echo "\033[36m[Testing]\033[00m docker..."
|
|
||||||
@sudo -E GOPATH=$(ROOT_PATH)/$(BUILD_SRC) go test -v . $(EXTRA_GO_PKG) && \
|
|
||||||
echo -n "\033[32m[OK]\033[00m" || \
|
|
||||||
echo -n "\033[31m[FAIL]\033[00m"; \
|
|
||||||
echo " docker"
|
|
||||||
@sudo rm -rf /tmp/docker-*
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf $(BUILD_PATH) debian/$(PKG_NAME)* debian/files $(BUILD_SRC) checkout.tgz bin
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
Docker on Ubuntu
|
||||||
|
================
|
||||||
|
|
||||||
|
The easiest way to get docker up and running natively on Ubuntu is installing
|
||||||
|
it from its official PPA::
|
||||||
|
|
||||||
|
sudo sh -c "echo 'deb http://ppa.launchpad.net/dotcloud/lxc-docker/ubuntu precise main' >>/etc/apt/sources.list"
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install lxc-docker
|
||||||
|
|
||||||
|
|
||||||
|
Building docker package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The building process is shared by both, developers and maintainers. If you are
|
||||||
|
a developer, the Makefile will stop with exit status 2 right before signing
|
||||||
|
the built packages.
|
||||||
|
|
||||||
|
Assuming you are working on an Ubuntu 12.04 TLS system ::
|
||||||
|
|
||||||
|
# Download a fresh copy of the docker project
|
||||||
|
git clone https://github.com/dotcloud/docker.git
|
||||||
|
cd docker
|
||||||
|
|
||||||
|
# Get building dependencies
|
||||||
|
sudo apt-get update; sudo apt-get install -y debhelper autotools-dev devscripts golang
|
||||||
|
|
||||||
|
# Make the ubuntu package
|
||||||
|
(cd packaging/ubuntu; make ubuntu)
|
||||||
|
|
||||||
|
|
||||||
|
Install docker built package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
sudo dpkg -i lxc-docker_*_amd64.deb; sudo apt-get install -f -y
|
|
@ -0,0 +1,12 @@
|
||||||
|
BUILDBOT_IP = '192.168.33.32'
|
||||||
|
|
||||||
|
Vagrant::Config.run do |config|
|
||||||
|
config.vm.box = 'quantal64_3.5.0-25'
|
||||||
|
config.vm.box_url = 'http://get.docker.io/vbox/ubuntu/12.10/quantal64_3.5.0-25.box'
|
||||||
|
config.vm.share_folder 'v-data', '/data/docker', "#{File.dirname(__FILE__)}/../.."
|
||||||
|
config.vm.network :hostonly,BUILDBOT_IP
|
||||||
|
|
||||||
|
# Install ubuntu packaging dependencies and create ubuntu packages
|
||||||
|
config.vm.provision :shell, :inline => 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install -qq -y debhelper autotools-dev devscripts golang'
|
||||||
|
config.vm.provision :shell, :inline => "export GPG_KEY='#{ENV['GPG_KEY']}'; cd /data/docker/packaging/ubuntu; make ubuntu"
|
||||||
|
end
|
|
@ -1,4 +1,21 @@
|
||||||
lxc-docker (1) precise; urgency=low
|
lxc-docker (0.1.4.1-1) precise; urgency=low
|
||||||
|
|
||||||
|
Improvements [+], Updates [*], Bug fixes [-]:
|
||||||
|
* Test PPA
|
||||||
|
|
||||||
|
-- dotCloud <ops@dotcloud.com> Fri, 15 Apr 2013 12:14:50 -0700
|
||||||
|
|
||||||
|
|
||||||
|
lxc-docker (0.1.4-1) precise; urgency=low
|
||||||
|
|
||||||
|
Improvements [+], Updates [*], Bug fixes [-]:
|
||||||
|
* Changed default bridge interface do 'docker0'
|
||||||
|
- Fix a race condition when running the port allocator
|
||||||
|
|
||||||
|
-- dotCloud <ops@dotcloud.com> Fri, 12 Apr 2013 12:20:06 -0700
|
||||||
|
|
||||||
|
|
||||||
|
lxc-docker (0.1.0-1) unstable; urgency=low
|
||||||
|
|
||||||
* Initial release
|
* Initial release
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
Source: lxc-docker
|
Source: lxc-docker
|
||||||
Section: misc
|
Section: misc
|
||||||
Priority: extra
|
Priority: extra
|
||||||
Homepage: http://docker.io
|
|
||||||
Maintainer: Daniel Mizyrycki <daniel@dotcloud.com>
|
Maintainer: Daniel Mizyrycki <daniel@dotcloud.com>
|
||||||
Build-Depends: debhelper (>= 8.0.0), pkg-config, git, golang, libsqlite3-dev
|
Build-Depends: debhelper,autotools-dev,devscripts,golang
|
||||||
Vcs-Git: http://github.com/dotcloud/docker.git
|
|
||||||
Standards-Version: 3.9.3
|
Standards-Version: 3.9.3
|
||||||
|
Homepage: http://github.com/dotcloud/docker
|
||||||
|
|
||||||
Package: lxc-docker
|
Package: lxc-docker
|
||||||
Architecture: amd64
|
Architecture: linux-any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, lxc, wget, bsdtar, curl, sqlite3
|
Depends: ${misc:Depends},${shlibs:Depends},lxc,bsdtar
|
||||||
Conflicts: docker
|
Conflicts: docker
|
||||||
Description: A process manager with superpowers
|
Description: lxc-docker is a Linux container runtime
|
||||||
It encapsulates heterogeneous payloads in Standard Containers, and runs
|
Docker complements LXC with a high-level API which operates at the process
|
||||||
them on any server with strong guarantees of isolation and repeatability.
|
level. It runs unix processes with strong guarantees of isolation and
|
||||||
Is is a great building block for automating distributed systems:
|
repeatability across servers.
|
||||||
large-scale web deployments, database clusters, continuous deployment
|
Docker is a great building block for automating distributed systems:
|
||||||
systems, private PaaS, service-oriented architectures, etc.
|
large-scale web deployments, database clusters, continuous deployment systems,
|
||||||
|
private PaaS, service-oriented architectures, etc.
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
Format: http://dep.debian.net/deps/dep5
|
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Upstream-Name: docker
|
Upstream-Name: docker
|
||||||
Source: https://github.com/dotcloud/docker
|
Upstream-Contact: DotCloud Inc <opensource@dotcloud.com>
|
||||||
|
Source: http://github.com/dotcloud/docker
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2012 DotCloud Inc (opensource@dotcloud.com)
|
Copyright: 2012, DotCloud Inc <opensource@dotcloud.com>
|
||||||
License: Apache License Version 2.0
|
License: Apache-2.0
|
||||||
|
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
http://www.apache.org/licenses/
|
http://www.apache.org/licenses/
|
||||||
|
@ -194,7 +194,7 @@ License: Apache License Version 2.0
|
||||||
same "printed page" as the copyright notice for easier
|
same "printed page" as the copyright notice for easier
|
||||||
identification within third-party archives.
|
identification within third-party archives.
|
||||||
|
|
||||||
Copyright 2012 DotCloud Inc (opensource@dotcloud.com)
|
Copyright 2012 DotCloud Inc
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -207,3 +207,31 @@ License: Apache License Version 2.0
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
Files: src/github.com/kr/pty/*
|
||||||
|
Copyright: Copyright (c) 2011 Keith Rarick
|
||||||
|
License: Expat
|
||||||
|
Copyright (c) 2011 Keith Rarick
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated
|
||||||
|
documentation files (the "Software"), to deal in the
|
||||||
|
Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute,
|
||||||
|
sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall
|
||||||
|
be included in all copies or substantial portions of the
|
||||||
|
Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||||
|
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||||
|
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||||
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
|
@ -5,6 +5,6 @@ stop on starting rc RUNLEVEL=[016]
|
||||||
respawn
|
respawn
|
||||||
|
|
||||||
script
|
script
|
||||||
test -f /etc/default/locale && . /etc/default/locale || true
|
/usr/bin/test -f /etc/default/locale && . /etc/default/locale || true
|
||||||
LANG=$LANG LC_ALL=$LANG /usr/bin/docker -d
|
LANG=$LANG LC_ALL=$LANG /usr/bin/docker -d
|
||||||
end script
|
end script
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Start docker
|
||||||
|
/sbin/start docker
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Stop docker
|
||||||
|
/sbin/stop docker
|
|
@ -0,0 +1,34 @@
|
||||||
|
Maintainer duty
|
||||||
|
===============
|
||||||
|
|
||||||
|
Ubuntu allows developers to use their PPA (Personal Package Archive)
|
||||||
|
repository. This is very convenient for the users as they just need to add
|
||||||
|
the PPA address, update their package database and use the apt-get tool.
|
||||||
|
|
||||||
|
The official lxc-docker package is located on launchpad and can be accessed
|
||||||
|
adding the following line to /etc/apt/sources.list ::
|
||||||
|
|
||||||
|
deb http://ppa.launchpad.net/dotcloud/lxc-docker/ubuntu precise main
|
||||||
|
|
||||||
|
|
||||||
|
Realeasing a new package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The most relevant information to update is the changelog file:
|
||||||
|
Each new release should create a new first paragraph with new release version,
|
||||||
|
changes, and the maintainer information.
|
||||||
|
|
||||||
|
Assuming your PPA GPG signing key is on /media/usbdrive/docker.key, load it
|
||||||
|
into the GPG_KEY environment variable with::
|
||||||
|
|
||||||
|
export GPG_KEY=`cat /media/usbdrive/docker.key`
|
||||||
|
|
||||||
|
|
||||||
|
After this is done and you are ready to upload the package to the PPA, you have
|
||||||
|
a couple of choices:
|
||||||
|
|
||||||
|
* Follow README.debian to generate the actual source packages and upload them
|
||||||
|
to the PPA
|
||||||
|
* Let vagrant do all the work for you::
|
||||||
|
|
||||||
|
( cd docker/packaging/ubuntu; vagrant up )
|
Загрузка…
Ссылка в новой задаче