mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Merge pull request #30290 from vdemeester/carry-pr-27834
Carry #27834 — Do not require `.git` in the build context
This commit is contained in:
		
						commit
						4af2555a35
					
				
					 5 changed files with 25 additions and 24 deletions
				
			
		| 
						 | 
					@ -2,3 +2,4 @@ bundles
 | 
				
			||||||
.gopath
 | 
					.gopath
 | 
				
			||||||
vendor/pkg
 | 
					vendor/pkg
 | 
				
			||||||
.go-pkg-cache
 | 
					.go-pkg-cache
 | 
				
			||||||
 | 
					.git
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,8 +71,9 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 4. Build the docker executable binaries by running one of the following:
 | 
					# 4. Build the docker executable binaries by running one of the following:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#    >>   docker run --name binaries nativebuildimage hack\make.ps1 -Binary
 | 
					#    >>   $DOCKER_GITCOMMIT=(git rev-parse --short HEAD)
 | 
				
			||||||
#    >>   docker run --name binaries -m 2GB nativebuildimage hack\make.ps1 -Binary    (if using Hyper-V containers)
 | 
					#    >>   docker run --name binaries -e DOCKER_GITCOMMIT=$DOCKER_GITCOMMIT nativebuildimage hack\make.ps1 -Binary
 | 
				
			||||||
 | 
					#    >>   docker run --name binaries -e DOCKER_GITCOMMIT=$DOCKER_GITCOMMIT -m 2GB nativebuildimage hack\make.ps1 -Binary    (if using Hyper-V containers)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 5. Copy the binaries out of the container, replacing HostPath with an appropriate destination 
 | 
					# 5. Copy the binaries out of the container, replacing HostPath with an appropriate destination 
 | 
				
			||||||
| 
						 | 
					@ -98,19 +99,14 @@
 | 
				
			||||||
# -----------------------------------------------------------------------------------------
 | 
					# -----------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#  The validation tests can either run in a container, or directly on the host. To run in a
 | 
					#  The validation tests can only run directly on the host. This is because they calculate
 | 
				
			||||||
#  container, ensure you have created the nativebuildimage above. Then run one of the
 | 
					#  information from the git repo, but the .git directory is not passed into the image as
 | 
				
			||||||
#  following from an (elevated) Windows PowerShell prompt:
 | 
					#  it is excluded via .dockerignore. Run the following from a Windows PowerShell prompt
 | 
				
			||||||
#
 | 
					#  (elevation is not required): (Note Go must be installed to run these tests)
 | 
				
			||||||
#    >>   docker run --rm nativebuildimage hack\make.ps1 -DCO -PkgImports -GoFormat
 | 
					 | 
				
			||||||
#    >>   docker run --rm -m 2GB nativebuildimage hack\make.ps1 -DCO -PkgImports -GoFormat    (if using Hyper-V containers)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# To run the validation tests on the host, from the root of the repository, run the
 | 
					 | 
				
			||||||
# following from a Windows PowerShell prompt (elevation is not required): (Note Go
 | 
					 | 
				
			||||||
# must be installed to run these tests)
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#    >>   hack\make.ps1 -DCO -PkgImports -GoFormat
 | 
					#    >>   hack\make.ps1 -DCO -PkgImports -GoFormat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -----------------------------------------------------------------------------------------
 | 
					# -----------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,7 +120,7 @@
 | 
				
			||||||
# -----------------------------------------------------------------------------------------
 | 
					# -----------------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#  To run all tests and binary build, ensure you have created the nativebuildimage above. Then 
 | 
					#  To run unit tests and binary build, ensure you have created the nativebuildimage above. Then 
 | 
				
			||||||
#  run one of the following from an (elevated) Windows PowerShell prompt:
 | 
					#  run one of the following from an (elevated) Windows PowerShell prompt:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#    >>   docker run nativebuildimage hack\make.ps1 -All
 | 
					#    >>   docker run nativebuildimage hack\make.ps1 -All
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -10,6 +10,9 @@ export DOCKER_INCREMENTAL_BINARY
 | 
				
			||||||
DOCKER_OSARCH := $(shell bash -c 'source hack/make/.detect-daemon-osarch && echo $${DOCKER_ENGINE_OSARCH:-$$DOCKER_CLIENT_OSARCH}')
 | 
					DOCKER_OSARCH := $(shell bash -c 'source hack/make/.detect-daemon-osarch && echo $${DOCKER_ENGINE_OSARCH:-$$DOCKER_CLIENT_OSARCH}')
 | 
				
			||||||
