diff --git a/.travis.yml b/.travis.yml index 5c46c86c..2f9f5597 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,9 @@ -# ----- Config ----- +--- # ----- Config ----- stages: - name: test - name: release -env: - CF_API_REST_IMAGE: captainfact/rest-api:$TRAVIS_BRANCH - CF_API_GRAPHQL_IMAGE: captainfact/graphql-api:$TRAVIS_BRANCH - CF_API_ATOM_FEED: captainfact/atom-feed:$TRAVIS_BRANCH - CF_API_OPENGRAPH_IMAGE: captainfact/opengraph:$TRAVIS_BRANCH - CF_API_JOBS_IMAGE: captainfact/jobs:$TRAVIS_BRANCH - # ---- Jobs ---- jobs: @@ -39,17 +32,4 @@ jobs: sudo: required services: [docker] script: - - set -e - - # ---- Build ---- - - docker build --build-arg APP=cf_rest_api -t ${CF_API_REST_IMAGE} . - - docker build --build-arg APP=cf_graphql -t ${CF_API_GRAPHQL_IMAGE} . - - docker build --build-arg APP=cf_atom_feed -t ${CF_API_ATOM_FEED} . - - docker build --build-arg APP=cf_opengraph -t ${CF_API_OPENGRAPH_IMAGE} . - - docker build --build-arg APP=cf_jobs -t ${CF_API_JOBS_IMAGE} . - - # ---- Push release ---- - - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"; - - docker push $CF_API_REST_IMAGE - - docker push $CF_API_GRAPHQL_IMAGE - - docker push $CF_API_ATOM_FEED - - docker push $CF_API_OPENGRAPH_IMAGE - - docker push $CF_API_JOBS_IMAGE + - ./rel/release.sh $TRAVIS_BRANCH diff --git a/rel/release.sh b/rel/release.sh new file mode 100755 index 00000000..4cef23ef --- /dev/null +++ b/rel/release.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# Build all releases for given tags and push them to Docker registry +# ------------------------------------------------------------------ + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 environment" + echo "Example: $0 staging" + exit 1 +fi + +if [ -z "$DOCKER_USERNAME" ] || [ -z "$DOCKER_PASSWORD" ]; then + echo "[Warning] Docker credentials not provided. You must be logged in to push to registry." +fi + +set -e + +# ---- Images names ---- +CF_API_REST_IMAGE: captainfact/rest-api:$1 +CF_API_GRAPHQL_IMAGE: captainfact/graphql-api:$1 +CF_API_ATOM_FEED: captainfact/atom-feed:$1 +CF_API_OPENGRAPH_IMAGE: captainfact/opengraph:$1 +CF_API_JOBS_IMAGE: captainfact/jobs:$1 + +# ---- Build ---- +echo "[RELEASE] Building Apps 🔨" +docker build --build-arg APP=cf_rest_api -t ${CF_API_REST_IMAGE} . +docker build --build-arg APP=cf_graphql -t ${CF_API_GRAPHQL_IMAGE} . +docker build --build-arg APP=cf_atom_feed -t ${CF_API_ATOM_FEED} . +docker build --build-arg APP=cf_opengraph -t ${CF_API_OPENGRAPH_IMAGE} . +docker build --build-arg APP=cf_jobs -t ${CF_API_JOBS_IMAGE} . + +# ---- Push release ---- +echo "[RELEASE] Pushing Apps 🚀" +docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"; +docker push $CF_API_REST_IMAGE +docker push $CF_API_GRAPHQL_IMAGE +docker push $CF_API_ATOM_FEED +docker push $CF_API_OPENGRAPH_IMAGE +docker push $CF_API_JOBS_IMAGE