0
0
mirror of https://github.com/thegeeklab/wp-ansible.git synced 2024-11-25 09:00:39 +00:00

Merge pull request #14 from drone-plugins/improve-config

Drop renovate, proper version definition, unified jsonnet config
This commit is contained in:
Thomas Boerger 2019-03-28 09:33:27 +01:00 committed by GitHub
commit 484bc01868
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 531 additions and 254 deletions

View File

@ -1,169 +1,14 @@
local PipelineTesting = { local pipeline = import 'pipeline.libsonnet';
kind: "pipeline", local name = 'drone-ansible';
name: "testing",
platform: {
os: "linux",
arch: "amd64",
},
steps: [
{
name: "vet",
image: "golang:1.11",
pull: "always",
environment: {
GO111MODULE: "on",
},
commands: [
"go vet ./...",
],
},
{
name: "test",
image: "golang:1.11",
pull: "always",
environment: {
GO111MODULE: "on",
},
commands: [
"go test -cover ./...",
],
},
],
trigger: {
branch: [ "master" ],
},
};
local PipelineBuild(os="linux", arch="amd64") = {
kind: "pipeline",
name: os + "-" + arch,
platform: {
os: os,
arch: arch,
},
steps: [
{
name: "build-push",
image: "golang:1.11",
pull: "always",
environment: {
CGO_ENABLED: "0",
GO111MODULE: "on",
},
commands: [
"go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/" + os + "/" + arch + "/drone-ansible",
],
when: {
event: [ "push", "pull_request" ],
},
},
{
name: "build-tag",
image: "golang:1.11",
pull: "always",
environment: {
CGO_ENABLED: "0",
GO111MODULE: "on",
},
commands: [
"go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/" + os + "/" + arch + "/drone-ansible",
],
when: {
event: [ "tag" ],
},
},
{
name: "executable",
image: "golang:1.11",
pull: "always",
commands: [
"./release/" + os + "/" + arch + "/drone-ansible --help",
],
},
{
name: "dryrun",
image: "plugins/docker:" + os + "-" + arch,
pull: "always",
settings: {
dry_run: true,
tags: os + "-" + arch,
dockerfile: "docker/Dockerfile." + os + "." + arch,
repo: "plugins/ansible",
username: { "from_secret": "docker_username" },
password: { "from_secret": "docker_password" },
},
when: {
event: [ "pull_request" ],
},
},
{
name: "publish",
image: "plugins/docker:" + os + "-" + arch,
pull: "always",
settings: {
auto_tag: true,
auto_tag_suffix: os + "-" + arch,
dockerfile: "docker/Dockerfile." + os + "." + arch,
repo: "plugins/ansible",
username: { "from_secret": "docker_username" },
password: { "from_secret": "docker_password" },
},
when: {
event: [ "push", "tag" ],
},
},
],
depends_on: [
"testing",
],
trigger: {
branch: [ "master" ],
},
};
local PipelineNotifications = {
kind: "pipeline",
name: "notifications",
platform: {
os: "linux",
arch: "amd64",
},
steps: [
{
name: "manifest",
image: "plugins/manifest:1",
pull: "always",
settings: {
username: { "from_secret": "docker_username" },
password: { "from_secret": "docker_password" },
spec: "docker/manifest.tmpl",
ignore_missing: true,
},
},
{
name: "microbadger",
image: "plugins/webhook:1",
pull: "always",
settings: {
url: { "from_secret": "microbadger_url" },
},
},
],
depends_on: [
"linux-amd64",
"linux-arm64",
"linux-arm",
],
trigger: {
branch: [ "master" ],
event: [ "push", "tag" ],
},
};
[ [
PipelineTesting, pipeline.test('linux', 'amd64'),
PipelineBuild("linux", "amd64"), pipeline.build(name, 'linux', 'amd64'),
PipelineBuild("linux", "arm64"), pipeline.build(name, 'linux', 'arm64'),
PipelineBuild("linux", "arm"), pipeline.build(name, 'linux', 'arm'),
PipelineNotifications, pipeline.notifications(depends_on=[
'linux-amd64',
'linux-arm64',
'linux-arm',
]),
] ]

