# Image tagging rollbacks
While preparing your docker builds and releases its a good idea to tag your images. Digger uses a default tag of :latest
but this means that to rollback to a previous version of your code you would need to rebuild that tag or branch.
With the digger cli you can specify tags in the cli. you need to do that for your build-push-release cycles.
dg env build --tag v1
dg env push --tag v1
dg env release --tag v1
This way you can trigger a release for a previous version by passing the v1
tag. You can also use the same tags for a CI/CD setting. For example, in a GitHub Action, you can trigger the action everytime a version tag is pushed:
name: Digger CI
on:
push:
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
get_tag_version:
runs-on: ubuntu-16.04
outputs:
tag_version: ${{ steps.get_tag.outputs.VERSION }}
stage: ${{ steps.get_stage.outputs.STAGE }}
steps:
- name: Set the tag version
id: get_tag
run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3)
build-push-release:
runs-on: ubuntu-16.04
needs:
- get_tag_version
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: "3.8"
- name: Build and push and release
env:
DIGGER_TOKEN: ${{ secrets.DIGGER_TOKEN }}
DIGGER_AWS_KEY: ${{ secrets.DIGGER_AWS_KEY }}
DIGGER_AWS_SECRET: ${{ secrets.DIGGER_AWS_SECRET }}
BACKEND_ENDPOINT: "https://backend.digger.dev"
WEBAPP_ENDPOINT: "https://app.digger.dev"
run: |
export TAG_VERSION=${{needs.get_tag_version.outputs.tag_version}}
# Install diggercli
pip install --upgrade git+https://github.com/diggerhq/cli@master
echo "> Building docker image"
dg env build stage --service svc1 --tag $TAG_VERSION
echo "> Pushing docker image to ECR"
dg env push stage --service svc1 --tag $TAG_VERSION --aws-key "$DIGGER_AWS_KEY" --aws-secret "$DIGGER_AWS_SECRET"
echo "> Releasing"
dg env push release --service svc1 --tag $TAG_VERSION --aws-key "$DIGGER_AWS_KEY" --aws-secret "$DIGGER_AWS_SECRET"
In the above snippet we listen for changes to changes in a tag push and use the same tag to build and push with dg
. This means that to rollback a previous version one can re-run a previous workflow.