mirror of
https://github.com/drone-plugins/drone-docker.git
synced 2026-06-04 18:24:24 +08:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e8250c169e | |||
| feb90fe92d | |||
| 55c76aeaf0 | |||
| b54379f077 | |||
| ab3fed4710 | |||
| e62984fe46 | |||
| c48ca605a4 | |||
| 0e03ef3eab | |||
| 7a498e78b2 | |||
| 2140a2be40 | |||
| dcc762d301 | |||
| b318c15acb | |||
| 86de147dc8 | |||
| 68605049b7 | |||
| e2e30f3015 | |||
| 4999d4ca01 | |||
| b28dae76d7 |
+27
-27
@@ -162,7 +162,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: go build
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
environment:
|
||||
CGO_ENABLED: 0
|
||||
commands:
|
||||
@@ -264,7 +264,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker'
|
||||
environment:
|
||||
@@ -275,7 +275,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker'
|
||||
environment:
|
||||
@@ -285,7 +285,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: executable
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- ./release/linux/amd64/drone-docker --help
|
||||
|
||||
@@ -329,7 +329,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-docker ./cmd/drone-docker'
|
||||
environment:
|
||||
@@ -340,7 +340,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-docker ./cmd/drone-docker'
|
||||
environment:
|
||||
@@ -350,7 +350,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: executable
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- ./release/linux/arm64/drone-docker --help
|
||||
|
||||
@@ -429,7 +429,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-gcr ./cmd/drone-gcr'
|
||||
environment:
|
||||
@@ -440,7 +440,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-gcr ./cmd/drone-gcr'
|
||||
environment:
|
||||
@@ -488,7 +488,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-gcr ./cmd/drone-gcr'
|
||||
environment:
|
||||
@@ -499,7 +499,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-gcr ./cmd/drone-gcr'
|
||||
environment:
|
||||
@@ -582,7 +582,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-gar ./cmd/drone-gar'
|
||||
environment:
|
||||
@@ -593,7 +593,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-gar ./cmd/drone-gar'
|
||||
environment:
|
||||
@@ -641,7 +641,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-gar ./cmd/drone-gar'
|
||||
environment:
|
||||
@@ -652,7 +652,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-gar ./cmd/drone-gar'
|
||||
environment:
|
||||
@@ -734,7 +734,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-ecr ./cmd/drone-ecr'
|
||||
environment:
|
||||
@@ -744,7 +744,7 @@ steps:
|
||||
exclude:
|
||||
- tag
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-ecr ./cmd/drone-ecr'
|
||||
environment:
|
||||
@@ -792,7 +792,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-ecr ./cmd/drone-ecr'
|
||||
environment:
|
||||
@@ -802,7 +802,7 @@ steps:
|
||||
exclude:
|
||||
- tag
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-ecr ./cmd/drone-ecr'
|
||||
environment:
|
||||
@@ -885,7 +885,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku'
|
||||
environment:
|
||||
@@ -895,7 +895,7 @@ steps:
|
||||
exclude:
|
||||
- tag
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku'
|
||||
environment:
|
||||
@@ -944,7 +944,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/linux/arm64/drone-heroku ./cmd/drone-heroku'
|
||||
environment:
|
||||
@@ -954,7 +954,7 @@ steps:
|
||||
exclude:
|
||||
- tag
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/linux/arm64/drone-heroku ./cmd/drone-heroku'
|
||||
environment:
|
||||
@@ -1035,7 +1035,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -tags netgo -o release/linux/amd64/drone-acr ./cmd/drone-acr'
|
||||
environment:
|
||||
@@ -1045,7 +1045,7 @@ steps:
|
||||
exclude:
|
||||
- tag
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}" -a -tags netgo -o release/linux/amd64/drone-acr ./cmd/drone-acr'
|
||||
environment:
|
||||
@@ -1093,7 +1093,7 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build-push
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -tags netgo -o release/linux/arm64/drone-acr ./cmd/drone-acr'
|
||||
environment:
|
||||
@@ -1104,7 +1104,7 @@ steps:
|
||||
- tag
|
||||
|
||||
- name: build-tag
|
||||
image: golang:1.22.4
|
||||
image: golang:1.22.7
|
||||
commands:
|
||||
- 'go build -v -ldflags "-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}" -a -tags netgo -o release/linux/arm64/drone-acr ./cmd/drone-acr'
|
||||
environment:
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
inputSet:
|
||||
name: event-PR
|
||||
tags: {}
|
||||
identifier: eventPR
|
||||
orgIdentifier: default
|
||||
projectIdentifier: Drone_Plugins
|
||||
pipeline:
|
||||
identifier: dronedockerharness
|
||||
properties:
|
||||
ci:
|
||||
codebase:
|
||||
build:
|
||||
type: PR
|
||||
spec:
|
||||
number: <+trigger.prNumber>
|
||||
stages:
|
||||
- parallel:
|
||||
- stage:
|
||||
identifier: linamd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Build_Push
|
||||
type: Run
|
||||
spec:
|
||||
command: go build -a -tags netgo -o release/linux/amd64/drone-<+matrix.repo> ./cmd/drone-<+matrix.repo>
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.amd64
|
||||
auto_tag_suffix: linux-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- linux-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.amd64
|
||||
- stage:
|
||||
identifier: linarm64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: buildpush
|
||||
type: Run
|
||||
spec:
|
||||
command: go build -a -tags netgo -o release/linux/arm64/drone-<+matrix.repo> ./cmd/drone-<+matrix.repo>
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.arm64
|
||||
auto_tag_suffix: linux-arm64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- linux-arm64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.arm64
|
||||
- stage:
|
||||
identifier: win1809amd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.1809
|
||||
auto_tag_suffix: windows-1809-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- windows-1809-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.1809
|
||||
- stage:
|
||||
identifier: winamd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.ltsc2022
|
||||
auto_tag_suffix: windows-ltsc2022-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- windows-ltsc2022-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.ltsc2022
|
||||
- stage:
|
||||
identifier: Manifest
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Plugin_1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
spec: docker/<+matrix.repo>/manifest.tmpl
|
||||
@@ -0,0 +1,127 @@
|
||||
inputSet:
|
||||
name: event-Push
|
||||
tags: {}
|
||||
identifier: eventPush
|
||||
orgIdentifier: default
|
||||
projectIdentifier: Drone_Plugins
|
||||
pipeline:
|
||||
identifier: dronedockerharness
|
||||
properties:
|
||||
ci:
|
||||
codebase:
|
||||
build:
|
||||
type: branch
|
||||
spec:
|
||||
branch: <+trigger.branch>
|
||||
stages:
|
||||
- parallel:
|
||||
- stage:
|
||||
identifier: linamd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Build_Push
|
||||
type: Run
|
||||
spec:
|
||||
command: go build -a -tags netgo -o release/linux/amd64/drone-<+matrix.repo> ./cmd/drone-<+matrix.repo>
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.amd64
|
||||
auto_tag_suffix: linux-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- linux-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.amd64
|
||||
- stage:
|
||||
identifier: linarm64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: buildpush
|
||||
type: Run
|
||||
spec:
|
||||
command: go build -a -tags netgo -o release/linux/arm64/drone-<+matrix.repo> ./cmd/drone-<+matrix.repo>
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.arm64
|
||||
auto_tag_suffix: linux-arm64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- linux-arm64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.arm64
|
||||
- stage:
|
||||
identifier: win1809amd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.1809
|
||||
auto_tag_suffix: windows-1809-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- windows-1809-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.1809
|
||||
- stage:
|
||||
identifier: winamd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.ltsc2022
|
||||
auto_tag_suffix: windows-ltsc2022-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- windows-ltsc2022-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.ltsc2022
|
||||
- stage:
|
||||
identifier: Manifest
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Plugin_1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
spec: docker/<+matrix.repo>/manifest.tmpl
|
||||
@@ -0,0 +1,127 @@
|
||||
inputSet:
|
||||
name: event-Tag
|
||||
tags: {}
|
||||
identifier: eventTag
|
||||
orgIdentifier: default
|
||||
projectIdentifier: Drone_Plugins
|
||||
pipeline:
|
||||
identifier: dronedockerharness
|
||||
properties:
|
||||
ci:
|
||||
codebase:
|
||||
build:
|
||||
type: tag
|
||||
spec:
|
||||
tag: <+trigger.tag>
|
||||
stages:
|
||||
- parallel:
|
||||
- stage:
|
||||
identifier: linamd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Build_Push
|
||||
type: Run
|
||||
spec:
|
||||
command: go build -a -tags netgo -o release/linux/amd64/drone-<+matrix.repo> ./cmd/drone-<+matrix.repo>
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.amd64
|
||||
auto_tag_suffix: linux-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- linux-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.amd64
|
||||
- stage:
|
||||
identifier: linarm64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: buildpush
|
||||
type: Run
|
||||
spec:
|
||||
command: go build -a -tags netgo -o release/linux/arm64/drone-<+matrix.repo> ./cmd/drone-<+matrix.repo>
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.arm64
|
||||
auto_tag_suffix: linux-arm64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- linux-arm64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.linux.arm64
|
||||
- stage:
|
||||
identifier: win1809amd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.1809
|
||||
auto_tag_suffix: windows-1809-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- windows-1809-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.1809
|
||||
- stage:
|
||||
identifier: winamd64
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Docker_Build_and_Push1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
repo: plugins/<+matrix.repo>
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.ltsc2022
|
||||
auto_tag_suffix: windows-ltsc2022-amd64
|
||||
- step:
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
type: BuildAndPushDockerRegistry
|
||||
spec:
|
||||
repo: plugins/<+matrix.repo>
|
||||
tags:
|
||||
- windows-ltsc2022-amd64
|
||||
dockerfile: docker/<+matrix.repo>/Dockerfile.windows.amd64.ltsc2022
|
||||
- stage:
|
||||
identifier: Manifest
|
||||
type: CI
|
||||
spec:
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
identifier: Plugin_1
|
||||
type: Plugin
|
||||
spec:
|
||||
settings:
|
||||
spec: docker/<+matrix.repo>/manifest.tmpl
|
||||
@@ -0,0 +1,382 @@
|
||||
pipeline:
|
||||
orgIdentifier: default
|
||||
tags: {}
|
||||
properties:
|
||||
ci:
|
||||
codebase:
|
||||
connectorRef: GitHub_Drone_Plugins_Org
|
||||
repoName: drone-docker
|
||||
build: <+input>
|
||||
sparseCheckout: []
|
||||
stages:
|
||||
- stage:
|
||||
name: Test
|
||||
identifier: Test
|
||||
description: ""
|
||||
type: CI
|
||||
spec:
|
||||
cloneCodebase: true
|
||||
caching:
|
||||
enabled: false
|
||||
paths: []
|
||||
platform:
|
||||
os: Linux
|
||||
arch: Amd64
|
||||
runtime:
|
||||
type: Cloud
|
||||
spec: {}
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
type: Run
|
||||
name: GO VET
|
||||
identifier: Run_1
|
||||
spec:
|
||||
connectorRef: account.harnessImage
|
||||
image: golang:1.22.4
|
||||
shell: Sh
|
||||
command: go vet ./...
|
||||
- step:
|
||||
type: Run
|
||||
name: GO TEST
|
||||
identifier: Run_2
|
||||
spec:
|
||||
connectorRef: account.harnessImage
|
||||
image: golang:1.22.4
|
||||
shell: Sh
|
||||
command: go test -cover ./...
|
||||
- parallel:
|
||||
- stage:
|
||||
name: linux-amd64
|
||||
identifier: linamd64
|
||||
description: ""
|
||||
type: CI
|
||||
spec:
|
||||
cloneCodebase: true
|
||||
caching:
|
||||
enabled: false
|
||||
paths: []
|
||||
platform:
|
||||
os: Linux
|
||||
arch: Amd64
|
||||
runtime:
|
||||
type: Cloud
|
||||
spec: {}
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
type: Run
|
||||
name: Build Binary
|
||||
identifier: Build_Push
|
||||
spec:
|
||||
connectorRef: account.harnessImage
|
||||
image: golang:1.22.4
|
||||
shell: Sh
|
||||
command: <+input>
|
||||
envVariables:
|
||||
CGO_ENABLED: "0"
|
||||
- step:
|
||||
type: Plugin
|
||||
name: Build and Push on Tag
|
||||
identifier: Docker_Build_and_Push
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: drone
|
||||
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||
repo: <+input>
|
||||
dockerfile: <+input>
|
||||
auto_tag: "true"
|
||||
auto_tag_suffix: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "tag"
|
||||
- step:
|
||||
type: BuildAndPushDockerRegistry
|
||||
name: Build and Push on Branch
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
repo: <+input>
|
||||
tags: <+input>
|
||||
caching: true
|
||||
dockerfile: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "branch"
|
||||
strategy:
|
||||
matrix:
|
||||
repo:
|
||||
- docker
|
||||
- gcr
|
||||
- gar
|
||||
- ecr
|
||||
- heroku
|
||||
- acr
|
||||
- stage:
|
||||
name: linux-arm64
|
||||
identifier: linarm64
|
||||
description: ""
|
||||
type: CI
|
||||
spec:
|
||||
cloneCodebase: true
|
||||
caching:
|
||||
enabled: false
|
||||
paths: []
|
||||
platform:
|
||||
os: Linux
|
||||
arch: Arm64
|
||||
runtime:
|
||||
type: Cloud
|
||||
spec: {}
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
type: Run
|
||||
name: Build Binary
|
||||
identifier: buildpush
|
||||
spec:
|
||||
connectorRef: account.harnessImage
|
||||
image: golang:1.22.4
|
||||
shell: Sh
|
||||
command: <+input>
|
||||
envVariables:
|
||||
CGO_ENABLED: "0"
|
||||
- step:
|
||||
type: Plugin
|
||||
name: Build and Push on Tag
|
||||
identifier: Docker_Build_and_Push
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: drone
|
||||
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||
repo: <+input>
|
||||
dockerfile: <+input>
|
||||
auto_tag: "true"
|
||||
auto_tag_suffix: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "tag"
|
||||
- step:
|
||||
type: BuildAndPushDockerRegistry
|
||||
name: Build and Push on Branch
|
||||
identifier: BuildAndPushDockerRegistry_1
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
repo: <+input>
|
||||
tags: <+input>
|
||||
caching: true
|
||||
dockerfile: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "branch"
|
||||
strategy:
|
||||
matrix:
|
||||
repo:
|
||||
- docker
|
||||
- gcr
|
||||
- gar
|
||||
- ecr
|
||||
- heroku
|
||||
- acr
|
||||
- stage:
|
||||
name: win-1809-amd64
|
||||
identifier: win1809amd64
|
||||
description: ""
|
||||
type: CI
|
||||
spec:
|
||||
cloneCodebase: true
|
||||
caching:
|
||||
enabled: true
|
||||
infrastructure:
|
||||
type: VM
|
||||
spec:
|
||||
type: Pool
|
||||
spec:
|
||||
poolName: windows-2019
|
||||
os: Windows
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
type: Run
|
||||
name: Build Binary
|
||||
identifier: go_build
|
||||
spec:
|
||||
connectorRef: account.harnessImage
|
||||
image: golang:1.22.4
|
||||
shell: Sh
|
||||
command: |-
|
||||
# disable cgo
|
||||
export CGO_ENABLED=0
|
||||
|
||||
go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker
|
||||
go build -o release/windows/amd64/drone-ecr.exe ./cmd/drone-ecr
|
||||
go build -o release/windows/amd64/drone-gcr.exe ./cmd/drone-gcr
|
||||
go build -o release/windows/amd64/drone-acr.exe ./cmd/drone-acr
|
||||
go build -o release/windows/amd64/drone-gar.exe ./cmd/drone-gar
|
||||
- step:
|
||||
type: Plugin
|
||||
name: Build and Push on Tag
|
||||
identifier: Docker_Build_and_Push1
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: drone
|
||||
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||
repo: <+input>
|
||||
dockerfile: <+input>
|
||||
auto_tag: "true"
|
||||
auto_tag_suffix: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "tag"
|
||||
- step:
|
||||
type: BuildAndPushDockerRegistry
|
||||
name: Build and Push on Branch
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
repo: <+input>
|
||||
tags: <+input>
|
||||
caching: true
|
||||
dockerfile: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "branch"
|
||||
strategy:
|
||||
matrix:
|
||||
repo:
|
||||
- docker
|
||||
- gcr
|
||||
- gar
|
||||
- ecr
|
||||
- acr
|
||||
delegateSelectors:
|
||||
- windows-vm
|
||||
- stage:
|
||||
name: win-ltsc2022-amd64
|
||||
identifier: winamd64
|
||||
description: ""
|
||||
type: CI
|
||||
spec:
|
||||
cloneCodebase: true
|
||||
caching:
|
||||
enabled: false
|
||||
paths: []
|
||||
platform:
|
||||
os: Windows
|
||||
arch: Amd64
|
||||
runtime:
|
||||
type: Cloud
|
||||
spec: {}
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
type: Run
|
||||
name: Build Binary -ltsc2022
|
||||
identifier: build_amd64ltsc2022
|
||||
spec:
|
||||
connectorRef: account.harnessImage
|
||||
image: golang:1.22.4
|
||||
shell: Sh
|
||||
command: |-
|
||||
# disable cgo
|
||||
export CGO_ENABLED=0
|
||||
|
||||
go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker
|
||||
go build -o release/windows/amd64/drone-ecr.exe ./cmd/drone-ecr
|
||||
go build -o release/windows/amd64/drone-gcr.exe ./cmd/drone-gcr
|
||||
go build -o release/windows/amd64/drone-acr.exe ./cmd/drone-acr
|
||||
go build -o release/windows/amd64/drone-gar.exe ./cmd/drone-gar
|
||||
envVariables:
|
||||
CGO_ENABLED: "0"
|
||||
- step:
|
||||
type: Plugin
|
||||
name: Build and Push on Tag
|
||||
identifier: Docker_Build_and_Push1
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: drone
|
||||
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||
repo: <+input>
|
||||
dockerfile: <+input>
|
||||
auto_tag: "true"
|
||||
auto_tag_suffix: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "tag"
|
||||
- step:
|
||||
type: BuildAndPushDockerRegistry
|
||||
name: Build and Push on Branch
|
||||
identifier: BuildAndPushDockerRegistry_2
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
repo: <+input>
|
||||
tags: <+input>
|
||||
caching: true
|
||||
dockerfile: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "branch"
|
||||
buildIntelligence:
|
||||
enabled: false
|
||||
strategy:
|
||||
matrix:
|
||||
repo:
|
||||
- docker
|
||||
- gcr
|
||||
- gar
|
||||
- ecr
|
||||
- acr
|
||||
- stage:
|
||||
name: Manifest and Release
|
||||
identifier: Manifest
|
||||
description: ""
|
||||
type: CI
|
||||
spec:
|
||||
cloneCodebase: true
|
||||
caching:
|
||||
enabled: false
|
||||
paths: []
|
||||
execution:
|
||||
steps:
|
||||
- step:
|
||||
type: Plugin
|
||||
name: Manifest
|
||||
identifier: Plugin_1
|
||||
spec:
|
||||
connectorRef: Plugins_Docker_Hub_Connector
|
||||
image: plugins/manifest
|
||||
settings:
|
||||
username: drone
|
||||
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||
auto_tag: "true"
|
||||
ignore_missing: "true"
|
||||
spec: <+input>
|
||||
when:
|
||||
stageStatus: Success
|
||||
condition: <+codebase.build.type> == "tag" || <+codebase.build.type> == "branch"
|
||||
platform:
|
||||
os: Linux
|
||||
arch: Amd64
|
||||
runtime:
|
||||
type: Cloud
|
||||
spec: {}
|
||||
strategy:
|
||||
matrix:
|
||||
repo:
|
||||
- docker
|
||||
- gcr
|
||||
- gar
|
||||
- ecr
|
||||
- heroku
|
||||
- acr
|
||||
identifier: dronedockerharness
|
||||
projectIdentifier: Drone_Plugins
|
||||
name: drone-docker-harness
|
||||
@@ -0,0 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// CustomStringSliceFlag is like a regular StringSlice flag but with
|
||||
// semicolon as a delimiter
|
||||
type CustomStringSliceFlag struct {
|
||||
Value []string
|
||||
}
|
||||
|
||||
func (f *CustomStringSliceFlag) GetValue() []string {
|
||||
if f.Value == nil {
|
||||
return make([]string, 0)
|
||||
}
|
||||
return f.Value
|
||||
}
|
||||
|
||||
func (f *CustomStringSliceFlag) String() string {
|
||||
if f.Value == nil {
|
||||
return ""
|
||||
}
|
||||
return strings.Join(f.Value, ";")
|
||||
}
|
||||
|
||||
func (f *CustomStringSliceFlag) Set(v string) error {
|
||||
for _, s := range strings.Split(v, ";") {
|
||||
s = strings.TrimSpace(s)
|
||||
f.Value = append(f.Value, s)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
+39
-26
@@ -151,6 +151,17 @@ func main() {
|
||||
Usage: "build args",
|
||||
EnvVar: "PLUGIN_BUILD_ARGS_FROM_ENV",
|
||||
},
|
||||
cli.GenericFlag{
|
||||
Name: "args-new",
|
||||
Usage: "build args new",
|
||||
EnvVar: "PLUGIN_BUILD_ARGS_NEW",
|
||||
Value: new(CustomStringSliceFlag),
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "plugin-multiple-build-agrs",
|
||||
Usage: "plugin multiple build agrs",
|
||||
EnvVar: "PLUGIN_MULTIPLE_BUILD_ARGS",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "quiet",
|
||||
Usage: "quiet docker build",
|
||||
@@ -339,32 +350,34 @@ func run(c *cli.Context) error {
|
||||
CardPath: c.String("drone-card-path"),
|
||||
ArtifactFile: c.String("artifact-file"),
|
||||
Build: docker.Build{
|
||||
Remote: c.String("remote.url"),
|
||||
Name: c.String("commit.sha"),
|
||||
TempTag: generateTempTag(),
|
||||
Dockerfile: c.String("dockerfile"),
|
||||
Context: c.String("context"),
|
||||
Tags: c.StringSlice("tags"),
|
||||
Args: c.StringSlice("args"),
|
||||
ArgsEnv: c.StringSlice("args-from-env"),
|
||||
Target: c.String("target"),
|
||||
Squash: c.Bool("squash"),
|
||||
Pull: c.BoolT("pull-image"),
|
||||
CacheFrom: c.StringSlice("cache-from"),
|
||||
Compress: c.Bool("compress"),
|
||||
Repo: c.String("repo"),
|
||||
Labels: c.StringSlice("custom-labels"),
|
||||
LabelSchema: c.StringSlice("label-schema"),
|
||||
AutoLabel: c.BoolT("auto-label"),
|
||||
Link: c.String("link"),
|
||||
NoCache: c.Bool("no-cache"),
|
||||
Secret: c.String("secret"),
|
||||
SecretEnvs: c.StringSlice("secrets-from-env"),
|
||||
SecretFiles: c.StringSlice("secrets-from-file"),
|
||||
AddHost: c.StringSlice("add-host"),
|
||||
Quiet: c.Bool("quiet"),
|
||||
Platform: c.String("platform"),
|
||||
SSHAgentKey: c.String("ssh-agent-key"),
|
||||
Remote: c.String("remote.url"),
|
||||
Name: c.String("commit.sha"),
|
||||
TempTag: generateTempTag(),
|
||||
Dockerfile: c.String("dockerfile"),
|
||||
Context: c.String("context"),
|
||||
Tags: c.StringSlice("tags"),
|
||||
Args: c.StringSlice("args"),
|
||||
ArgsEnv: c.StringSlice("args-from-env"),
|
||||
ArgsNew: c.Generic("args-new").(*CustomStringSliceFlag).GetValue(),
|
||||
IsMultipleBuildArgs: c.Bool("plugin-multiple-build-agrs"),
|
||||
Target: c.String("target"),
|
||||
Squash: c.Bool("squash"),
|
||||
Pull: c.BoolT("pull-image"),
|
||||
CacheFrom: c.StringSlice("cache-from"),
|
||||
Compress: c.Bool("compress"),
|
||||
Repo: c.String("repo"),
|
||||
Labels: c.StringSlice("custom-labels"),
|
||||
LabelSchema: c.StringSlice("label-schema"),
|
||||
AutoLabel: c.BoolT("auto-label"),
|
||||
Link: c.String("link"),
|
||||
NoCache: c.Bool("no-cache"),
|
||||
Secret: c.String("secret"),
|
||||
SecretEnvs: c.StringSlice("secrets-from-env"),
|
||||
SecretFiles: c.StringSlice("secrets-from-file"),
|
||||
AddHost: c.StringSlice("add-host"),
|
||||
Quiet: c.Bool("quiet"),
|
||||
Platform: c.String("platform"),
|
||||
SSHAgentKey: c.String("ssh-agent-key"),
|
||||
},
|
||||
Daemon: docker.Daemon{
|
||||
Registry: c.String("docker.registry"),
|
||||
|
||||
+62
-12
@@ -22,6 +22,10 @@ import (
|
||||
docker "github.com/drone-plugins/drone-docker"
|
||||
)
|
||||
|
||||
type ecrAPI interface {
|
||||
DescribeImages(*ecr.DescribeImagesInput) (*ecr.DescribeImagesOutput, error)
|
||||
}
|
||||
|
||||
const defaultRegion = "us-east-1"
|
||||
|
||||
func main() {
|
||||
@@ -31,18 +35,19 @@ func main() {
|
||||
}
|
||||
|
||||
var (
|
||||
repo = getenv("PLUGIN_REPO")
|
||||
registry = getenv("PLUGIN_REGISTRY")
|
||||
region = getenv("PLUGIN_REGION", "ECR_REGION", "AWS_REGION")
|
||||
key = getenv("PLUGIN_ACCESS_KEY", "ECR_ACCESS_KEY", "AWS_ACCESS_KEY_ID")
|
||||
secret = getenv("PLUGIN_SECRET_KEY", "ECR_SECRET_KEY", "AWS_SECRET_ACCESS_KEY")
|
||||
create = parseBoolOrDefault(false, getenv("PLUGIN_CREATE_REPOSITORY", "ECR_CREATE_REPOSITORY"))
|
||||
lifecyclePolicy = getenv("PLUGIN_LIFECYCLE_POLICY")
|
||||
repositoryPolicy = getenv("PLUGIN_REPOSITORY_POLICY")
|
||||
assumeRole = getenv("PLUGIN_ASSUME_ROLE")
|
||||
externalId = getenv("PLUGIN_EXTERNAL_ID")
|
||||
scanOnPush = parseBoolOrDefault(false, getenv("PLUGIN_SCAN_ON_PUSH"))
|
||||
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
|
||||
repo = getenv("PLUGIN_REPO")
|
||||
registry = getenv("PLUGIN_REGISTRY")
|
||||
region = getenv("PLUGIN_REGION", "ECR_REGION", "AWS_REGION")
|
||||
key = getenv("PLUGIN_ACCESS_KEY", "ECR_ACCESS_KEY", "AWS_ACCESS_KEY_ID")
|
||||
secret = getenv("PLUGIN_SECRET_KEY", "ECR_SECRET_KEY", "AWS_SECRET_ACCESS_KEY")
|
||||
create = parseBoolOrDefault(false, getenv("PLUGIN_CREATE_REPOSITORY", "ECR_CREATE_REPOSITORY"))
|
||||
lifecyclePolicy = getenv("PLUGIN_LIFECYCLE_POLICY")
|
||||
repositoryPolicy = getenv("PLUGIN_REPOSITORY_POLICY")
|
||||
assumeRole = getenv("PLUGIN_ASSUME_ROLE")
|
||||
externalId = getenv("PLUGIN_EXTERNAL_ID")
|
||||
scanOnPush = parseBoolOrDefault(false, getenv("PLUGIN_SCAN_ON_PUSH"))
|
||||
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
|
||||
skipPushIfTagExists = parseBoolOrDefault(false, getenv("PLUGIN_SKIP_PUSH_IF_TAG_EXISTS"))
|
||||
)
|
||||
|
||||
// set the region
|
||||
@@ -114,6 +119,34 @@ func main() {
|
||||
os.Setenv("DOCKER_PASSWORD", password)
|
||||
os.Setenv("PLUGIN_REGISTRY_TYPE", "ECR")
|
||||
|
||||
// Skip if tag already exits for both mutable and immutable repos
|
||||
if skipPushIfTagExists {
|
||||
tagInput := getenv("PLUGIN_TAG", "PLUGIN_TAGS")
|
||||
var tags []string
|
||||
if tagInput == "" {
|
||||
tags = []string{"latest"}
|
||||
} else {
|
||||
for _, t := range strings.Split(tagInput, ",") {
|
||||
trimmed := strings.TrimSpace(t)
|
||||
if trimmed != "" {
|
||||
tags = append(tags, trimmed)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
repositoryName := trimHostname(repo, registry)
|
||||
for _, t := range tags {
|
||||
exists, err := tagExists(svc, repositoryName, t)
|
||||
if err != nil {
|
||||
logrus.Fatalf("Error checking if image exists for tag %s: %v", t, err)
|
||||
}
|
||||
if exists {
|
||||
logrus.Infof("%s:%s: Image tag exists. Skipping push.", repo, t)
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// invoke the base docker plugin binary
|
||||
cmd := exec.Command(docker.GetDroneDockerExecCmd())
|
||||
cmd.Stdout = os.Stdout
|
||||
@@ -249,3 +282,20 @@ func getECRClient(sess *session.Session, role string, externalId string, idToken
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func tagExists(svc ecrAPI, repository, tag string) (bool, error) {
|
||||
input := &ecr.DescribeImagesInput{
|
||||
RepositoryName: aws.String(repository),
|
||||
ImageIds: []*ecr.ImageIdentifier{
|
||||
{ImageTag: aws.String(tag)},
|
||||
},
|
||||
}
|
||||
output, err := svc.DescribeImages(input)
|
||||
if err != nil {
|
||||
if aerr, ok := err.(awserr.Error); ok && aerr.Code() == "ImageNotFoundException" {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
return len(output.ImageDetails) > 0, nil
|
||||
}
|
||||
|
||||
@@ -45,33 +45,35 @@ type (
|
||||
|
||||
// Build defines Docker build parameters.
|
||||
Build struct {
|
||||
Remote string // Git remote URL
|
||||
Name string // Docker build using default named tag
|
||||
TempTag string // Temporary tag used during docker build
|
||||
Dockerfile string // Docker build Dockerfile
|
||||
Context string // Docker build context
|
||||
Tags []string // Docker build tags
|
||||
Args []string // Docker build args
|
||||
ArgsEnv []string // Docker build args from env
|
||||
Target string // Docker build target
|
||||
Squash bool // Docker build squash
|
||||
Pull bool // Docker build pull
|
||||
CacheFrom []string // Docker build cache-from
|
||||
Compress bool // Docker build compress
|
||||
Repo string // Docker build repository
|
||||
LabelSchema []string // label-schema Label map
|
||||
AutoLabel bool // auto-label bool
|
||||
Labels []string // Label map
|
||||
Link string // Git repo link
|
||||
NoCache bool // Docker build no-cache
|
||||
Secret string // secret keypair
|
||||
SecretEnvs []string // Docker build secrets with env var as source
|
||||
SecretFiles []string // Docker build secrets with file as source
|
||||
AddHost []string // Docker build add-host
|
||||
Quiet bool // Docker build quiet
|
||||
Platform string // Docker build platform
|
||||
SSHAgentKey string // Docker build ssh agent key
|
||||
SSHKeyPath string // Docker build ssh key path
|
||||
Remote string // Git remote URL
|
||||
Name string // Docker build using default named tag
|
||||
TempTag string // Temporary tag used during docker build
|
||||
Dockerfile string // Docker build Dockerfile
|
||||
Context string // Docker build context
|
||||
Tags []string // Docker build tags
|
||||
Args []string // Docker build args
|
||||
ArgsEnv []string // Docker build args from env
|
||||
ArgsNew []string // docker build args which has comma seperated values
|
||||
IsMultipleBuildArgs bool // env variable for fall back to old build args
|
||||
Target string // Docker build target
|
||||
Squash bool // Docker build squash
|
||||
Pull bool // Docker build pull
|
||||
CacheFrom []string // Docker build cache-from
|
||||
Compress bool // Docker build compress
|
||||
Repo string // Docker build repository
|
||||
LabelSchema []string // label-schema Label map
|
||||
AutoLabel bool // auto-label bool
|
||||
Labels []string // Label map
|
||||
Link string // Git repo link
|
||||
NoCache bool // Docker build no-cache
|
||||
Secret string // secret keypair
|
||||
SecretEnvs []string // Docker build secrets with env var as source
|
||||
SecretFiles []string // Docker build secrets with file as source
|
||||
AddHost []string // Docker build add-host
|
||||
Quiet bool // Docker build quiet
|
||||
Platform string // Docker build platform
|
||||
SSHAgentKey string // Docker build ssh agent key
|
||||
SSHKeyPath string // Docker build ssh key path
|
||||
}
|
||||
|
||||
// Plugin defines the Docker plugin parameters.
|
||||
@@ -172,10 +174,10 @@ func (p Plugin) Exec() error {
|
||||
|
||||
if p.BaseImageRegistry != "" {
|
||||
if p.BaseImageUsername == "" {
|
||||
return fmt.Errorf("Username cannot be empty. The base image connector requires authenticated access. Please either use an authenticated connector, or remove the base image connector.")
|
||||
fmt.Printf("Username cannot be empty. The base image connector requires authenticated access. Please either use an authenticated connector, or remove the base image connector.")
|
||||
}
|
||||
if p.BaseImagePassword == "" {
|
||||
return fmt.Errorf("Password cannot be empty. The base image connector requires authenticated access. Please either use an authenticated connector, or remove the base image connector.")
|
||||
fmt.Printf("Password cannot be empty. The base image connector requires authenticated access. Please either use an authenticated connector, or remove the base image connector.")
|
||||
}
|
||||
var baseConnectorLogin Login
|
||||
baseConnectorLogin.Registry = p.BaseImageRegistry
|
||||
@@ -413,8 +415,14 @@ func commandBuild(build Build) *exec.Cmd {
|
||||
for _, arg := range build.ArgsEnv {
|
||||
addProxyValue(&build, arg)
|
||||
}
|
||||
for _, arg := range build.Args {
|
||||
args = append(args, "--build-arg", arg)
|
||||
if build.IsMultipleBuildArgs {
|
||||
for _, arg := range build.ArgsNew {
|
||||
args = append(args, "--build-arg", arg)
|
||||
}
|
||||
} else {
|
||||
for _, arg := range build.Args {
|
||||
args = append(args, "--build-arg", arg)
|
||||
}
|
||||
}
|
||||
for _, host := range build.AddHost {
|
||||
args = append(args, "--add-host", host)
|
||||
@@ -519,6 +527,10 @@ func addProxyValue(build *Build, key string) {
|
||||
build.Args = append(build.Args, fmt.Sprintf("%s=%s", key, value))
|
||||
build.Args = append(build.Args, fmt.Sprintf("%s=%s", strings.ToUpper(key), value))
|
||||
}
|
||||
if len(value) > 0 && !hasProxyBuildArgNew(build, key) {
|
||||
build.ArgsNew = append(build.ArgsNew, fmt.Sprintf("%s=%s", key, value))
|
||||
build.ArgsNew = append(build.ArgsNew, fmt.Sprintf("%s=%s", strings.ToUpper(key), value))
|
||||
}
|
||||
}
|
||||
|
||||
// helper function to get a proxy value from the environment.
|
||||
@@ -546,6 +558,17 @@ func hasProxyBuildArg(build *Build, key string) bool {
|
||||
|
||||
return false
|
||||
}
|
||||
func hasProxyBuildArgNew(build *Build, key string) bool {
|
||||
keyUpper := strings.ToUpper(key)
|
||||
|
||||
for _, s := range build.ArgsNew {
|
||||
if strings.HasPrefix(s, key) || strings.HasPrefix(s, keyUpper) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// helper function to create the docker tag command.
|
||||
func commandTag(build Build, tag string) *exec.Cmd {
|
||||
|
||||
Reference in New Issue
Block a user