9
.drone.windows.jsonnet Normal file
View File

@ -0,0 +1,9 @@
local pipeline = import 'pipeline.libsonnet';
local name = 'drone-ansible';
[
pipeline.test('windows', 'amd64', '1803'),
pipeline.build(name, 'windows', 'amd64', '1803'),
pipeline.build(name, 'windows', 'amd64', '1809'),
pipeline.notifications('windows', 'amd64', '1809', ['windows-1803', 'windows-1809']),
]

View File

@ -1,30 +1,73 @@
--- ---
kind: pipeline kind: pipeline
name: windows-amd64 name: testing
platform: platform:
os: windows os: windows
arch: amd64 arch: amd64
version: 1803
steps:
- name: vet
pull: always
image: golang:1.11-windowsservercore-1803
commands:
- go vet ./...
environment:
GO111MODULE: on
volumes:
- name: gopath
path: C:\\gopath
- name: test
pull: always
image: golang:1.11-windowsservercore-1803
commands:
- go test -cover ./...
environment:
GO111MODULE: on
volumes:
- name: gopath
path: C:\\gopath
volumes:
- name: gopath
temp: {}
trigger:
ref:
- refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
---
kind: pipeline
name: windows-1803
platform:
os: windows
arch: amd64
version: 1803
steps: steps:
- name: build-push - name: build-push
pull: always pull: always
image: golang:1.11 image: golang:1.11-windowsservercore-1803
commands: commands:
- "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/windows/amd64/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/windows/amd64/drone-ansible.exe"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
when: when:
event: event:
- push exclude:
- pull_request - tag
- name: build-tag - name: build-tag
pull: always pull: always
image: golang:1.11 image: golang:1.11-windowsservercore-1803
commands: commands:
- "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/windows/amd64/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/windows/amd64/drone-ansible.exe"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
@ -34,43 +77,197 @@ steps:
- name: executable - name: executable
pull: always pull: always
image: golang:1.11 image: golang:1.11-windowsservercore-1803
commands: commands:
- ./release/windows/amd64/drone-ansible --help - ./release/windows/amd64/drone-ansible.exe --help
- name: dryrun - name: dryrun
pull: always pull: always
image: plugins/docker:windows-amd64 image: plugins/docker:windows-1803
settings: settings:
dockerfile: docker/Dockerfile.windows.amd64 daemon_off: true
dockerfile: docker/Dockerfile.windows.1803
dry_run: true dry_run: true
password: password:
from_secret: docker_password from_secret: docker_password
repo: plugins/ansible repo: plugins/ansible
tags: windows-amd64 tags: windows-1803
username: username:
from_secret: docker_username from_secret: docker_username
volumes:
- name: docker_pipe
path: \\\\.\\pipe\\docker_engine
when: when:
event: event:
- pull_request - pull_request
- name: publish - name: publish
pull: always pull: always
image: plugins/docker:windows-amd64 image: plugins/docker:windows-1803
settings: settings:
auto_tag: true auto_tag: true
auto_tag_suffix: windows-amd64 auto_tag_suffix: windows-1803
dockerfile: docker/Dockerfile.windows.amd64 daemon_off: true
dockerfile: docker/Dockerfile.windows.1803
password: password:
from_secret: docker_password from_secret: docker_password
repo: plugins/ansible repo: plugins/ansible
username: username:
from_secret: docker_username from_secret: docker_username
volumes:
- name: docker_pipe
path: \\\\.\\pipe\\docker_engine
when: when:
event: event:
- push exclude:
- tag - pull_request
volumes:
- name: docker_pipe
host:
path: \\\\.\\pipe\\docker_engine
trigger: trigger:
branch: ref:
- master - refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
depends_on:
- testing
---
kind: pipeline
name: windows-1809
platform:
os: windows
arch: amd64
version: 1809
steps:
- name: build-push
pull: always
image: golang:1.11-windowsservercore-1809
commands:
- "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/windows/amd64/drone-ansible.exe"
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
- name: build-tag
pull: always
image: golang:1.11-windowsservercore-1809
commands:
- "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/windows/amd64/drone-ansible.exe"
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
- tag
- name: executable
pull: always
image: golang:1.11-windowsservercore-1809
commands:
- ./release/windows/amd64/drone-ansible.exe --help
- name: dryrun
pull: always
image: plugins/docker:windows-1809
settings:
daemon_off: true
dockerfile: docker/Dockerfile.windows.1809
dry_run: true
password:
from_secret: docker_password
repo: plugins/ansible
tags: windows-1809
username:
from_secret: docker_username
volumes:
- name: docker_pipe
path: \\\\.\\pipe\\docker_engine
when:
event:
- pull_request
- name: publish
pull: always
image: plugins/docker:windows-1809
settings:
auto_tag: true
auto_tag_suffix: windows-1809
daemon_off: true
dockerfile: docker/Dockerfile.windows.1809
password:
from_secret: docker_password
repo: plugins/ansible
username:
from_secret: docker_username
volumes:
- name: docker_pipe
path: \\\\.\\pipe\\docker_engine
when:
event:
exclude:
- pull_request
volumes:
- name: docker_pipe
host:
path: \\\\.\\pipe\\docker_engine
trigger:
ref:
- refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
depends_on:
- testing
---
kind: pipeline
name: notifications
platform:
os: windows
arch: amd64
version: 1809
steps:
- name: manifest
pull: always
image: plugins/manifest
settings:
auto_tag: true
ignore_missing: true
password:
from_secret: docker_password
spec: docker/manifest.tmpl
username:
from_secret: docker_username
- name: microbadger
pull: always
image: plugins/webhook
settings:
urls:
from_secret: microbadger_url
trigger:
ref:
- refs/heads/master
- "refs/tags/**"
depends_on:
- windows-1803
- windows-1809
...

