Explorar o código

Merge pull request #1333 from dotcloud/1331-testing-registry

testing, issue #1331: Add registry functional test to docker-ci
Daniel Mizyrycki %!s(int64=12) %!d(string=hai) anos
pai
achega
ea2486d631

+ 4 - 0
testing/README.rst

@@ -40,6 +40,10 @@ Deployment
   export SMTP_USER=xxxxxxxxxxxx
   export SMTP_PWD=xxxxxxxxxxxx
 
+  # Define docker registry functional test credentials
+  export REGISTRY_USER=xxxxxxxxxxxx
+  export REGISTRY_PWD=xxxxxxxxxxxx
+
   # Checkout docker
   git clone git://github.com/dotcloud/docker.git
 

+ 3 - 1
testing/Vagrantfile

@@ -29,7 +29,9 @@ Vagrant::Config.run do |config|
       "chown #{USER}.#{USER} /data; cd /data; " \
       "#{CFG_PATH}/setup.sh #{USER} #{CFG_PATH} #{ENV['BUILDBOT_PWD']} " \
         "#{ENV['IRC_PWD']} #{ENV['IRC_CHANNEL']} #{ENV['SMTP_USER']} " \
-        "#{ENV['SMTP_PWD']} #{ENV['EMAIL_RCP']}; "
+        "#{ENV['SMTP_PWD']} #{ENV['EMAIL_RCP']}; " \
+      "#{CFG_PATH}/setup_credentials.sh #{USER} " \
+        "#{ENV['REGISTRY_USER']} #{ENV['REGISTRY_PWD']}; "
     # Install docker dependencies
     pkg_cmd << "apt-get install -q -y python-software-properties; " \
       "add-apt-repository -y ppa:dotcloud/docker-golang/ubuntu; apt-get update -qq; " \

+ 5 - 0
testing/buildbot/credentials.cfg

@@ -0,0 +1,5 @@
+# Credentials for tests. Buildbot source this file on tests
+# when needed.
+
+# Docker registry credentials. Format: 'username:password'
+export DOCKER_CREDS=''

+ 18 - 2
testing/buildbot/master.cfg

@@ -19,6 +19,7 @@ TEST_USER = 'buildbot'  # Credential to authenticate build triggers
 TEST_PWD = 'docker'     # Credential to authenticate build triggers
 BUILDER_NAME = 'docker'
 GITHUB_DOCKER = 'github.com/dotcloud/docker'
+BUILDBOT_PATH = '/data/buildbot'
 DOCKER_PATH = '/data/docker'
 BUILDER_PATH = '/data/buildbot/slave/{0}/build'.format(BUILDER_NAME)
 DOCKER_BUILD_PATH = BUILDER_PATH + '/src/github.com/dotcloud/docker'
@@ -41,16 +42,19 @@ c['db'] = {'db_url':"sqlite:///state.sqlite"}
 c['slaves'] = [BuildSlave('buildworker', BUILDBOT_PWD)]
 c['slavePortnum'] = PORT_MASTER
 
+
 # Schedulers
 c['schedulers'] = [ForceScheduler(name='trigger', builderNames=[BUILDER_NAME,
-    'coverage'])]
+    'registry','coverage'])]
 c['schedulers'] += [SingleBranchScheduler(name="all",
     change_filter=filter.ChangeFilter(branch='master'), treeStableTimer=None,
     builderNames=[BUILDER_NAME])]
-c['schedulers'] += [Nightly(name='daily', branch=None, builderNames=['coverage'],
+c['schedulers'] += [Nightly(name='daily', branch=None, builderNames=['coverage','registry'],
     hour=0, minute=30)]
 
+
 # Builders
+# Docker commit test
 factory = BuildFactory()
 factory.addStep(ShellCommand(description='Docker',logEnviron=False,usePTY=True,
     command=["sh", "-c", Interpolate("cd ..; rm -rf build; export GOPATH={0}; "
@@ -58,6 +62,7 @@ factory.addStep(ShellCommand(description='Docker',logEnviron=False,usePTY=True,
     "go test -v".format(BUILDER_PATH,GITHUB_DOCKER,DOCKER_BUILD_PATH))]))
 c['builders'] = [BuilderConfig(name=BUILDER_NAME,slavenames=['buildworker'],
     factory=factory)]
+
 # Docker coverage test
 coverage_cmd = ('GOPATH=`pwd` go get -d github.com/dotcloud/docker\n'
     'GOPATH=`pwd` go get github.com/axw/gocov/gocov\n'
@@ -69,6 +74,17 @@ factory.addStep(ShellCommand(description='Coverage',logEnviron=False,usePTY=True
 c['builders'] += [BuilderConfig(name='coverage',slavenames=['buildworker'],
     factory=factory)]
 
+# Registry Functionaltest builder
+factory = BuildFactory()
+factory.addStep(ShellCommand(description='registry', logEnviron=False,
+    command='. {0}/master/credentials.cfg; '
+    '{1}/testing/functionaltests/test_registry.sh'.format(BUILDBOT_PATH,
+    DOCKER_PATH), usePTY=True))
+
+c['builders'] += [BuilderConfig(name='registry',slavenames=['buildworker'],
+    factory=factory)]
+
+
 # Status
 authz_cfg = authz.Authz(auth=auth.BasicAuth([(TEST_USER, TEST_PWD)]),
     forceBuild='auth')

+ 1 - 0
testing/buildbot/requirements.txt

@@ -4,3 +4,4 @@ buildbot==0.8.7p1
 buildbot_slave==0.8.7p1
 nose==1.2.1
 requests==1.1.0
+flask==0.10.1

+ 17 - 0
testing/buildbot/setup_credentials.sh

@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# Setup of test credentials. Called by Vagrantfile
+export PATH="/bin:sbin:/usr/bin:/usr/sbin:/usr/local/bin"
+
+USER=$1
+REGISTRY_USER=$2
+REGISTRY_PWD=$3
+
+BUILDBOT_PATH="/data/buildbot"
+DOCKER_PATH="/data/docker"
+
+function run { su $USER -c "$1"; }
+
+run "cp $DOCKER_PATH/testing/buildbot/credentials.cfg $BUILDBOT_PATH/master"
+cd $BUILDBOT_PATH/master
+run "sed -i -E 's#(export DOCKER_CREDS=).+#\1\"$REGISTRY_USER:$REGISTRY_PWD\"#' credentials.cfg"

+ 11 - 0
testing/functionaltests/test_registry.sh

@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Cleanup
+rm -rf docker-registry
+
+# Get latest docker registry
+git clone https://github.com/dotcloud/docker-registry.git
+
+# Configure and run registry tests
+cd docker-registry; cp config_sample.yml config.yml
+cd test; python -m unittest workflow