gradle-docker icon indicating copy to clipboard operation
gradle-docker copied to clipboard

Better way to change base docker repo at command line time

Open tpetracca opened this issue 8 years ago • 3 comments

In my config I have something like

docker {
    name "docker.awesome.repository/${groupName}/${distName}:${project.version}"
    tags 'latest', 'snapshot'
    files tasks.distTar.outputs
}

on develop I would like to publish versioned docker images, but to a sandbox repository (like sandbox.docker.awesome.repository, not the main one. Ideally I would do this without writing janky "is this a release build" code in gradle such as

def isRelease = ... // versioning logic here
def dockerRepoPrefix = (isRelease ? '' : 'sandbox.')
docker {
    name "${dockerRepoPrefix}docker.awesome.repository/${groupName}/${distName}:${project.version}"
    tags 'latest', 'snapshot'
    files tasks.distTar.outputs
}

Instead it would be cool in my circle.yml to do something like

deployment:
  develop:
    branch: develop
    owner: tomp
    commands:
      - ./gradlew -i dockerPushSnapshot dockerPush --repo='sandbox.docker.awesome.repository'
  release:
    tag: /[0-9]+(\.[0-9]+)+(-rc[0-9]+)?(-alpha[0-9]+)?/
    owner: tomp
    commands:
      - ./gradlew -i dockerPushLatest dockerPush

tpetracca avatar Jul 26 '17 19:07 tpetracca

I think you can do this today, with environment variables?

uschi2000 avatar Jul 26 '17 20:07 uschi2000

hmmm I quickly scanned code and read readme to no avail wrt environment variables

tpetracca avatar Jul 26 '17 23:07 tpetracca

You can set your variables in circle and then do:

def dockerRepo = "${System.env.DOCKER_REPO}"
docker {
  name "${dockerRepo}/${groupName}/..."
  ..
}

uschi2000 avatar Jul 27 '17 00:07 uschi2000