View File

@ -14,6 +14,9 @@ steps:
- go vet ./... - go vet ./...
environment: environment:
GO111MODULE: on GO111MODULE: on
volumes:
- name: gopath
path: /go
- name: test - name: test
pull: always pull: always
@ -22,10 +25,19 @@ steps:
- go test -cover ./... - go test -cover ./...
environment: environment:
GO111MODULE: on GO111MODULE: on
volumes:
- name: gopath
path: /go
volumes:
- name: gopath
temp: {}
trigger: trigger:
branch: ref:
- master - refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
--- ---
kind: pipeline kind: pipeline
@ -40,20 +52,20 @@ steps:
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
- "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/amd64/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/amd64/drone-ansible"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
when: when:
event: event:
- push exclude:
- pull_request - tag
- name: build-tag - name: build-tag
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
- "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/amd64/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/amd64/drone-ansible"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
@ -71,6 +83,7 @@ steps:
pull: always pull: always
image: plugins/docker:linux-amd64 image: plugins/docker:linux-amd64
settings: settings:
daemon_off: false
dockerfile: docker/Dockerfile.linux.amd64 dockerfile: docker/Dockerfile.linux.amd64
dry_run: true dry_run: true
password: password:
@ -89,6 +102,7 @@ steps:
settings: settings:
auto_tag: true auto_tag: true
auto_tag_suffix: linux-amd64 auto_tag_suffix: linux-amd64
daemon_off: false
dockerfile: docker/Dockerfile.linux.amd64 dockerfile: docker/Dockerfile.linux.amd64
password: password:
from_secret: docker_password from_secret: docker_password
@ -97,12 +111,14 @@ steps:
from_secret: docker_username from_secret: docker_username
when: when:
event: event:
- push exclude:
- tag - pull_request
trigger: trigger:
branch: ref:
- master - refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
depends_on: depends_on:
- testing - testing
@ -120,20 +136,20 @@ steps:
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
- "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm64/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm64/drone-ansible"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
when: when:
event: event:
- push exclude:
- pull_request - tag
- name: build-tag - name: build-tag
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
- "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm64/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm64/drone-ansible"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
@ -151,6 +167,7 @@ steps:
pull: always pull: always
image: plugins/docker:linux-arm64 image: plugins/docker:linux-arm64
settings: settings:
daemon_off: false
dockerfile: docker/Dockerfile.linux.arm64 dockerfile: docker/Dockerfile.linux.arm64
dry_run: true dry_run: true
password: password:
@ -169,6 +186,7 @@ steps:
settings: settings:
auto_tag: true auto_tag: true
auto_tag_suffix: linux-arm64 auto_tag_suffix: linux-arm64
daemon_off: false
dockerfile: docker/Dockerfile.linux.arm64 dockerfile: docker/Dockerfile.linux.arm64
password: password:
from_secret: docker_password from_secret: docker_password
@ -177,12 +195,14 @@ steps:
from_secret: docker_username from_secret: docker_username
when: when:
event: event:
- push exclude:
- tag - pull_request
trigger: trigger:
branch: ref:
- master - refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
depends_on: depends_on:
- testing - testing
@ -200,20 +220,20 @@ steps:
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
- "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm/drone-ansible"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
when: when:
event: event:
- push exclude:
- pull_request - tag
- name: build-tag - name: build-tag
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
- "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm/drone-ansible" - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm/drone-ansible"
environment: environment:
CGO_ENABLED: 0 CGO_ENABLED: 0
GO111MODULE: on GO111MODULE: on
@ -231,6 +251,7 @@ steps:
pull: always pull: always
image: plugins/docker:linux-arm image: plugins/docker:linux-arm
settings: settings:
daemon_off: false
dockerfile: docker/Dockerfile.linux.arm dockerfile: docker/Dockerfile.linux.arm
dry_run: true dry_run: true
password: password:
@ -249,6 +270,7 @@ steps:
settings: settings:
auto_tag: true auto_tag: true
auto_tag_suffix: linux-arm auto_tag_suffix: linux-arm
daemon_off: false
dockerfile: docker/Dockerfile.linux.arm dockerfile: docker/Dockerfile.linux.arm
password: password:
from_secret: docker_password from_secret: docker_password
@ -257,12 +279,14 @@ steps:
from_secret: docker_username from_secret: docker_username
when: when:
event: event:
- push exclude:
- tag - pull_request
trigger: trigger:
branch: ref:
- master - refs/heads/master
- "refs/tags/**"
- "refs/pull/**"
depends_on: depends_on:
- testing - testing
@ -278,8 +302,9 @@ platform:
steps: steps:
- name: manifest - name: manifest
pull: always pull: always
image: plugins/manifest:1 image: plugins/manifest
settings: settings:
auto_tag: true
ignore_missing: true ignore_missing: true
password: password:
from_secret: docker_password from_secret: docker_password
@ -289,17 +314,15 @@ steps:
- name: microbadger - name: microbadger
pull: always pull: always
image: plugins/webhook:1 image: plugins/webhook
settings: settings:
url: urls:
from_secret: microbadger_url from_secret: microbadger_url
trigger: trigger:
branch: ref:
- master - refs/heads/master
event: - "refs/tags/**"
- push
- tag
depends_on: depends_on:
- linux-amd64 - linux-amd64

