BurtonR
BurtonR

Reputation: 13

Drone CI get and use build metadata

I'm using Drone CI (0.7) in a self-hosted system. It's hooked up to GitLab and my private registry and working great!

However, I'd like to do more with the .drone.yml file. Especially when publishing images to the registry.

The docs show how to do substitution, but doesn't explain how those variables are set. Below is an example from the docs:

pipeline:
  docker:
    image: plugins/docker
+   tags: ${DRONE_TAG}

This is exactly what I'd like to do. Create a git tag on the repo (on the release branch) and have that tag become the tag for my Docker image.

I've tried git tag -a v1.0 -m "Initial release" then git push origin v1.0. The Drone CI build kicks off as I've set the Tag Hooks for the repository, but when the build completes, and publishes the image to the registry, the tag is set to latest. This also happens when pushing a regular code change commit.

Is this something that needs to be done with the CLI, or am I missing something in my .drone.yml file (posted below)? It looks like an environment variable I would need to set, but that seems strange to have to set that (I'm assuming) just before committing code to start a build...

Any and all help is appreciated!

pipeline:
  build:
    image: node:latest
    commands:
      - npm install
      - npm test
  docker:
    image: plugins/docker
    repo: private.registry.com/tester
    registry: private.registry.com
    secrets: [ docker_username, docker_password ]
    tags: ${DRONE_TAG}
    when:
      branch: release

Upvotes: 1

Views: 4199

Answers (1)

jhernandez
jhernandez

Reputation: 937

Actually your docker step is only being triggered when you push a new commit to the branch release, you should use the tag event.

Yo should have some similar configuration

tags:
  - latest
  - ${DRONE_TAG##v}
when:
  event: tag

note ${DRONE_TAG##v} will strip the prefix v, since you are naming your tag v1.0 drone will parse this into

tags:
  - latest
  - 1.0
when:
  event: tag

Upvotes: 2

Related Questions