Skip to content
This repository was archived by the owner on May 23, 2024. It is now read-only.

Commit a92b896

Browse files
authored
simplify tfs versioning (#5)
1 parent 32bb4f7 commit a92b896

File tree

10 files changed

+67
-111
lines changed

10 files changed

+67
-111
lines changed

buildspec.yml

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,44 @@ version: 0.2
33
phases:
44
pre_build:
55
commands:
6-
- start-dockerd.sh
6+
- start-dockerd
77

88
# fix permissions dropped by CodePipeline
99
- chmod +x ./scripts/*.sh
1010
- chmod +x ./container/sagemaker/serve
1111
build:
1212
commands:
13+
# prepare the release (update versions, changelog etc.)
14+
- if-release-build git-release --prepare
15+
1316
- tox -e flake8,pylint,jshint
1417

1518
# build images
16-
- ./scripts/build.sh --version 1.11 --arch cpu
17-
- ./scripts/build.sh --version 1.11 --arch gpu
18-
- ./scripts/build.sh --version 1.12 --arch cpu
19-
- ./scripts/build.sh --version 1.12 --arch gpu
19+
- ./scripts/build.sh --version 1.11.1 --arch cpu
20+
- ./scripts/build.sh --version 1.11.1 --arch gpu
21+
- ./scripts/build.sh --version 1.12.0 --arch cpu
22+
- ./scripts/build.sh --version 1.12.0 --arch gpu
2023

2124
# run tests
2225
- tox -e py36
26+
27+
# push docker images to ECR
28+
- if-release-build ./scripts/publish.sh --version 1.11.1 --arch cpu
29+
- if-release-build ./scripts/publish.sh --version 1.11.1 --arch gpu
30+
- if-release-build ./scripts/publish.sh --version 1.12.0 --arch cpu
31+
- if-release-build ./scripts/publish.sh --version 1.12.0 --arch gpu
32+
33+
# write images to manifest (used by deploy step)
34+
- if-release-build create-manifest docker
35+
--images
36+
sagemaker-tensorflow-serving:1.11.1-cpu
37+
sagemaker-tensorflow-serving:1.11.1-gpu
38+
sagemaker-tensorflow-serving:1.12.0-cpu
39+
sagemaker-tensorflow-serving:1.12.0-gpu
40+
41+
# publish the release to github
42+
- if-release-build git-release --publish
43+
44+
artifacts:
45+
files:
46+
- release-manifest.json

docker/1.11/Dockerfile.gpu

Lines changed: 0 additions & 59 deletions
This file was deleted.

docker/1.12/Dockerfile.cpu

Lines changed: 0 additions & 20 deletions
This file was deleted.

docker/1.11/Dockerfile.cpu renamed to docker/Dockerfile.cpu

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
FROM tensorflow/serving:1.11.1 as tfs
1+
ARG TFS_VERSION
2+
3+
FROM tensorflow/serving:${TFS_VERSION} as tfs
24
FROM ubuntu:16.04
35
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
46

@@ -16,5 +18,6 @@ RUN \
1618

1719
COPY ./ /
1820

19-
ENV SAGEMAKER_TFS_VERSION "1.11"
21+
ARG TFS_SHORT_VERSION
22+
ENV SAGEMAKER_TFS_VERSION "${TFS_SHORT_VERSION}"
2023
ENV PATH "$PATH:/sagemaker"

docker/1.12/Dockerfile.gpu renamed to docker/Dockerfile.gpu

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
FROM tensorflow/serving:1.12.0-gpu as tfs
1+
ARG TFS_VERSION
2+
3+
FROM tensorflow/serving:${TFS_VERSION}-gpu as tfs
24
FROM nvidia/cuda:9.0-base-ubuntu16.04
35
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
46

@@ -55,5 +57,7 @@ RUN \
5557

5658
COPY ./ /
5759

58-
ENV SAGEMAKER_TFS_VERSION "1.12"
60+
61+
ARG TFS_SHORT_VERSION
62+
ENV SAGEMAKER_TFS_VERSION "${TFS_SHORT_VERSION}"
5963
ENV PATH "$PATH:/sagemaker"

scripts/build.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ parse_std_args "$@"
1010

1111
echo "pulling previous image for layer cache... "
1212
$(aws ecr get-login --no-include-email --registry-id $aws_account) &>/dev/null || echo 'warning: ecr login failed'
13-
docker pull $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$minor_version-$arch &>/dev/null || echo 'warning: pull failed'
13+
docker pull $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$full_version-$arch &>/dev/null || echo 'warning: pull failed'
1414
docker logout https://$aws_account.dkr.ecr.$aws_region.amazonaws.com &>/dev/null
1515

1616
echo "building image... "
1717
docker build \
18-
--cache-from $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$minor_version-$arch \
19-
-f docker/$major_version/Dockerfile.$arch \
20-
-t sagemaker-tensorflow-serving:$minor_version-$arch \
21-
-t sagemaker-tensorflow-serving:$major_version-$arch container
18+
--cache-from $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$full_version-$arch \
19+
--build-arg TFS_VERSION=$full_version \
20+
--build-arg TFS_SHORT_VERSION=$short_version \
21+
-f docker/Dockerfile.$arch \
22+
-t sagemaker-tensorflow-serving:$full_version-$arch \
23+
-t sagemaker-tensorflow-serving:$short_version-$arch container

scripts/publish.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ source scripts/shared.sh
99
parse_std_args "$@"
1010

1111
$(aws ecr get-login --no-include-email --registry-id $aws_account)
12-
docker tag sagemaker-tensorflow-serving:$minor_version-$arch $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$minor_version-$arch
13-
docker tag sagemaker-tensorflow-serving:$minor_version-$arch $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$major_version-$arch
14-
docker push $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$minor_version-$arch
15-
docker push $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$major_version-$arch
12+
docker tag sagemaker-tensorflow-serving:$full_version-$arch $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$full_version-$arch
13+
docker tag sagemaker-tensorflow-serving:$full_version-$arch $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$short_version-$arch
14+
docker push $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$full_version-$arch
15+
docker push $aws_account.dkr.ecr.$aws_region.amazonaws.com/sagemaker-tensorflow-serving:$short_version-$arch
1616
docker logout https://$aws_account.dkr.ecr.$aws_region.amazonaws.com

scripts/shared.sh

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,6 @@ function error() {
88
exit 1
99
}
1010

11-
function get_latest_major_version() {
12-
ls -1 docker/ | sort -r -n -t. -k 1,1 -k 2,2 -k 3 | head -1
13-
}
14-
15-
function get_minor_version() {
16-
grep 'tensorflow/serving:' docker/$1/Dockerfile.cpu | sed 's#^.*:\([0-9][0-9\.]*\) .*#\1#'
17-
}
18-
1911
function get_default_region() {
2012
if [ -n "${AWS_DEFAULT_REGION:-}" ]; then
2113
echo "$AWS_DEFAULT_REGION"
@@ -24,14 +16,23 @@ function get_default_region() {
2416
fi
2517
}
2618

19+
function get_full_version() {
20+
echo $1 | sed 's#^\([0-9][0-9]*\.[0-9][0-9]*\)$#\1.0#'
21+
}
22+
23+
function get_short_version() {
24+
echo $1 | sed 's#\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9][0-9]*#\1#'
25+
}
26+
2727
function get_aws_account() {
2828
aws sts get-caller-identity --query 'Account' --output text
2929
}
3030

3131
function parse_std_args() {
3232
# defaults
3333
arch='cpu'
34-
major_version=$(get_latest_major_version)
34+
version='1.12.0'
35+
3536
aws_region=$(get_default_region)
3637
aws_account=$(get_aws_account)
3738

@@ -40,7 +41,7 @@ function parse_std_args() {
4041

4142
case $key in
4243
-v|--version)
43-
major_version="$2"
44+
version="$2"
4445
shift
4546
shift
4647
;;
@@ -61,11 +62,12 @@ function parse_std_args() {
6162
esac
6263
done
6364

64-
[[ -z "${major_version// }" ]] && error 'missing version'
65+
[[ -z "${version// }" ]] && error 'missing version'
6566
[[ "$arch" =~ ^(cpu|gpu)$ ]] || error "invalid arch: $arch"
6667
[[ -z "${aws_region// }" ]] && error 'missing aws region'
6768

68-
minor_version=$(get_minor_version $major_version)
69+
full_version=$(get_full_version $version)
70+
short_version=$(get_short_version $version)
6971

7072
true
7173
}

scripts/start.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ $docker_command run \
2323
-e "SAGEMAKER_TFS_NGINX_LOGLEVEL=error" \
2424
-e "SAGEMAKER_BIND_TO_PORT=8080" \
2525
-e "SAGEMAKER_SAFE_PORT_RANGE=9000-9999" \
26-
sagemaker-tensorflow-serving:$minor_version-$arch serve > log.txt 2>&1 &
26+
sagemaker-tensorflow-serving:$full_version-$arch serve > log.txt 2>&1 &

scripts/stop.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ source scripts/shared.sh
88

99
parse_std_args "$@"
1010

11-
docker kill $(docker ps -q --filter ancestor=sagemaker-tensorflow-serving:$minor_version-$arch)
11+
docker kill $(docker ps -q --filter ancestor=sagemaker-tensorflow-serving:$full_version-$arch)

0 commit comments

Comments
 (0)