View File

@ -12,32 +12,31 @@ Drone plugin to provision infrastructure with [Ansible](https://www.ansible.com/
## Build ## Build
Build the binary with the following commands: Build the binary with the following command:
``` ```console
export GOOS=linux export GOOS=linux
export GOARCH=amd64 export GOARCH=amd64
export CGO_ENABLED=0 export CGO_ENABLED=0
export GO111MODULE=on export GO111MODULE=on
go test -cover ./...
go build -v -a -tags netgo -o release/linux/amd64/drone-ansible go build -v -a -tags netgo -o release/linux/amd64/drone-ansible
``` ```
## Docker ## Docker
Build the Docker image with the following commands: Build the Docker image with the following command:
``` ```console
docker build \ docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ --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) \ --label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/Dockerfile.linux.amd64 --tag plugins/ansible . --file docker/Dockerfile.linux.amd64 --tag plugins/ansible .
``` ```
### Usage ## Usage
``` ```console
docker run --rm \ docker run --rm \
-e PLUGIN_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" \ -e PLUGIN_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" \
-e PLUGIN_PLAYBOOK="deployment/playbook.yml" \ -e PLUGIN_PLAYBOOK="deployment/playbook.yml" \

View File

@ -1,12 +1,10 @@
# escape=` # escape=`
FROM plugins/base:windows-amd64 FROM plugins/base:windows-1803
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" ` LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
org.label-schema.name="Drone Ansible" ` org.label-schema.name="Drone Ansible" `
org.label-schema.vendor="Drone.IO Community" ` org.label-schema.vendor="Drone.IO Community" `
org.label-schema.schema-version="1.0" org.label-schema.schema-version="1.0"
# TODO: install required tools ADD release/windows/amd64/drone-ansible.exe C:/bin/drone-ansible.exe
ENTRYPOINT [ "C:\\bin\\drone-ansible.exe" ]
ADD release\drone-ansible.exe c:\drone-ansible.exe
ENTRYPOINT [ "c:\\drone-ansible.exe" ]

