Browse Source

Merge pull request #632 from docker/eula-packaging

Add Docker EULA to packages
Guillaume Tardif 5 years ago
parent
commit
64cd8ebf8c

+ 1 - 0
.dockerignore

@@ -1,3 +1,4 @@
 .git/
 bin/
+dist/
 tests/node-client/node_modules/

+ 2 - 2
.github/workflows/release.yaml

@@ -25,10 +25,10 @@ jobs:
             ${{ runner.os }}-go-
 
       - name: Build
-        run: make -f builder.Makefile cross
+        run: make -f builder.Makefile package
 
       - uses: ncipollo/release-action@v1
         with:
-          artifacts: "bin/*"
+          artifacts: "dist/*"
           prerelease: true
           token: ${{ secrets.GITHUB_TOKEN }}

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 bin/
+dist/

+ 23 - 3
builder.Makefile

@@ -32,39 +32,59 @@ GO_BUILD=$(STATIC_FLAGS) go build -trimpath -ldflags=$(LDFLAGS)
 BINARY?=bin/docker
 BINARY_WITH_EXTENSION=$(BINARY)$(EXTENSION)
 
+WORK_DIR:=$(shell mktemp -d)
+
 TAGS:=
 ifdef BUILD_TAGS
   TAGS=-tags $(BUILD_TAGS)
 endif
 
+TAR_TRANSFORM:=--transform s/packaging/docker/ --transform s/bin/docker/ --transform s/docker-linux-amd64/docker/ --transform s/docker-darwin-amd64/docker/
+ifneq ($(findstring bsd,$(shell tar --version)),)
+  TAR_TRANSFORM=-s /packaging/docker/ -s /bin/docker/ -s /docker-linux-amd64/docker/ -s /docker-darwin-amd64/docker/
+endif
+
 all: cli
 
+.PHONY: protos
 protos:
 	protoc -I. --go_out=plugins=grpc,paths=source_relative:. ${PROTOS}
 
+.PHONY: cli
 cli:
 	GOOS=${GOOS} GOARCH=${GOARCH} $(GO_BUILD) $(TAGS) -o $(BINARY_WITH_EXTENSION) ./cli
 
+.PHONY: cross
 cross:
 	GOOS=linux   GOARCH=amd64 $(GO_BUILD) $(TAGS) -o $(BINARY)-linux-amd64 ./cli
 	GOOS=darwin  GOARCH=amd64 $(GO_BUILD) $(TAGS) -o $(BINARY)-darwin-amd64 ./cli
 	GOOS=windows GOARCH=amd64 $(GO_BUILD) $(TAGS) -o $(BINARY)-windows-amd64.exe ./cli
 
+.PHONY: test
 test:
 	go test $(TAGS) -cover $(shell go list ./... | grep -vE 'e2e')
 
+.PHONY: lint
 lint:
 	golangci-lint run --timeout 10m0s ./...
 
+.PHONY: import-restrictions
 import-restrictions:
 	import-restrictions --configuration import-restrictions.yaml
 
+.PHONY: check-licese-headers
 check-license-headers:
 	./scripts/validate/fileheader
 
+.PHONY: check-go-mod
 check-go-mod:
 	./scripts/validate/check-go-mod
 
-FORCE:
-
-.PHONY: all protos cli cross test lint
+.PHONY: package
+package: cross
+	mkdir -p dist
+	tar -czf dist/docker-linux-amd64.tar.gz $(TAR_TRANSFORM) packaging/LICENSE $(BINARY)-linux-amd64
+	tar -czf dist/docker-darwin-amd64.tar.gz $(TAR_TRANSFORM) packaging/LICENSE $(BINARY)-darwin-amd64
+	cp $(BINARY)-windows-amd64.exe $(WORK_DIR)/docker.exe
+	rm -f dist/docker-windows-amd64.zip && zip dist/docker-windows-amd64.zip -j packaging/LICENSE $(WORK_DIR)/docker.exe
+	rm -r $(WORK_DIR)

+ 2 - 0
packaging/LICENSE

