drone-docker/README.md

121 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

2016-05-21 01:28:22 +05:30
# drone-docker
2015-05-15 10:42:50 +05:30
2019-01-21 04:49:15 +05:30
[![Build Status](http://cloud.drone.io/api/badges/drone-plugins/drone-docker/status.svg)](http://cloud.drone.io/drone-plugins/drone-docker)
[![Gitter chat](https://badges.gitter.im/drone/drone.png)](https://gitter.im/drone/drone)
[![Join the discussion at https://discourse.drone.io](https://img.shields.io/badge/discourse-forum-orange.svg)](https://discourse.drone.io)
[![Drone questions at https://stackoverflow.com](https://img.shields.io/badge/drone-stackoverflow-orange.svg)](https://stackoverflow.com/questions/tagged/drone.io)
[![](https://images.microbadger.com/badges/image/plugins/docker.svg)](https://microbadger.com/images/plugins/docker "Get your own image badge on microbadger.com")
[![Go Doc](https://godoc.org/github.com/drone-plugins/drone-docker?status.svg)](http://godoc.org/github.com/drone-plugins/drone-docker)
[![Go Report](https://goreportcard.com/badge/github.com/drone-plugins/drone-docker)](https://goreportcard.com/report/github.com/drone-plugins/drone-docker)
Drone plugin uses Docker-in-Docker to build and publish Docker images to a container registry.
** This repository is a fork of drone-plugins/drone-docker with a auto_tag logic changed.
When pushing a tag and using `auto_tag: true`, the logic is below(Not implemented yet):
For git branches:
1) Tagging `main`` branch
It will produce the tags: `dev`.
2) Tagging `release/vxxx` branch
It will produce the tags: `1.1x-dev`
For git tags:
1) Tagging a dev version which ends with `-dev`
It will produce the tags: <original_tag>
2) Tagging a pre-release version which ends with `-rcx`, `x` start from 1 to bigger number
It will produce the tags: <original_tag>
3) Tagging a latest stable release, we need to know if the version is the newest
It will produce the tags: <original_tag>, `1`,`1.1x`, `latest`
4) Tagging a low version stable release
It will produce the tags: <original_tag>, `1.1x`
2016-01-18 04:50:19 +05:30
2016-05-04 04:47:16 +05:30
## Build
2019-01-22 15:22:21 +05:30
Build the binaries with the following commands:
2016-05-04 04:47:16 +05:30
2019-02-15 16:28:33 +05:30
```console
export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=0
export GO111MODULE=on
2019-01-22 15:22:21 +05:30
go build -v -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker
go build -v -a -tags netgo -o release/linux/amd64/drone-gcr ./cmd/drone-gcr
go build -v -a -tags netgo -o release/linux/amd64/drone-ecr ./cmd/drone-ecr
go build -v -a -tags netgo -o release/linux/amd64/drone-acr ./cmd/drone-acr
2019-01-22 15:22:21 +05:30
go build -v -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku
2016-05-04 04:47:16 +05:30
```
2015-05-15 10:42:50 +05:30
## Docker
2019-01-22 15:22:21 +05:30
Build the Docker images with the following commands:
2016-05-04 04:47:16 +05:30
2019-02-15 16:28:33 +05:30
```console
2019-01-22 15:22:21 +05:30
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/docker/Dockerfile.linux.amd64 --tag plugins/docker .
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/gcr/Dockerfile.linux.amd64 --tag plugins/gcr .
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/ecr/Dockerfile.linux.amd64 --tag plugins/ecr .
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/acr/Dockerfile.linux.amd64 --tag plugins/acr .
2019-01-22 15:22:21 +05:30
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/heroku/Dockerfile.linux.amd64 --tag plugins/heroku .
2016-05-04 04:47:16 +05:30
```
## Usage
2019-02-15 16:28:33 +05:30
> Notice: Be aware that the Docker plugin currently requires privileged capabilities, otherwise the integrated Docker daemon is not able to start.
2016-05-04 04:47:16 +05:30
2019-02-15 16:28:33 +05:30
```console
2016-05-04 04:47:16 +05:30
docker run --rm \
-e PLUGIN_TAG=latest \
-e PLUGIN_REPO=octocat/hello-world \
-e DRONE_COMMIT_SHA=d8dbe4d94f15fe89232e0402c6e8a0ddf21af3ab \
-v $(pwd):$(pwd) \
2016-05-04 05:04:08 +05:30
-w $(pwd) \
--privileged \
2016-05-04 04:47:16 +05:30
plugins/docker --dry-run
2015-05-15 10:42:50 +05:30
```
2021-11-02 16:53:08 +05:30
## Developer Notes
- When updating the base image, you will need to update for each architecture and OS.
- Arm32 base images are no longer being updated.
2021-11-02 16:53:08 +05:30
## Release procedure
Run the changelog generator.
```BASH
docker run -it --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator -u drone-plugins -p drone-docker -t <secret github token>
```
You can generate a token by logging into your GitHub account and going to Settings -> Personal access tokens.
Next we tag the PR's with the fixes or enhancements labels. If the PR does not fufil the requirements, do not add a label.
Run the changelog generator again with the future version according to semver.
```BASH
docker run -it --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator -u drone-plugins -p drone-docker -t <secret token> --future-release v1.0.0
```
Create your pull request for the release. Get it merged then tag the release.