View File

@ -0,0 +1,10 @@
# escape=`
FROM plugins/base:windows-1809
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
org.label-schema.name="Drone Ansible" `
org.label-schema.vendor="Drone.IO Community" `
org.label-schema.schema-version="1.0"
ADD release/windows/amd64/drone-ansible.exe C:/bin/drone-ansible.exe
ENTRYPOINT [ "C:\\bin\\drone-ansible.exe" ]

View File

@ -1,4 +1,4 @@
image: plugins/ansible:{{#if build.tag}}{{trimPrefix build.tag "v"}}{{else}}latest{{/if}} image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}} {{#if build.tags}}
tags: tags:
{{#each build.tags}} {{#each build.tags}}
@ -7,25 +7,31 @@ tags:
{{/if}} {{/if}}
manifests: manifests:
- -
image: plugins/ansible:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-amd64 image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
platform: platform:
architecture: amd64 architecture: amd64
os: linux os: linux
- -
image: plugins/ansible:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-arm64 image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
platform: platform:
architecture: arm64 architecture: arm64
os: linux os: linux
variant: v8 variant: v8
- -
image: plugins/ansible:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-arm image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm
platform: platform:
architecture: arm architecture: arm
os: linux os: linux
variant: v7 variant: v7
- -
image: plugins/ansible:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-amd64 image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1803
platform: platform:
architecture: amd64 architecture: amd64
os: windows os: windows
variant: 1809 version: 1803
-
image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809
platform:
architecture: amd64
os: windows
version: 1809

View File

@ -1,7 +1,6 @@
package main package main
import ( import (
"fmt"
"log" "log"
"os" "os"
@ -10,16 +9,15 @@ import (
) )
var ( var (
version = "0.0.0" version = "unknown"
build = "0"
) )
func main() { func main() {
app := cli.NewApp() app := cli.NewApp()
app.Name = "ansible plugin" app.Name = "ansible plugin"
app.Usage = "ansible plugin" app.Usage = "ansible plugin"
app.Version = fmt.Sprintf("%s+%s", version, build)
app.Action = run app.Action = run
app.Version = version
app.Flags = []cli.Flag{ app.Flags = []cli.Flag{
cli.StringFlag{ cli.StringFlag{
Name: "requirements", Name: "requirements",

205
pipeline.libsonnet Normal file
View File

@ -0,0 +1,205 @@
local windows_pipe = '\\\\\\\\.\\\\pipe\\\\docker_engine';
local windows_pipe_volume = 'docker_pipe';
local test_pipeline_name = 'testing';
local windows(os) = os == 'windows';
local golang_image(os, version) =
'golang:' + '1.11' + if windows(os) then '-windowsservercore-' + version else '';
{
test(os='linux', arch='amd64', version='')::
local is_windows = windows(os);
local golang = golang_image(os, version);
local volumes = if is_windows then [{name: 'gopath', path: 'C:\\\\gopath'}] else [{name: 'gopath', path: '/go',}];
{
kind: 'pipeline',
name: test_pipeline_name,
platform: {
os: os,
arch: arch,
version: if std.length(version) > 0 then version,
},
steps: [
{
name: 'vet',
image: golang,
pull: 'always',
environment: {
GO111MODULE: 'on',
},
commands: [
'go vet ./...',
],
volumes: volumes,
},
{
name: 'test',
image: golang,
pull: 'always',
environment: {
GO111MODULE: 'on',
},
commands: [
'go test -cover ./...',
],
volumes: volumes,
},
],
trigger: {
ref: [
'refs/heads/master',
'refs/tags/**',
'refs/pull/**',
],
},
volumes: [{name: 'gopath', temp: {}}]
},
build(name, os='linux', arch='amd64', version='')::
local is_windows = windows(os);
local tag = if is_windows then os + '-' + version else os + '-' + arch;
local file_suffix = std.strReplace(tag, '-', '.');
local volumes = if is_windows then [{ name: windows_pipe_volume, path: windows_pipe }] else [];
local golang = golang_image(os, version);
local plugin_repo = 'plugins/' + std.splitLimit(name, '-', 1)[1];
local extension = if is_windows then '.exe' else '';
{
kind: 'pipeline',
name: tag,
platform: {
os: os,
arch: arch,
version: if std.length(version) > 0 then version,
},
steps: [
{
name: 'build-push',
image: golang,
pull: 'always',
environment: {
CGO_ENABLED: '0',
GO111MODULE: 'on',
},
commands: [
'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/' + os + '/' + arch + '/' + name + extension,
],
when: {
event: {
exclude: ['tag'],
},
},
},
{
name: 'build-tag',
image: golang,
pull: 'always',
environment: {
CGO_ENABLED: '0',
GO111MODULE: 'on',
},
commands: [
'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/' + os + '/' + arch + '/' + name + extension,
],
when: {
event: ['tag'],
},
},
{
name: 'executable',
image: golang,
pull: 'always',
commands: [
'./release/' + os + '/' + arch + '/' + name + extension + ' --help',
],
},
{
name: 'dryrun',
image: 'plugins/docker:' + tag,
pull: 'always',
settings: {
dry_run: true,
tags: tag,
dockerfile: 'docker/Dockerfile.' + file_suffix,
daemon_off: if is_windows then 'true' else 'false',
repo: plugin_repo,
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
},
volumes: if std.length(volumes) > 0 then volumes,
when: {
event: ['pull_request'],
},
},
{
name: 'publish',
image: 'plugins/docker:' + tag,
pull: 'always',
settings: {
auto_tag: true,
auto_tag_suffix: tag,
daemon_off: if is_windows then 'true' else 'false',
dockerfile: 'docker/Dockerfile.' + file_suffix,
repo: plugin_repo,
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
},
volumes: if std.length(volumes) > 0 then volumes,
when: {
event: {
exclude: ['pull_request'],
},
},
},
],
trigger: {
ref: [
'refs/heads/master',
'refs/tags/**',
'refs/pull/**',
],
},
depends_on: [test_pipeline_name],
volumes: if is_windows then [{ name: windows_pipe_volume, host: { path: windows_pipe } }],
},
notifications(os='linux', arch='amd64', version='', depends_on=[])::
{
kind: 'pipeline',
name: 'notifications',
platform: {
os: os,
arch: arch,
version: if std.length(version) > 0 then version,
},
steps: [
{
name: 'manifest',
image: 'plugins/manifest',
pull: 'always',
settings: {
username: { from_secret: 'docker_username' },
password: { from_secret: 'docker_password' },
spec: 'docker/manifest.tmpl',
ignore_missing: true,
auto_tag: true,
},
},
{
name: 'microbadger',
image: 'plugins/webhook',
pull: 'always',
settings: {
urls: { from_secret: 'microbadger_url' },
},
},
],
trigger: {
ref: [
'refs/heads/master',
'refs/tags/**',
],
},
depends_on: depends_on,
},
}

View File

@ -1,13 +0,0 @@
{
"extends": [
"config:base"
],
"docker": {
"fileMatch": [
"/docker/Dockerfile"
]
},
"labels": [
"renovate"
]
}