@@ -0,0 +1,2 @@
+The Docker End User License Agreement (https://www.docker.com/legal/docker-software-end-user-license-agreement) describes Docker's Terms for this software.
+By downloading, accessing, or using this software you expressly accept and agree to the Terms set out in the Docker End User License Agreement.

+ 0 - 14
scripts/install/Dockerfile-testInstall

@@ -1,14 +0,0 @@
-FROM ubuntu:latest
-
-RUN apt-get update
-RUN apt-get -y install curl grep
-RUN curl https://get.docker.com | sh
-
-COPY install_linux.sh /scripts/install_linux.sh
-RUN chmod +x /scripts/install_linux.sh
-RUN /scripts/install_linux.sh
-RUN docker version | grep Azure
-
-# check we can update
-RUN /scripts/install_linux.sh
-RUN docker version | grep Azure

+ 14 - 12
scripts/install/install_linux.sh

@@ -14,7 +14,7 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-# Script to install the Docker ACI integration CLI on Ubuntu (Beta).
+# Script to install the Docker Compose CLI on Ubuntu (Beta).
 
 set -eu
 
@@ -106,18 +106,19 @@ if ! [ "$(command -v curl)" ]; then
 	exit 1
 fi
 
-DOWNLOAD_URL=$(curl -s ${RELEASE_URL} | grep "browser_download_url.*docker-linux-amd64" | cut -d : -f 2,3)
+DOWNLOAD_URL=${DOWNLOAD_URL:-$(curl -s ${RELEASE_URL} | grep "browser_download_url.*docker-linux-amd64.tar.gz" | cut -d : -f 2,3)}
 
-# Check if the ACI CLI is already installed
+# Check if the Compose CLI is already installed
 if [ $(is_new_cli "docker") -eq 1 ]; then
 	if [ $(is_new_cli "/usr/local/bin/docker") -eq 1 ]; then
-		echo "You already have the Docker ACI Integration CLI installed, overriding with latest version"
+		echo "You already have the Docker Compose CLI installed, overriding with latest version"
 		download_dir=$($sh_c 'mktemp -d')
-		$sh_c "${download_cmd} ${download_dir}/docker-aci ${DOWNLOAD_URL}"
-		$sudo_sh_c "install -m 775 ${download_dir}/docker-aci /usr/local/bin/docker"
+		$sh_c "${download_cmd} ${download_dir}/docker-compose-cli.tar.gz ${DOWNLOAD_URL}"
+		$sh_c "tar xzf ${download_dir}/docker-compose-cli.tar.gz -C ${download_dir} --strip-components 1"
+		$sudo_sh_c "install -m 775 ${download_dir}/docker /usr/local/bin/docker"
 		exit 0
 	fi
-	echo "You already have the Docker ACI Integration CLI installed, in a different location."
+	echo "You already have the Docker Compose CLI installed, in a different location."
 	exit 1
 fi
 
@@ -169,7 +170,8 @@ echo "Downloading CLI..."
 
 # Download CLI to temporary directory
 download_dir=$($sh_c 'mktemp -d')
-$sh_c "${download_cmd} ${download_dir}/docker-aci ${DOWNLOAD_URL}"
+$sh_c "${download_cmd} ${download_dir}/docker-compose-cli.tar.gz ${DOWNLOAD_URL}"
+$sh_c "tar xzf ${download_dir}/docker-compose-cli.tar.gz -C ${download_dir} --strip-components 1"
 
 echo "Downloaded CLI!"
 echo "Installing CLI..."
@@ -178,7 +180,7 @@ echo "Installing CLI..."
 $sudo_sh_c "ln -s ${existing_cli_path} ${link_path}"
 
 # Install downloaded CLI
-$sudo_sh_c "install -m 775 ${download_dir}/docker-aci /usr/local/bin/docker"
+$sudo_sh_c "install -m 775 ${download_dir}/docker-linux-amd64 /usr/local/bin/docker"
 
 # Clear cache
 cleared_cache=1
@@ -196,12 +198,12 @@ if [ -n "$DRY_RUN" ]; then
 fi
 
 if [ -n "$cleared_cache" ]; then
-	# Check ACI CLI is working
+	# Check Compose CLI is working
 	if [ $(is_new_cli "docker") -eq 0 ]; then
-		echo "Error: Docker ACI Integration CLI installation error"
+		echo "Error: Docker Compose CLI installation error"
 		exit 1
 	fi
 	echo "Done!"
 else
-	echo "Please log out and in again to use the Docker ACI integration CLI"
+	echo "Please log out and in again to use the Docker Compose CLI"
 fi

+ 42 - 0
scripts/install/test.Dockerfile

@@ -0,0 +1,42 @@
+#   Copyright 2020 Docker Compose CLI authors
+
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+
+#       http://www.apache.org/licenses/LICENSE-2.0
+
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+# Distro options: ubuntu, centos
+ARG DISTRO=ubuntu
+
+FROM ubuntu:20.04 AS base-ubuntu
+RUN apt-get update && apt-get install -y \
+    curl
+RUN curl https://get.docker.com | sh
+
+FROM centos:7 AS base-centos
+RUN curl https://get.docker.com | sh
+
+FROM base-${DISTRO} AS install
+COPY install_linux.sh /scripts/install_linux.sh
+RUN chmod +x /scripts/install_linux.sh
+ARG DOWNLOAD_URL=
+RUN DOWNLOAD_URL=${DOWNLOAD_URL} /scripts/install_linux.sh
+RUN docker version | grep Cloud
+
+FROM install AS upgrade
+RUN DOWNLOAD_URL=${DOWNLOAD_URL} /scripts/install_linux.sh
+RUN docker version | grep Cloud
+
+# To run this test locally, start an HTTP server that serves the dist/ folder
+# then run a docker build passing the DOWNLOAD_URL as a build arg:
+# $ cd dist/ && python3 -m http.server &
+# $ docker build -f test.Dockerfile --build-arg DOWNLOAD_URL=http://192.168.0.22:8000/docker-linux-amd64.tar.gz .
+#
+# You can specify centos or ubuntu as distros using the DISTRO build arg.