mirror of
https://github.com/drone-plugins/drone-docker.git
synced 2026-06-14 05:13:02 +08:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 44157a2e29 | |||
| feb90fe92d | |||
| 55c76aeaf0 | |||
| b54379f077 | |||
| ab3fed4710 | |||
| e62984fe46 | |||
| c48ca605a4 | |||
| 0e03ef3eab | |||
| 7a498e78b2 |
@@ -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
|
||||||
+62
-12
@@ -22,6 +22,10 @@ import (
|
|||||||
docker "github.com/drone-plugins/drone-docker"
|
docker "github.com/drone-plugins/drone-docker"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ecrAPI interface {
|
||||||
|
DescribeImages(*ecr.DescribeImagesInput) (*ecr.DescribeImagesOutput, error)
|
||||||
|
}
|
||||||
|
|
||||||
const defaultRegion = "us-east-1"
|
const defaultRegion = "us-east-1"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -31,18 +35,19 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
repo = getenv("PLUGIN_REPO")
|
repo = getenv("PLUGIN_REPO")
|
||||||
registry = getenv("PLUGIN_REGISTRY")
|
registry = getenv("PLUGIN_REGISTRY")
|
||||||
region = getenv("PLUGIN_REGION", "ECR_REGION", "AWS_REGION")
|
region = getenv("PLUGIN_REGION", "ECR_REGION", "AWS_REGION")
|
||||||
key = getenv("PLUGIN_ACCESS_KEY", "ECR_ACCESS_KEY", "AWS_ACCESS_KEY_ID")
|
key = getenv("PLUGIN_ACCESS_KEY", "ECR_ACCESS_KEY", "AWS_ACCESS_KEY_ID")
|
||||||
secret = getenv("PLUGIN_SECRET_KEY", "ECR_SECRET_KEY", "AWS_SECRET_ACCESS_KEY")
|
secret = getenv("PLUGIN_SECRET_KEY", "ECR_SECRET_KEY", "AWS_SECRET_ACCESS_KEY")
|
||||||
create = parseBoolOrDefault(false, getenv("PLUGIN_CREATE_REPOSITORY", "ECR_CREATE_REPOSITORY"))
|
create = parseBoolOrDefault(false, getenv("PLUGIN_CREATE_REPOSITORY", "ECR_CREATE_REPOSITORY"))
|
||||||
lifecyclePolicy = getenv("PLUGIN_LIFECYCLE_POLICY")
|
lifecyclePolicy = getenv("PLUGIN_LIFECYCLE_POLICY")
|
||||||
repositoryPolicy = getenv("PLUGIN_REPOSITORY_POLICY")
|
repositoryPolicy = getenv("PLUGIN_REPOSITORY_POLICY")
|
||||||
assumeRole = getenv("PLUGIN_ASSUME_ROLE")
|
assumeRole = getenv("PLUGIN_ASSUME_ROLE")
|
||||||
externalId = getenv("PLUGIN_EXTERNAL_ID")
|
externalId = getenv("PLUGIN_EXTERNAL_ID")
|
||||||
scanOnPush = parseBoolOrDefault(false, getenv("PLUGIN_SCAN_ON_PUSH"))
|
scanOnPush = parseBoolOrDefault(false, getenv("PLUGIN_SCAN_ON_PUSH"))
|
||||||
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
|
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
|
||||||
|
skipPushIfTagExists = parseBoolOrDefault(false, getenv("PLUGIN_SKIP_PUSH_IF_TAG_EXISTS"))
|
||||||
)
|
)
|
||||||
|
|
||||||
// set the region
|
// set the region
|
||||||
@@ -114,6 +119,34 @@ func main() {
|
|||||||
os.Setenv("DOCKER_PASSWORD", password)
|
os.Setenv("DOCKER_PASSWORD", password)
|
||||||
os.Setenv("PLUGIN_REGISTRY_TYPE", "ECR")
|
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
|
// invoke the base docker plugin binary
|
||||||
cmd := exec.Command(docker.GetDroneDockerExecCmd())
|
cmd := exec.Command(docker.GetDroneDockerExecCmd())
|
||||||
cmd.Stdout = os.Stdout
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM docker:27.3.1-dind
|
FROM docker:20.10.14-dind
|
||||||
|
|
||||||
ENV DOCKER_HOST=unix:///var/run/docker.sock
|
ENV DOCKER_HOST=unix:///var/run/docker.sock
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM arm64v8/docker:27.3.1-dind
|
FROM arm64v8/docker:20.10.14-dind
|
||||||
|
|
||||||
ENV DOCKER_HOST=unix:///var/run/docker.sock
|
ENV DOCKER_HOST=unix:///var/run/docker.sock
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user