diff options
author | Joffrey F <f.joffrey@gmail.com> | 2018-10-05 19:03:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-05 19:03:23 +0200 |
commit | 756eae0f017a08c5b6c967050250b5e818b52c48 (patch) | |
tree | fd3b5d597f0dabea90b0d24a8c4c33d4f4dfdd96 /script | |
parent | e3e93d40a8b141544b9295ac05a5a15bbc872134 (diff) | |
parent | 6a35663781779f298c2032fa620c08c2b890ef36 (diff) |
Merge pull request #6251 from docker/decontainerize-release
Decontainerize release script
Diffstat (limited to 'script')
-rw-r--r-- | script/release/Dockerfile | 15 | ||||
-rw-r--r-- | script/release/README.md | 21 | ||||
-rwxr-xr-x | script/release/release.sh | 37 | ||||
-rwxr-xr-x | script/release/setup-venv.sh | 30 |
4 files changed, 53 insertions, 50 deletions
diff --git a/script/release/Dockerfile b/script/release/Dockerfile deleted file mode 100644 index e5af676a..00000000 --- a/script/release/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM python:3.6 -RUN mkdir -p /src && pip install -U Jinja2==2.10 \ - PyGithub==1.39 \ - pypandoc==1.4 \ - GitPython==2.1.9 \ - requests==2.18.4 \ - twine==1.11.0 && \ - apt-get update && apt-get install -y pandoc - -VOLUME /src/script/release -WORKDIR /src -COPY . /src -RUN python setup.py develop -ENTRYPOINT ["python", "script/release/release.py"] -CMD ["--help"] diff --git a/script/release/README.md b/script/release/README.md index 65883f5d..f7f911e5 100644 --- a/script/release/README.md +++ b/script/release/README.md @@ -9,8 +9,7 @@ The following things are required to bring a release to a successful conclusion ### Local Docker engine (Linux Containers) -The release script runs inside a container and builds images that will be part -of the release. +The release script builds images that will be part of the release. ### Docker Hub account @@ -20,11 +19,9 @@ following repositories: - docker/compose - docker/compose-tests -### A local Python environment +### Python -While most of the release script is running inside a Docker container, -fetching local Docker credentials depends on the `docker` Python package -being available locally. +The release script is written in Python and requires Python 3.3 at minimum. ### A Github account and Github API token @@ -59,6 +56,18 @@ Said account needs to be a member of the maintainers group for the Moreover, the `~/.pypirc` file should exist on your host and contain the relevant pypi credentials. +The following is a sample `.pypirc` provided as a guideline: + +``` +[distutils] +index-servers = + pypi + +[pypi] +username = user +password = pass +``` + ## Start a feature release A feature release is a release that includes all changes present in the diff --git a/script/release/release.sh b/script/release/release.sh index ee75b13a..7947316e 100755 --- a/script/release/release.sh +++ b/script/release/release.sh @@ -1,36 +1,15 @@ #!/bin/sh -docker image inspect compose/release-tool > /dev/null -if test $? -ne 0; then - docker build -t compose/release-tool -f $(pwd)/script/release/Dockerfile $(pwd) +if test -d ./.release-venv; then + true +else + ./script/release/setup-venv.sh fi -if test -z $GITHUB_TOKEN; then - echo "GITHUB_TOKEN environment variable must be set" - exit 1 -fi - -if test -z $BINTRAY_TOKEN; then - echo "BINTRAY_TOKEN environment variable must be set" - exit 1 -fi +args=$* -if test -z $(python -c "import docker; print(docker.version)" 2>/dev/null); then - echo "This script requires the 'docker' Python package to be installed locally" - exit 1 +if test -z $args; then + args="--help" fi -hub_credentials=$(python -c "from docker import auth; cfg = auth.load_config(); print(auth.encode_header(auth.resolve_authconfig(cfg, 'docker.io')).decode('ascii'))") - -docker run -it \ - -e GITHUB_TOKEN=$GITHUB_TOKEN \ - -e BINTRAY_TOKEN=$BINTRAY_TOKEN \ - -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK \ - -e HUB_CREDENTIALS=$hub_credentials \ - --mount type=bind,source=$(pwd),target=/src \ - --mount type=bind,source=$HOME/.gitconfig,target=/root/.gitconfig \ - --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ - --mount type=bind,source=$HOME/.ssh,target=/root/.ssh \ - --mount type=bind,source=/tmp,target=/tmp \ - -v $HOME/.pypirc:/root/.pypirc \ - compose/release-tool $* +./.release-venv/bin/python ./script/release/release.py $args diff --git a/script/release/setup-venv.sh b/script/release/setup-venv.sh new file mode 100755 index 00000000..d3d3f9a4 --- /dev/null +++ b/script/release/setup-venv.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +if test -z $PYTHONBIN; then + PYTHONBIN=$(which python3) + if test -z $PYTHONBIN; then + PYTHONBIN=$(which python) + fi +fi + +VERSION=$($PYTHONBIN -c "import sys; print('{}.{}'.format(*sys.version_info[0:2]))") +if test $(echo $VERSION | cut -d. -f1) -lt 3; then + echo "Python 3.3 or above is required" +fi + +if test $(echo $VERSION | cut -d. -f2) -lt 3; then + echo "Python 3.3 or above is required" +fi + +$PYTHONBIN -m venv ./.release-venv + +VENVBINS=./.release-venv/bin + +$VENVBINS/pip install -U Jinja2==2.10 \ + PyGithub==1.39 \ + pypandoc==1.4 \ + GitPython==2.1.9 \ + requests==2.18.4 \ + twine==1.11.0 + +$VENVBINS/python setup.py develop |