DOCKERFILE := $(shell bash -c 'source hack/make/.detect-daemon-osarch && echo $${DOCKERFILE}')
 | 
					DOCKERFILE := $(shell bash -c 'source hack/make/.detect-daemon-osarch && echo $${DOCKERFILE}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DOCKER_GITCOMMIT := $(shell git rev-parse --short HEAD || echo unsupported)
 | 
				
			||||||
 | 
					export DOCKER_GITCOMMIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# env vars passed through directly to Docker's build scripts
 | 
					# env vars passed through directly to Docker's build scripts
 | 
				
			||||||
# to allow things like `make KEEPBUNDLE=1 binary` easily
 | 
					# to allow things like `make KEEPBUNDLE=1 binary` easily
 | 
				
			||||||
# `project/PACKAGERS.md` have some limited documentation of some of these
 | 
					# `project/PACKAGERS.md` have some limited documentation of some of these
 | 
				
			||||||
| 
						 | 
					@ -49,7 +52,7 @@ DOCKER_MOUNT := $(if $(BIND_DIR),-v "$(CURDIR)/$(BIND_DIR):/go/src/github.com/do
 | 
				
			||||||
# This allows the test suite to be able to run without worrying about the underlying fs used by the container running the daemon (e.g. aufs-on-aufs), so long as the host running the container is running a supported fs.
 | 
					# This allows the test suite to be able to run without worrying about the underlying fs used by the container running the daemon (e.g. aufs-on-aufs), so long as the host running the container is running a supported fs.
 | 
				
			||||||
# The volume will be cleaned up when the container is removed due to `--rm`.
 | 
					# The volume will be cleaned up when the container is removed due to `--rm`.
 | 
				
			||||||
# Note that `BIND_DIR` will already be set to `bundles` if `DOCKER_HOST` is not set (see above BIND_DIR line), in such case this will do nothing since `DOCKER_MOUNT` will already be set.
 | 
					# Note that `BIND_DIR` will already be set to `bundles` if `DOCKER_HOST` is not set (see above BIND_DIR line), in such case this will do nothing since `DOCKER_MOUNT` will already be set.
 | 
				
			||||||
DOCKER_MOUNT := $(if $(DOCKER_MOUNT),$(DOCKER_MOUNT),-v /go/src/github.com/docker/docker/bundles)
 | 
					DOCKER_MOUNT := $(if $(DOCKER_MOUNT),$(DOCKER_MOUNT),-v /go/src/github.com/docker/docker/bundles) -v $(CURDIR)/.git:/go/src/github.com/docker/docker/.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This allows to set the docker-dev container name
 | 
					# This allows to set the docker-dev container name
 | 
				
			||||||
DOCKER_CONTAINER_NAME := $(if $(CONTAINER_NAME),--name $(CONTAINER_NAME),)
 | 
					DOCKER_CONTAINER_NAME := $(if $(CONTAINER_NAME),--name $(CONTAINER_NAME),)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@
 | 
				
			||||||
                "hack\make.ps1 -Client" to build just the client 64-bit binary
 | 
					                "hack\make.ps1 -Client" to build just the client 64-bit binary
 | 
				
			||||||
                "hack\make.ps1 -TestUnit" to run unit tests
 | 
					                "hack\make.ps1 -TestUnit" to run unit tests
 | 
				
			||||||
                "hack\make.ps1 -Binary -TestUnit" to build the binaries and run unit tests
 | 
					                "hack\make.ps1 -Binary -TestUnit" to build the binaries and run unit tests
 | 
				
			||||||
                "hack\make.ps1 -All" to run everything this script knows about
 | 
					                "hack\make.ps1 -All" to run everything this script knows about that can run in a container
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PARAMETER Client
 | 
					.PARAMETER Client
 | 
				
			||||||
     Builds the client binaries.
 | 
					     Builds the client binaries.
 | 
				
			||||||
| 
						 | 
					@ -48,24 +48,23 @@
 | 
				
			||||||
     Adds a custom string to be appended to the commit ID (spaces are stripped).
 | 
					     Adds a custom string to be appended to the commit ID (spaces are stripped).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PARAMETER DCO
 | 
					.PARAMETER DCO
 | 
				
			||||||
     Runs the DCO (Developer Certificate Of Origin) test.
 | 
					     Runs the DCO (Developer Certificate Of Origin) test (must be run outside a container).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PARAMETER PkgImports
 | 
					.PARAMETER PkgImports
 | 
				
			||||||
     Runs the pkg\ directory imports test.
 | 
					     Runs the pkg\ directory imports test (must be run outside a container).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PARAMETER GoFormat
 | 
					.PARAMETER GoFormat
 | 
				
			||||||
     Runs the Go formatting test.
 | 
					     Runs the Go formatting test (must be run outside a container).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PARAMETER TestUnit
 | 
					.PARAMETER TestUnit
 | 
				
			||||||
     Runs unit tests.
 | 
					     Runs unit tests.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PARAMETER All
 | 
					.PARAMETER All
 | 
				
			||||||
     Runs everything this script knows about.
 | 
					     Runs everything this script knows about that can run in a container.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TODO
 | 
					TODO
 | 
				
			||||||
- Unify the head commit
 | 
					- Unify the head commit
 | 
				
			||||||
- Sort out the GITCOMMIT environment variable in the absence of a .git (longer term)
 | 
					 | 
				
			||||||
- Add golint and other checks (swagger maybe?)
 | 
					- Add golint and other checks (swagger maybe?)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#>
 | 
					#>
 | 
				
			||||||
| 
						 | 
					@ -334,7 +333,9 @@ Try {
 | 
				
			||||||
    Push-Location $root
 | 
					    Push-Location $root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Handle the "-All" shortcut to turn on all things we can handle.
 | 
					    # Handle the "-All" shortcut to turn on all things we can handle.
 | 
				
			||||||
    if ($All) { $Client=$True; $Daemon=$True; $DCO=$True; $PkgImports=$True; $GoFormat=$True; $TestUnit=$True }
 | 
					    # Note we expressly only include the items which can run in a container - the validations tests cannot
 | 
				
			||||||
 | 
					    # as they require the .git directory which is excluded from the image by .dockerignore
 | 
				
			||||||
 | 
					    if ($All) { $Client=$True; $Daemon=$True; $TestUnit=$True }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Handle the "-Binary" shortcut to build both client and daemon.
 | 
					    # Handle the "-Binary" shortcut to build both client and daemon.
 | 
				
			||||||
    if ($Binary) { $Client = $True; $Daemon = $True }
 | 
					    if ($Binary) { $Client = $True; $Daemon = $True }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,9 @@ DEFAULT_BUNDLES=(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VERSION=$(< ./VERSION)
 | 
					VERSION=$(< ./VERSION)
 | 
				
			||||||
! BUILDTIME=$(date --rfc-3339 ns 2> /dev/null | sed -e 's/ /T/')
 | 
					! BUILDTIME=$(date --rfc-3339 ns 2> /dev/null | sed -e 's/ /T/')
 | 
				
			||||||
if command -v git &> /dev/null && [ -d .git ] && git rev-parse &> /dev/null; then
 | 
					if [ "$DOCKER_GITCOMMIT" ]; then
 | 
				
			||||||
 | 
						GITCOMMIT="$DOCKER_GITCOMMIT"
 | 
				
			||||||
 | 
					elif command -v git &> /dev/null && [ -d .git ] && git rev-parse &> /dev/null; then
 | 
				
			||||||
	GITCOMMIT=$(git rev-parse --short HEAD)
 | 
						GITCOMMIT=$(git rev-parse --short HEAD)
 | 
				
			||||||
	if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
 | 
						if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
 | 
				
			||||||
		GITCOMMIT="$GITCOMMIT-unsupported"
 | 
							GITCOMMIT="$GITCOMMIT-unsupported"
 | 
				
			||||||
| 
						 | 
					@ -83,8 +85,6 @@ if command -v git &> /dev/null && [ -d .git ] && git rev-parse &> /dev/null; the
 | 
				
			||||||
		git status --porcelain --untracked-files=no
 | 
							git status --porcelain --untracked-files=no
 | 
				
			||||||
		echo "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 | 
							echo "#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
elif [ "$DOCKER_GITCOMMIT" ]; then
 | 
					 | 
				
			||||||
	GITCOMMIT="$DOCKER_GITCOMMIT"
 | 
					 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
	echo >&2 'error: .git directory missing and DOCKER_GITCOMMIT not specified'
 | 
						echo >&2 'error: .git directory missing and DOCKER_GITCOMMIT not specified'
 | 
				
			||||||
	echo >&2 '  Please either build with the .git directory accessible, or specify the'
 | 
						echo >&2 '  Please either build with the .git directory accessible, or specify the'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue