@@ -75,22 +75,45 @@ jobs:
75
75
name : Load Built Docker Image
76
76
command : docker load --input /tmp/workspace/docker-image
77
77
- run :
78
- name : Re-tag Image
78
+ name : Docker Login
79
+ command : docker login -u $DOCKER_USER -p $DOCKER_PASS
80
+ # TODO: Drop these SHA-tagged builds in favor of just release numbers.
81
+ # We maintain them for now for compatibility w/ a previous release style.
82
+ - run :
83
+ name : Publish Commit-SHA-Tagged Image
84
+ command : docker push envirodgi/web-monitoring-diff:${CIRCLE_SHA1}
85
+ - run :
86
+ name : Publish Version-Tagged Image
79
87
command : |
80
- if [ -n "${CIRCLE_TAG}" ]; then
81
- docker image tag envirodgi/web-monitoring-diff:${CIRCLE_SHA1} envirodgi/web-monitoring-diff:${CIRCLE_TAG:1}
82
- docker image tag envirodgi/web-monitoring-diff:${CIRCLE_SHA1} envirodgi/web-monitoring-diff:latest
88
+ # Sanity-check that we are dealing with an actual release tag.
89
+ if [ -z "${CIRCLE_TAG}" ]; then
90
+ echo 'There is no git tag to use!'
91
+ else
92
+ # Re-tag the Docker image with the current version number, which
93
+ # is based on the current git tag ($CIRCLE_TAG).
94
+ docker image tag \
95
+ envirodgi/web-monitoring-diff:${CIRCLE_SHA1} \
96
+ envirodgi/web-monitoring-diff:${CIRCLE_TAG:1}
97
+ docker push envirodgi/web-monitoring-diff:${CIRCLE_TAG:1}
83
98
fi
84
99
- run :
85
- name : Publish to Docker Hub
100
+ name : Publish :latest Tag If Final Release
86
101
command : |
87
- docker login -u $DOCKER_USER -p $DOCKER_PASS
88
- docker push envirodgi/web-monitoring-diff:${CIRCLE_SHA1}
89
- if [ -n "${CIRCLE_TAG}" ]; then
90
- docker push envirodgi/web-monitoring-diff:${CIRCLE_TAG:1}
91
- docker push envirodgi/web-monitoring-diff:latest
102
+ # Skip tags with additional info after "v0.0.0", e.g. "v1.0.0a1"
103
+ FINAL_VERSION="$(echo "${CIRCLE_TAG}" | grep -E '^v\d+(\.\d+)+$')"
104
+ if [ -z "${FINAL_VERSION}" ]; then
105
+ echo 'The current tag does not represent a final release!'
106
+ echo 'Not publishing a ":latest" tag.'
107
+ else
108
+ docker image tag \
109
+ envirodgi/web-monitoring-diff:${CIRCLE_SHA1} \
110
+ envirodgi/web-monitoring-diff:latest
111
+ docker push envirodgi/web-monitoring-diff:latest
92
112
fi
93
113
114
+ # TODO: Publish to PyPI from CircleCI for version tags, similar to Docker.
115
+ # publish_pypi:
116
+
94
117
workflows :
95
118
build :
96
119
jobs :
0 commit comments