mirror of
https://github.com/drone-plugins/drone-gitea-release.git
synced 2026-06-16 14:50:24 +08:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a7044f7561 | |||
| ca3c0a6314 | |||
| a0f555112f | |||
| bbcd1f18ce | |||
| fee91d3014 | |||
| c7539c8910 | |||
| 420e9f7f28 | |||
| bd912f262f | |||
| 22fb65701e | |||
| d23c4f699f | |||
| 7058d0574c | |||
| 6ae63e4434 | |||
| f57eb724a4 | |||
| b0a00e0500 |
-342
@@ -1,342 +0,0 @@
|
|||||||
def main(ctx):
|
|
||||||
before = testing(ctx)
|
|
||||||
|
|
||||||
stages = [
|
|
||||||
linux(ctx, "amd64"),
|
|
||||||
linux(ctx, "arm64"),
|
|
||||||
linux(ctx, "arm"),
|
|
||||||
windows(ctx, "1909"),
|
|
||||||
windows(ctx, "1903"),
|
|
||||||
windows(ctx, "1809"),
|
|
||||||
]
|
|
||||||
|
|
||||||
after = manifest(ctx) + gitter(ctx)
|
|
||||||
|
|
||||||
for b in before:
|
|
||||||
for s in stages:
|
|
||||||
s["depends_on"].append(b["name"])
|
|
||||||
|
|
||||||
for s in stages:
|
|
||||||
for a in after:
|
|
||||||
a["depends_on"].append(s["name"])
|
|
||||||
|
|
||||||
return before + stages + after
|
|
||||||
|
|
||||||
def testing(ctx):
|
|
||||||
return [{
|
|
||||||
"kind": "pipeline",
|
|
||||||
"type": "docker",
|
|
||||||
"name": "testing",
|
|
||||||
"platform": {
|
|
||||||
"os": "linux",
|
|
||||||
"arch": "amd64",
|
|
||||||
},
|
|
||||||
"steps": [
|
|
||||||
{
|
|
||||||
"name": "staticcheck",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"pull": "always",
|
|
||||||
"commands": [
|
|
||||||
"go run honnef.co/go/tools/cmd/staticcheck ./...",
|
|
||||||
],
|
|
||||||
"volumes": [
|
|
||||||
{
|
|
||||||
"name": "gopath",
|
|
||||||
"path": "/go",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lint",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"commands": [
|
|
||||||
"go run golang.org/x/lint/golint -set_exit_status ./...",
|
|
||||||
],
|
|
||||||
"volumes": [
|
|
||||||
{
|
|
||||||
"name": "gopath",
|
|
||||||
"path": "/go",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "vet",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"commands": [
|
|
||||||
"go vet ./...",
|
|
||||||
],
|
|
||||||
"volumes": [
|
|
||||||
{
|
|
||||||
"name": "gopath",
|
|
||||||
"path": "/go",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "test",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"commands": [
|
|
||||||
"go test -cover ./...",
|
|
||||||
],
|
|
||||||
"volumes": [
|
|
||||||
{
|
|
||||||
"name": "gopath",
|
|
||||||
"path": "/go",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"volumes": [
|
|
||||||
{
|
|
||||||
"name": "gopath",
|
|
||||||
"temp": {},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"trigger": {
|
|
||||||
"ref": [
|
|
||||||
"refs/heads/master",
|
|
||||||
"refs/tags/**",
|
|
||||||
"refs/pull/**",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}]
|
|
||||||
|
|
||||||
def linux(ctx, arch):
|
|
||||||
if ctx.build.event == "tag":
|
|
||||||
build = [
|
|
||||||
'go build -v -ldflags "-X main.version=%s" -a -tags netgo -o release/linux/%s/drone-gitea-release ./cmd/drone-gitea-release' % (ctx.build.ref.replace("refs/tags/v", ""), arch),
|
|
||||||
]
|
|
||||||
else:
|
|
||||||
build = [
|
|
||||||
'go build -v -ldflags "-X main.version=%s" -a -tags netgo -o release/linux/%s/drone-gitea-release ./cmd/drone-gitea-release' % (ctx.build.commit[0:8], arch),
|
|
||||||
]
|
|
||||||
|
|
||||||
steps = [
|
|
||||||
{
|
|
||||||
"name": "environment",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"pull": "always",
|
|
||||||
"environment": {
|
|
||||||
"CGO_ENABLED": "0",
|
|
||||||
},
|
|
||||||
"commands": [
|
|
||||||
"go version",
|
|
||||||
"go env",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "build",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"environment": {
|
|
||||||
"CGO_ENABLED": "0",
|
|
||||||
},
|
|
||||||
"commands": build,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "executable",
|
|
||||||
"image": "golang:1.15",
|
|
||||||
"commands": [
|
|
||||||
"./release/linux/%s/drone-gitea-release --help" % (arch),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
if ctx.build.event != "pull_request":
|
|
||||||
steps.append({
|
|
||||||
"name": "docker",
|
|
||||||
"image": "plugins/docker",
|
|
||||||
"settings": {
|
|
||||||
"dockerfile": "docker/Dockerfile.linux.%s" % (arch),
|
|
||||||
"repo": "plugins/gitea-release",
|
|
||||||
"username": {
|
|
||||||
"from_secret": "docker_username",
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"from_secret": "docker_password",
|
|
||||||
},
|
|
||||||
"auto_tag": True,
|
|
||||||
"auto_tag_suffix": "linux-%s" % (arch),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
"kind": "pipeline",
|
|
||||||
"type": "docker",
|
|
||||||
"name": "linux-%s" % (arch),
|
|
||||||
"platform": {
|
|
||||||
"os": "linux",
|
|
||||||
"arch": arch,
|
|
||||||
},
|
|
||||||
"steps": steps,
|
|
||||||
"depends_on": [],
|
|
||||||
"trigger": {
|
|
||||||
"ref": [
|
|
||||||
"refs/heads/master",
|
|
||||||
"refs/tags/**",
|
|
||||||
"refs/pull/**",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
def windows(ctx, version):
|
|
||||||
docker = [
|
|
||||||
"echo $env:PASSWORD | docker login --username $env:USERNAME --password-stdin",
|
|
||||||
]
|
|
||||||
|
|
||||||
if ctx.build.event == "tag":
|
|
||||||
build = [
|
|
||||||
'go build -v -ldflags "-X main.version=%s" -a -tags netgo -o release/windows/amd64/drone-gitea-release.exe ./cmd/drone-gitea-release' % (ctx.build.ref.replace("refs/tags/v", "")),
|
|
||||||
]
|
|
||||||
|
|
||||||
docker = docker + [
|
|
||||||
"docker build --pull -f docker/Dockerfile.windows.%s -t plugins/gitea-release:%s-windows-%s-amd64 ." % (version, ctx.build.ref.replace("refs/tags/v", ""), version),
|
|
||||||
"docker run --rm plugins/gitea-release:%s-windows-%s-amd64 --help" % (ctx.build.ref.replace("refs/tags/v", ""), version),
|
|
||||||
"docker push plugins/gitea-release:%s-windows-%s-amd64" % (ctx.build.ref.replace("refs/tags/v", ""), version),
|
|
||||||
]
|
|
||||||
else:
|
|
||||||
build = [
|
|
||||||
'go build -v -ldflags "-X main.version=%s" -a -tags netgo -o release/windows/amd64/drone-gitea-release.exe ./cmd/drone-gitea-release' % (ctx.build.commit[0:8]),
|
|
||||||
]
|
|
||||||
|
|
||||||
docker = docker + [
|
|
||||||
"docker build --pull -f docker/Dockerfile.windows.%s -t plugins/gitea-release:windows-%s-amd64 ." % (version, version),
|
|
||||||
"docker run --rm plugins/gitea-release:windows-%s-amd64 --help" % (version),
|
|
||||||
"docker push plugins/gitea-release:windows-%s-amd64" % (version),
|
|
||||||
]
|
|
||||||
|
|
||||||
return {
|
|
||||||
"kind": "pipeline",
|
|
||||||
"type": "ssh",
|
|
||||||
"name": "windows-%s" % (version),
|
|
||||||
"platform": {
|
|
||||||
"os": "windows",
|
|
||||||
},
|
|
||||||
"server": {
|
|
||||||
"host": {
|
|
||||||
"from_secret": "windows_server_%s" % (version),
|
|
||||||
},
|
|
||||||
"user": {
|
|
||||||
"from_secret": "windows_username",
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"from_secret": "windows_password",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"steps": [
|
|
||||||
{
|
|
||||||
"name": "environment",
|
|
||||||
"environment": {
|
|
||||||
"CGO_ENABLED": "0",
|
|
||||||
},
|
|
||||||
"commands": [
|
|
||||||
"go version",
|
|
||||||
"go env",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "build",
|
|
||||||
"environment": {
|
|
||||||
"CGO_ENABLED": "0",
|
|
||||||
},
|
|
||||||
"commands": build,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "executable",
|
|
||||||
"commands": [
|
|
||||||
"./release/windows/amd64/drone-gitea-release.exe --help",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "docker",
|
|
||||||
"environment": {
|
|
||||||
"USERNAME": {
|
|
||||||
"from_secret": "docker_username",
|
|
||||||
},
|
|
||||||
"PASSWORD": {
|
|
||||||
"from_secret": "docker_password",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"commands": docker,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"depends_on": [],
|
|
||||||
"trigger": {
|
|
||||||
"ref": [
|
|
||||||
"refs/heads/master",
|
|
||||||
"refs/tags/**",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
def manifest(ctx):
|
|
||||||
return [{
|
|
||||||
"kind": "pipeline",
|
|
||||||
"type": "docker",
|
|
||||||
"name": "manifest",
|
|
||||||
"steps": [
|
|
||||||
{
|
|
||||||
"name": "manifest",
|
|
||||||
"image": "plugins/manifest",
|
|
||||||
"settings": {
|
|
||||||
"auto_tag": "true",
|
|
||||||
"username": {
|
|
||||||
"from_secret": "docker_username",
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"from_secret": "docker_password",
|
|
||||||
},
|
|
||||||
"spec": "docker/manifest.tmpl",
|
|
||||||
"ignore_missing": "true",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "microbadger",
|
|
||||||
"image": "plugins/webhook",
|
|
||||||
"settings": {
|
|
||||||
"urls": {
|
|
||||||
"from_secret": "microbadger_url",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"depends_on": [],
|
|
||||||
"trigger": {
|
|
||||||
"ref": [
|
|
||||||
"refs/heads/master",
|
|
||||||
"refs/tags/**",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}]
|
|
||||||
|
|
||||||
def gitter(ctx):
|
|
||||||
return [{
|
|
||||||
"kind": "pipeline",
|
|
||||||
"type": "docker",
|
|
||||||
"name": "gitter",
|
|
||||||
"clone": {
|
|
||||||
"disable": True,
|
|
||||||
},
|
|
||||||
"steps": [
|
|
||||||
{
|
|
||||||
"name": "gitter",
|
|
||||||
"image": "plugins/gitter",
|
|
||||||
"settings": {
|
|
||||||
"webhook": {
|
|
||||||
"from_secret": "gitter_webhook",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"depends_on": [
|
|
||||||
"manifest",
|
|
||||||
],
|
|
||||||
"trigger": {
|
|
||||||
"ref": [
|
|
||||||
"refs/heads/master",
|
|
||||||
"refs/tags/**",
|
|
||||||
],
|
|
||||||
"status": [
|
|
||||||
"failure",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}]
|
|
||||||
+254
@@ -0,0 +1,254 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: vm
|
||||||
|
name: testing
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
pool:
|
||||||
|
use: ubuntu
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: lint
|
||||||
|
image: golang:1.20
|
||||||
|
pull: always
|
||||||
|
commands:
|
||||||
|
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||||
|
- golangci-lint version
|
||||||
|
- golangci-lint run
|
||||||
|
volumes:
|
||||||
|
- name: gopath
|
||||||
|
path: "/go"
|
||||||
|
- name: test
|
||||||
|
image: golang:1.20
|
||||||
|
commands:
|
||||||
|
- go test -cover ./...
|
||||||
|
volumes:
|
||||||
|
- name: gopath
|
||||||
|
path: "/go"
|
||||||
|
volumes:
|
||||||
|
- name: gopath
|
||||||
|
temp: {}
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
- refs/pull/**
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: vm
|
||||||
|
name: linux-amd64
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
pool:
|
||||||
|
use: ubuntu
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: environment
|
||||||
|
image: golang:1.20
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go version
|
||||||
|
- go env
|
||||||
|
- name: build
|
||||||
|
image: golang:1.20
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go build -v -ldflags "-X main.version=" -a -tags netgo -o release/linux/amd64/drone-gitea-release .
|
||||||
|
- name: docker
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
dockerfile: docker/Dockerfile.linux.amd64
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: linux-amd64
|
||||||
|
depends_on:
|
||||||
|
- testing
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
- refs/pull/**
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: vm
|
||||||
|
name: linux-arm64
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: arm64
|
||||||
|
pool:
|
||||||
|
use: ubuntu_arm64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: environment
|
||||||
|
image: golang:1.20
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go version
|
||||||
|
- go env
|
||||||
|
- name: build
|
||||||
|
image: golang:1.20
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go build -v -ldflags "-X main.version=" -a -tags netgo -o release/linux/arm64/drone-gitea-release .
|
||||||
|
- name: docker
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
dockerfile: docker/Dockerfile.linux.arm64
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: linux-arm64
|
||||||
|
depends_on:
|
||||||
|
- testing
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
- refs/pull/**
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: vm
|
||||||
|
name: windows-1809
|
||||||
|
platform:
|
||||||
|
os: windows
|
||||||
|
arch: amd64
|
||||||
|
pool:
|
||||||
|
use: windows
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: environment
|
||||||
|
image: golang:1.20
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go version
|
||||||
|
- go env
|
||||||
|
- name: build
|
||||||
|
image: golang:1.20
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go build -v -ldflags "-X main.version=" -a -tags netgo -o release/windows/amd64/drone-gitea-release.exe .
|
||||||
|
- name: docker
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
dockerfile: docker/Dockerfile.windows.1809
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: windows-1809-amd64
|
||||||
|
daemon_off: true
|
||||||
|
purge: false
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
depends_on:
|
||||||
|
- testing
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
- refs/pull/**
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: vm
|
||||||
|
name: windows-ltsc2022
|
||||||
|
platform:
|
||||||
|
os: windows
|
||||||
|
arch: amd64
|
||||||
|
pool:
|
||||||
|
use: windows-2022
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: environment
|
||||||
|
image: golang:1.20
|
||||||
|
pull: always
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go version
|
||||||
|
- go env
|
||||||
|
- name: build
|
||||||
|
image: golang:1.20
|
||||||
|
environment:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
commands:
|
||||||
|
- go build -v -ldflags "-X main.version=" -a -tags netgo -o release/windows/amd64/drone-gitea-release.exe .
|
||||||
|
- name: docker
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
dockerfile: docker/Dockerfile.windows.ltsc2022
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: windows-ltsc2022-amd64
|
||||||
|
daemon_off: true
|
||||||
|
purge: false
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
depends_on:
|
||||||
|
- testing
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
|
- refs/pull/**
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: vm
|
||||||
|
name: manifest
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
pool:
|
||||||
|
use: ubuntu
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: manifest
|
||||||
|
image: plugins/manifest
|
||||||
|
settings:
|
||||||
|
auto_tag: "true"
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
spec: docker/manifest.tmpl
|
||||||
|
ignore_missing: true
|
||||||
|
depends_on:
|
||||||
|
- linux-amd64
|
||||||
|
- linux-arm64
|
||||||
|
- windows-1809
|
||||||
|
- windows-ltsc2022
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- refs/tags/**
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
repository:
|
repository:
|
||||||
name: drone-gitea-release
|
name: drone-gitea-release
|
||||||
description: Drone plugin for creating and tagging GitHub releases
|
description: Drone plugin for creating and tagging Gitea releases
|
||||||
homepage: http://plugins.drone.io/drone-plugins/drone-gitea-release
|
homepage: http://plugins.drone.io/drone-plugins/drone-gitea-release
|
||||||
topics: drone, drone-plugin
|
topics: drone, drone-plugin
|
||||||
|
|
||||||
@@ -69,9 +69,5 @@ branches:
|
|||||||
- continuous-integration/drone/pr
|
- continuous-integration/drone/pr
|
||||||
enforce_admins: false
|
enforce_admins: false
|
||||||
restrictions:
|
restrictions:
|
||||||
apps:
|
|
||||||
- renovate
|
|
||||||
users: []
|
users: []
|
||||||
teams:
|
teams: []
|
||||||
- Admins
|
|
||||||
- Maintainers
|
|
||||||
|
|||||||
+28
-3
@@ -1,5 +1,30 @@
|
|||||||
/release/
|
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||||
/drone-gitea-release*
|
*.o
|
||||||
|
*.a
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Folders
|
||||||
|
_obj
|
||||||
|
_test
|
||||||
|
|
||||||
|
# Architecture specific extensions/prefixes
|
||||||
|
*.[568vq]
|
||||||
|
[568vq].out
|
||||||
|
|
||||||
|
*.cgo1.go
|
||||||
|
*.cgo2.c
|
||||||
|
_cgo_defun.c
|
||||||
|
_cgo_gotypes.go
|
||||||
|
_cgo_export.*
|
||||||
|
|
||||||
|
_testmain.go
|
||||||
|
|
||||||
|
*.exe
|
||||||
|
*.test
|
||||||
|
*.prof
|
||||||
|
|
||||||
|
release/
|
||||||
|
vendor/
|
||||||
|
|
||||||
coverage.out
|
coverage.out
|
||||||
.drone.yml
|
drone-gitea-release
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
inputSet:
|
||||||
|
name: event-PR
|
||||||
|
identifier: eventPR
|
||||||
|
orgIdentifier: default
|
||||||
|
projectIdentifier: Drone_Plugins
|
||||||
|
pipeline:
|
||||||
|
identifier: dronegiteareleaseharness
|
||||||
|
properties:
|
||||||
|
ci:
|
||||||
|
codebase:
|
||||||
|
build:
|
||||||
|
type: PR
|
||||||
|
spec:
|
||||||
|
number: <+trigger.prNumber>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
inputSet:
|
||||||
|
name: event-Push
|
||||||
|
identifier: eventPush
|
||||||
|
orgIdentifier: default
|
||||||
|
projectIdentifier: Drone_Plugins
|
||||||
|
pipeline:
|
||||||
|
identifier: dronegiteareleaseharness
|
||||||
|
properties:
|
||||||
|
ci:
|
||||||
|
codebase:
|
||||||
|
build:
|
||||||
|
type: branch
|
||||||
|
spec:
|
||||||
|
branch: <+trigger.branch>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
inputSet:
|
||||||
|
name: event-Tag
|
||||||
|
identifier: eventTag
|
||||||
|
orgIdentifier: default
|
||||||
|
projectIdentifier: Drone_Plugins
|
||||||
|
pipeline:
|
||||||
|
identifier: dronegiteareleaseharness
|
||||||
|
properties:
|
||||||
|
ci:
|
||||||
|
codebase:
|
||||||
|
build:
|
||||||
|
type: tag
|
||||||
|
spec:
|
||||||
|
tag: <+trigger.tag>
|
||||||
@@ -0,0 +1,383 @@
|
|||||||
|
pipeline:
|
||||||
|
name: drone-gitea-release-harness
|
||||||
|
identifier: dronegiteareleaseharness
|
||||||
|
projectIdentifier: Drone_Plugins
|
||||||
|
orgIdentifier: default
|
||||||
|
tags: {}
|
||||||
|
properties:
|
||||||
|
ci:
|
||||||
|
codebase:
|
||||||
|
connectorRef: GitHub_Drone_Plugins_Org
|
||||||
|
repoName: drone-gitea-release
|
||||||
|
build: <+input>
|
||||||
|
sparseCheckout: []
|
||||||
|
stages:
|
||||||
|
- stage:
|
||||||
|
name: Testing Stage
|
||||||
|
identifier: Testing_Stage
|
||||||
|
type: CI
|
||||||
|
spec:
|
||||||
|
cloneCodebase: true
|
||||||
|
caching:
|
||||||
|
enabled: false
|
||||||
|
paths: []
|
||||||
|
platform:
|
||||||
|
os: Linux
|
||||||
|
arch: Amd64
|
||||||
|
runtime:
|
||||||
|
type: Cloud
|
||||||
|
spec: {}
|
||||||
|
execution:
|
||||||
|
steps:
|
||||||
|
- step:
|
||||||
|
type: Run
|
||||||
|
name: Lint
|
||||||
|
identifier: Lint
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: golang:1.20
|
||||||
|
shell: Sh
|
||||||
|
command: |-
|
||||||
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||||
|
golangci-lint version
|
||||||
|
golangci-lint run
|
||||||
|
- step:
|
||||||
|
type: Run
|
||||||
|
name: Test
|
||||||
|
identifier: Run_1
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: golang:1.20
|
||||||
|
shell: Sh
|
||||||
|
command: go test -cover ./...
|
||||||
|
description: ""
|
||||||
|
- parallel:
|
||||||
|
- stage:
|
||||||
|
name: linux-amd64
|
||||||
|
identifier: linuxamd64
|
||||||
|
type: CI
|
||||||
|
spec:
|
||||||
|
cloneCodebase: true
|
||||||
|
caching:
|
||||||
|
enabled: false
|
||||||
|
paths: []
|
||||||
|
platform:
|
||||||
|
os: Linux
|
||||||
|
arch: Amd64
|
||||||
|
runtime:
|
||||||
|
type: Cloud
|
||||||
|
spec: {}
|
||||||
|
execution:
|
||||||
|
steps:
|
||||||
|
- step:
|
||||||
|
name: Build binaries
|
||||||
|
identifier: Build_binaries
|
||||||
|
type: Run
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: golang:1.20
|
||||||
|
shell: Sh
|
||||||
|
command: |-
|
||||||
|
# force go modules
|
||||||
|
export GOPATH=""
|
||||||
|
|
||||||
|
# disable cgo
|
||||||
|
export CGO_ENABLED=0
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# linux
|
||||||
|
export GOOS=linux GOARCH=amd64
|
||||||
|
go build -v -a -tags netgo -o release/linux/amd64/drone-gitea-release .
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
- step:
|
||||||
|
type: Plugin
|
||||||
|
name: BuildAndPushDockerPlugin
|
||||||
|
identifier: BuildAndPushDockerPlugin
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username: drone
|
||||||
|
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
dockerfile: docker/Dockerfile.linux.amd64
|
||||||
|
auto_tag: "true"
|
||||||
|
auto_tag_suffix: linux-amd64
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: <+codebase.build.type> == "tag"
|
||||||
|
- step:
|
||||||
|
type: BuildAndPushDockerRegistry
|
||||||
|
name: BuildAndPushDockerRegistry
|
||||||
|
identifier: BuildAndPushDockerRegistry
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
tags:
|
||||||
|
- linux-amd64
|
||||||
|
caching: false
|
||||||
|
dockerfile: docker/Dockerfile.linux.amd64
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: |
|
||||||
|
<+codebase.build.type> == "branch"
|
||||||
|
description: ""
|
||||||
|
- stage:
|
||||||
|
name: linux-arm64
|
||||||
|
identifier: linuxarm64
|
||||||
|
type: CI
|
||||||
|
spec:
|
||||||
|
cloneCodebase: true
|
||||||
|
caching:
|
||||||
|
enabled: false
|
||||||
|
paths: []
|
||||||
|
platform:
|
||||||
|
os: Linux
|
||||||
|
arch: Arm64
|
||||||
|
runtime:
|
||||||
|
type: Cloud
|
||||||
|
spec: {}
|
||||||
|
execution:
|
||||||
|
steps:
|
||||||
|
- step:
|
||||||
|
name: Build binaries
|
||||||
|
identifier: Build_binaries
|
||||||
|
type: Run
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: golang:1.20
|
||||||
|
shell: Sh
|
||||||
|
command: |-
|
||||||
|
# force go modules
|
||||||
|
export GOPATH=""
|
||||||
|
|
||||||
|
# disable cgo
|
||||||
|
export CGO_ENABLED=0
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# linux
|
||||||
|
export GOOS=linux GOARCH=arm64
|
||||||
|
go build -v -a -tags netgo -o release/linux/arm64/drone-gitea-release .
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
- step:
|
||||||
|
type: Plugin
|
||||||
|
name: BuildAndPushDockerPlugin
|
||||||
|
identifier: BuildAndPushDockerPlugin
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username: drone
|
||||||
|
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
dockerfile: docker/Dockerfile.linux.arm64
|
||||||
|
auto_tag: "true"
|
||||||
|
auto_tag_suffix: linux-arm64
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: <+codebase.build.type> == "tag"
|
||||||
|
- step:
|
||||||
|
type: BuildAndPushDockerRegistry
|
||||||
|
name: BuildAndPushDockerRegistry
|
||||||
|
identifier: BuildAndPushDockerRegistry
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
tags:
|
||||||
|
- linux-arm64
|
||||||
|
caching: false
|
||||||
|
dockerfile: docker/Dockerfile.linux.arm64
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: |
|
||||||
|
<+codebase.build.type> == "branch"
|
||||||
|
description: ""
|
||||||
|
- stage:
|
||||||
|
name: windows-1809-amd64
|
||||||
|
identifier: windows1809amd64
|
||||||
|
type: CI
|
||||||
|
spec:
|
||||||
|
cloneCodebase: true
|
||||||
|
caching:
|
||||||
|
enabled: false
|
||||||
|
paths: []
|
||||||
|
execution:
|
||||||
|
steps:
|
||||||
|
- step:
|
||||||
|
name: Build binaries
|
||||||
|
identifier: Build_binaries
|
||||||
|
type: Run
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: golang:1.20
|
||||||
|
shell: Sh
|
||||||
|
command: |-
|
||||||
|
# force go modules
|
||||||
|
export GOPATH=""
|
||||||
|
|
||||||
|
# disable cgo
|
||||||
|
export CGO_ENABLED=0
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
GOOS=windows
|
||||||
|
go build -v -a -tags netgo -o release/windows/amd64/drone-gitea-release.exe .
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
- step:
|
||||||
|
type: Plugin
|
||||||
|
name: BuildAndPushDockerPlugin
|
||||||
|
identifier: BuildAndPushDockerPlugin
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username: drone
|
||||||
|
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
dockerfile: docker/Dockerfile.windows.1809
|
||||||
|
auto_tag: "true"
|
||||||
|
auto_tag_suffix: windows-1809-amd64
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: <+codebase.build.type> == "tag"
|
||||||
|
- step:
|
||||||
|
type: BuildAndPushDockerRegistry
|
||||||
|
name: BuildAndPushDockerRegistry
|
||||||
|
identifier: BuildAndPushDockerRegistry
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
tags:
|
||||||
|
- windows-1809-amd64
|
||||||
|
caching: false
|
||||||
|
dockerfile: docker/Dockerfile.windows.1809
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: |
|
||||||
|
<+codebase.build.type> == "branch"
|
||||||
|
infrastructure:
|
||||||
|
type: VM
|
||||||
|
spec:
|
||||||
|
type: Pool
|
||||||
|
spec:
|
||||||
|
poolName: windows-2019
|
||||||
|
os: Windows
|
||||||
|
description: ""
|
||||||
|
delegateSelectors:
|
||||||
|
- windows-vm
|
||||||
|
- stage:
|
||||||
|
name: windows-ltsc2022-amd64
|
||||||
|
identifier: windowsltsc2022amd64
|
||||||
|
type: CI
|
||||||
|
spec:
|
||||||
|
cloneCodebase: true
|
||||||
|
caching:
|
||||||
|
enabled: false
|
||||||
|
paths: []
|
||||||
|
platform:
|
||||||
|
os: Windows
|
||||||
|
arch: Amd64
|
||||||
|
runtime:
|
||||||
|
type: Cloud
|
||||||
|
spec: {}
|
||||||
|
execution:
|
||||||
|
steps:
|
||||||
|
- step:
|
||||||
|
name: Build binaries
|
||||||
|
identifier: Build_binaries
|
||||||
|
type: Run
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: golang:1.20
|
||||||
|
shell: Sh
|
||||||
|
command: |-
|
||||||
|
# force go modules
|
||||||
|
export GOPATH=""
|
||||||
|
|
||||||
|
# disable cgo
|
||||||
|
export CGO_ENABLED=0
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
GOOS=windows
|
||||||
|
go build -v -a -tags netgo -o release/windows/amd64/drone-gitea-release.exe .
|
||||||
|
- step:
|
||||||
|
type: Plugin
|
||||||
|
name: BuildAndPushDockerPlugin
|
||||||
|
identifier: BuildAndPushDockerPlugin
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username: drone
|
||||||
|
password: <+secrets.getValue("Plugins_Docker_Hub_Pat")>
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
dockerfile: docker/Dockerfile.windows.ltsc2022
|
||||||
|
auto_tag: "true"
|
||||||
|
auto_tag_suffix: windows-ltsc2022-amd64
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: <+codebase.build.type> == "tag"
|
||||||
|
- step:
|
||||||
|
type: BuildAndPushDockerRegistry
|
||||||
|
name: BuildAndPushDockerRegistry
|
||||||
|
identifier: BuildAndPushDockerRegistry
|
||||||
|
spec:
|
||||||
|
connectorRef: Plugins_Docker_Hub_Connector
|
||||||
|
repo: plugins/gitea-release
|
||||||
|
tags:
|
||||||
|
- windows-ltsc2022-amd64
|
||||||
|
caching: false
|
||||||
|
dockerfile: docker/Dockerfile.windows.ltsc2022
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: |
|
||||||
|
<+codebase.build.type> == "branch"
|
||||||
|
description: ""
|
||||||
|
- stage:
|
||||||
|
name: Manifest
|
||||||
|
identifier: Manifest
|
||||||
|
type: CI
|
||||||
|
spec:
|
||||||
|
cloneCodebase: true
|
||||||
|
caching:
|
||||||
|
enabled: false
|
||||||
|
paths: []
|
||||||
|
platform:
|
||||||
|
os: Linux
|
||||||
|
arch: Amd64
|
||||||
|
runtime:
|
||||||
|
type: Cloud
|
||||||
|
spec: {}
|
||||||
|
execution:
|
||||||
|
steps:
|
||||||
|
- step:
|
||||||
|
type: Plugin
|
||||||
|
name: Manifest
|
||||||
|
identifier: Manifest
|
||||||
|
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: docker/manifest.tmpl
|
||||||
|
when:
|
||||||
|
stageStatus: Success
|
||||||
|
condition: |
|
||||||
|
<+codebase.build.type> == "tag" || <+codebase.build.type> == "branch"
|
||||||
|
description: ""
|
||||||
|
allowStageExecutions: true
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/drone-plugins/drone-gitea-release/plugin"
|
|
||||||
"github.com/urfave/cli/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
// settingsFlags has the cli.Flags for the plugin.Settings.
|
|
||||||
func settingsFlags(settings *plugin.Settings) []cli.Flag {
|
|
||||||
return []cli.Flag{
|
|
||||||
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "api-key",
|
|
||||||
Usage: "api key to access gitea api",
|
|
||||||
EnvVars: []string{"PLUGIN_API_KEY", "GITEA_RELEASE_API_KEY", "GITEA_TOKEN"},
|
|
||||||
Destination: &settings.APIKey,
|
|
||||||
},
|
|
||||||
&cli.StringSliceFlag{
|
|
||||||
Name: "files",
|
|
||||||
Usage: "list of files to upload",
|
|
||||||
EnvVars: []string{"PLUGIN_FILES", "GITEA_RELEASE_FILES"},
|
|
||||||
Destination: &settings.Files,
|
|
||||||
},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "file-exists",
|
|
||||||
Value: "overwrite",
|
|
||||||
Usage: "what to do if file already exist",
|
|
||||||
EnvVars: []string{"PLUGIN_FILE_EXISTS", "GITEA_RELEASE_FILE_EXISTS"},
|
|
||||||
Destination: &settings.FileExists,
|
|
||||||
},
|
|
||||||
&cli.StringSliceFlag{
|
|
||||||
Name: "checksum",
|
|
||||||
Usage: "generate specific checksums",
|
|
||||||
EnvVars: []string{"PLUGIN_CHECKSUM", "GITEA_RELEASE_CHECKSUM"},
|
|
||||||
Destination: &settings.Checksum},
|
|
||||||
&cli.BoolFlag{
|
|
||||||
Name: "draft",
|
|
||||||
Usage: "create a draft release",
|
|
||||||
EnvVars: []string{"PLUGIN_DRAFT", "GITEA_RELEASE_DRAFT"},
|
|
||||||
Destination: &settings.Draft},
|
|
||||||
&cli.BoolFlag{
|
|
||||||
Name: "prerelease",
|
|
||||||
Usage: "set the release as prerelease",
|
|
||||||
EnvVars: []string{"PLUGIN_PRERELEASE", "GITEA_RELEASE_PRERELEASE"},
|
|
||||||
Destination: &settings.PreRelease},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "base-url",
|
|
||||||
Usage: "url of the gitea instance",
|
|
||||||
EnvVars: []string{"PLUGIN_BASE_URL", "GITEA_RELEASE_BASE_URL"},
|
|
||||||
Destination: &settings.BaseURL},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "title",
|
|
||||||
Value: "",
|
|
||||||
Usage: "file or string for the title shown in the gitea release",
|
|
||||||
EnvVars: []string{"PLUGIN_TITLE", "GITEA_RELEASE_TITLE"},
|
|
||||||
Destination: &settings.Title},
|
|
||||||
&cli.StringFlag{
|
|
||||||
Name: "note",
|
|
||||||
Value: "",
|
|
||||||
Usage: "file or string with notes for the release (example: changelog)",
|
|
||||||
EnvVars: []string{"PLUGIN_NOTE", "GITEA_RELEASE_NOTE"},
|
|
||||||
Destination: &settings.Note},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
// DO NOT MODIFY THIS FILE DIRECTLY
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/drone-plugins/drone-gitea-release/plugin"
|
|
||||||
"github.com/drone-plugins/drone-plugin-lib/errors"
|
|
||||||
"github.com/drone-plugins/drone-plugin-lib/urfave"
|
|
||||||
"github.com/joho/godotenv"
|
|
||||||
"github.com/urfave/cli/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
var version = "unknown"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
settings := &plugin.Settings{}
|
|
||||||
|
|
||||||
if _, err := os.Stat("/run/drone/env"); err == nil {
|
|
||||||
godotenv.Overload("/run/drone/env")
|
|
||||||
}
|
|
||||||
|
|
||||||
app := &cli.App{
|
|
||||||
Name: "drone-gitea-release",
|
|
||||||
Usage: "creates a gitea release",
|
|
||||||
Version: version,
|
|
||||||
Flags: append(settingsFlags(settings), urfave.Flags()...),
|
|
||||||
Action: run(settings),
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := app.Run(os.Args); err != nil {
|
|
||||||
errors.HandleExit(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func run(settings *plugin.Settings) cli.ActionFunc {
|
|
||||||
return func(ctx *cli.Context) error {
|
|
||||||
urfave.LoggingFromContext(ctx)
|
|
||||||
|
|
||||||
plugin := plugin.New(
|
|
||||||
*settings,
|
|
||||||
urfave.PipelineFromContext(ctx),
|
|
||||||
urfave.NetworkFromContext(ctx),
|
|
||||||
)
|
|
||||||
|
|
||||||
if err := plugin.Validate(); err != nil {
|
|
||||||
if e, ok := err.(errors.ExitCoder); ok {
|
|
||||||
return e
|
|
||||||
}
|
|
||||||
|
|
||||||
return errors.ExitMessagef("validation failed: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := plugin.Execute(); err != nil {
|
|
||||||
if e, ok := err.(errors.ExitCoder); ok {
|
|
||||||
return e
|
|
||||||
}
|
|
||||||
|
|
||||||
return errors.ExitMessagef("execution failed: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,4 +6,4 @@ LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" \
|
|||||||
org.label-schema.schema-version="1.0"
|
org.label-schema.schema-version="1.0"
|
||||||
|
|
||||||
ADD release/linux/amd64/drone-gitea-release /bin/
|
ADD release/linux/amd64/drone-gitea-release /bin/
|
||||||
ENTRYPOINT [ "/bin/drone-gitea-release" ]
|
ENTRYPOINT ["/bin/drone-gitea-release"]
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
FROM plugins/base:multiarch
|
|
||||||
|
|
||||||
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" \
|
|
||||||
org.label-schema.name="Drone Gitea Release" \
|
|
||||||
org.label-schema.vendor="Drone.IO Community" \
|
|
||||||
org.label-schema.schema-version="1.0"
|
|
||||||
|
|
||||||
ADD release/linux/arm/drone-gitea-release /bin/
|
|
||||||
ENTRYPOINT [ "/bin/drone-gitea-release" ]
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# escape=`
|
# escape=`
|
||||||
FROM plugins/base:windows-1809-amd64
|
FROM plugins/base:windows-1809-amd64@sha256:61095306fa56d51adc841f2b0f93f511efb5792d12f2549bb2eb1cbce02c1f05
|
||||||
|
|
||||||
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
||||||
org.label-schema.name="Drone Gitea Release" `
|
org.label-schema.name="Drone Gitea Release" `
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# escape=`
|
|
||||||
FROM plugins/base:windows-1903-amd64
|
|
||||||
|
|
||||||
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
|
||||||
org.label-schema.name="Drone Gitea Release" `
|
|
||||||
org.label-schema.vendor="Drone.IO Community" `
|
|
||||||
org.label-schema.schema-version="1.0"
|
|
||||||
|
|
||||||
ADD release/windows/amd64/drone-gitea-release.exe C:/bin/drone-gitea-release.exe
|
|
||||||
ENTRYPOINT [ "C:\\bin\\drone-gitea-release.exe" ]
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# escape=`
|
|
||||||
FROM plugins/base:windows-1909-amd64
|
|
||||||
|
|
||||||
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
|
||||||
org.label-schema.name="Drone Gitea Release" `
|
|
||||||
org.label-schema.vendor="Drone.IO Community" `
|
|
||||||
org.label-schema.schema-version="1.0"
|
|
||||||
|
|
||||||
ADD release/windows/amd64/drone-gitea-release.exe C:/bin/drone-gitea-release.exe
|
|
||||||
ENTRYPOINT [ "C:\\bin\\drone-gitea-release.exe" ]
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# escape=`
|
|
||||||
FROM plugins/base:windows-2004-amd64
|
|
||||||
|
|
||||||
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
|
||||||
org.label-schema.name="Drone Gitea Release" `
|
|
||||||
org.label-schema.vendor="Drone.IO Community" `
|
|
||||||
org.label-schema.schema-version="1.0"
|
|
||||||
|
|
||||||
ADD release/windows/amd64/drone-gitea-release.exe C:/bin/drone-gitea-release.exe
|
|
||||||
ENTRYPOINT [ "C:\\bin\\drone-gitea-release.exe" ]
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# escape=`
|
# escape=`
|
||||||
FROM plugins/base:windows-1803
|
FROM plugins/base:windows-ltsc2022-amd64@sha256:0f90d5bceb432f1ee6f93cf44eed6a38c322834edd55df8a6648c9e6f15131f4
|
||||||
|
|
||||||
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
LABEL maintainer="Drone.IO Community <drone-dev@googlegroups.com>" `
|
||||||
org.label-schema.name="Drone Gitea Release" `
|
org.label-schema.name="Drone Gitea Release" `
|
||||||
+12
-25
@@ -1,44 +1,31 @@
|
|||||||
image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
||||||
|
|
||||||
{{#if build.tags}}
|
{{#if build.tags}}
|
||||||
tags:
|
tags:
|
||||||
{{#each build.tags}}
|
{{#each build.tags}}
|
||||||
- {{this}}
|
- {{this}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
manifests:
|
manifests:
|
||||||
- image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
-
|
||||||
|
image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
||||||
platform:
|
platform:
|
||||||
architecture: amd64
|
architecture: amd64
|
||||||
os: linux
|
os: linux
|
||||||
- image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
|
-
|
||||||
|
image: plugins/gitea-release:{{#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/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm
|
-
|
||||||
platform:
|
image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809
|
||||||
architecture: arm
|
|
||||||
os: linux
|
|
||||||
variant: v7
|
|
||||||
- image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-2004-amd64
|
|
||||||
platform:
|
|
||||||
architecture: amd64
|
|
||||||
os: windows
|
|
||||||
version: 2004
|
|
||||||
- image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1909-amd64
|
|
||||||
platform:
|
|
||||||
architecture: amd64
|
|
||||||
os: windows
|
|
||||||
version: 1909
|
|
||||||
- image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1903-amd64
|
|
||||||
platform:
|
|
||||||
architecture: amd64
|
|
||||||
os: windows
|
|
||||||
version: 1903
|
|
||||||
- image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809-amd64
|
|
||||||
platform:
|
platform:
|
||||||
architecture: amd64
|
architecture: amd64
|
||||||
os: windows
|
os: windows
|
||||||
version: 1809
|
version: 1809
|
||||||
|
-
|
||||||
|
image: plugins/gitea-release:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}ltsc2022-amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: windows
|
||||||
|
version: ltsc2022-amd64
|
||||||
@@ -1,10 +1,18 @@
|
|||||||
module github.com/drone-plugins/drone-gitea-release
|
module github.com/drone-plugins/drone-gitea-release
|
||||||
|
|
||||||
go 1.15
|
go 1.20
|
||||||
|
|
||||||
require (
|
require (
|
||||||
code.gitea.io/sdk/gitea v0.14.0
|
code.gitea.io/sdk/gitea v0.15.1
|
||||||
github.com/drone-plugins/drone-plugin-lib v0.4.0
|
github.com/joho/godotenv v1.4.0
|
||||||
github.com/joho/godotenv v1.3.0
|
github.com/sirupsen/logrus v1.9.0
|
||||||
github.com/urfave/cli/v2 v2.3.0
|
github.com/urfave/cli v1.22.10
|
||||||
|
golang.org/x/crypto v0.4.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
|
||||||
|
github.com/hashicorp/go-version v1.6.0 // indirect
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
|
golang.org/x/sys v0.3.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,48 +1,55 @@
|
|||||||
code.gitea.io/sdk/gitea v0.14.0 h1:m4J352I3p9+bmJUfS+g0odeQzBY/5OXP91Gv6D4fnJ0=
|
code.gitea.io/gitea-vet v0.2.1/go.mod h1:zcNbT/aJEmivCAhfmkHOlT645KNOf9W2KnkLgFjGGfE=
|
||||||
code.gitea.io/sdk/gitea v0.14.0/go.mod h1:89WiyOX1KEcvjP66sRHdu0RafojGo60bT9UqW17VbWs=
|
code.gitea.io/sdk/gitea v0.15.1 h1:WJreC7YYuxbn0UDaPuWIe/mtiNKTvLN8MLkaw71yx/M=
|
||||||
|
code.gitea.io/sdk/gitea v0.15.1/go.mod h1:klY2LVI3s3NChzIk/MzMn7G1FHrfU7qd63iSMVoHRBA=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
|
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/drone-plugins/drone-plugin-lib v0.4.0 h1:qywEYGhquUuid6zNLmKia8CWY1TUa8jPQQ/G9ozfAmc=
|
|
||||||
github.com/drone-plugins/drone-plugin-lib v0.4.0/go.mod h1:EgqogX38GoJFtckeSQyhBJYX8P+KWBPhdprAVvyRxF8=
|
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
|
||||||
github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI=
|
|
||||||
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
|
||||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
|
github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
|
||||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||||
github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
|
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
|
||||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
|
||||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
github.com/urfave/cli v1.22.10 h1:p8Fspmz3iTctJstry1PYS3HVdllxnEzTEsgIgtxTrCk=
|
||||||
|
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||||
|
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
|
||||||
|
golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
|
||||||
|
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
|
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/joho/godotenv"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
"github.com/urfave/cli"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
version = "unknown"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := cli.NewApp()
|
||||||
|
app.Name = "gitea-release plugin"
|
||||||
|
app.Usage = "gitea-release plugin"
|
||||||
|
app.Action = run
|
||||||
|
app.Version = version
|
||||||
|
app.Flags = []cli.Flag{
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "api-key",
|
||||||
|
Usage: "api key to access gitea api",
|
||||||
|
EnvVar: "PLUGIN_API_KEY,GITEA_RELEASE_API_KEY,GITEA_TOKEN",
|
||||||
|
},
|
||||||
|
cli.StringSliceFlag{
|
||||||
|
Name: "files",
|
||||||
|
Usage: "list of files to upload",
|
||||||
|
EnvVar: "PLUGIN_FILES,GITEA_RELEASE_FILES",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "file-exists",
|
||||||
|
Value: "overwrite",
|
||||||
|
Usage: "what to do if file already exist",
|
||||||
|
EnvVar: "PLUGIN_FILE_EXISTS,GITEA_RELEASE_FILE_EXISTS",
|
||||||
|
},
|
||||||
|
cli.StringSliceFlag{
|
||||||
|
Name: "checksum",
|
||||||
|
Usage: "generate specific checksums",
|
||||||
|
EnvVar: "PLUGIN_CHECKSUM,GITEA_RELEASE_CHECKSUM",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "draft",
|
||||||
|
Usage: "create a draft release",
|
||||||
|
EnvVar: "PLUGIN_DRAFT,GITEA_RELEASE_DRAFT",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "insecure",
|
||||||
|
Usage: "visit base-url via insecure https protocol",
|
||||||
|
EnvVar: "PLUGIN_INSECURE,GITEA_RELEASE_INSECURE",
|
||||||
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "prerelease",
|
||||||
|
Usage: "set the release as prerelease",
|
||||||
|
EnvVar: "PLUGIN_PRERELEASE,GITEA_RELEASE_PRERELEASE",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "base-url",
|
||||||
|
Usage: "url of the gitea instance",
|
||||||
|
EnvVar: "PLUGIN_BASE_URL,GITEA_RELEASE_BASE_URL",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "note",
|
||||||
|
Value: "",
|
||||||
|
Usage: "file or string with notes for the release (example: changelog)",
|
||||||
|
EnvVar: "PLUGIN_NOTE,GITEA_RELEASE_NOTE",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "title",
|
||||||
|
Value: "",
|
||||||
|
Usage: "file or string for the title shown in the gitea release",
|
||||||
|
EnvVar: "PLUGIN_TITLE,GITEA_RELEASE_TITLE",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "repo.owner",
|
||||||
|
Usage: "repository owner",
|
||||||
|
EnvVar: "DRONE_REPO_OWNER",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "repo.name",
|
||||||
|
Usage: "repository name",
|
||||||
|
EnvVar: "DRONE_REPO_NAME",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "build.event",
|
||||||
|
Value: "push",
|
||||||
|
Usage: "build event",
|
||||||
|
EnvVar: "DRONE_BUILD_EVENT",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "commit.ref",
|
||||||
|
Value: "refs/heads/master",
|
||||||
|
Usage: "git commit ref",
|
||||||
|
EnvVar: "DRONE_COMMIT_REF",
|
||||||
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "env-file",
|
||||||
|
Usage: "source env file",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := app.Run(os.Args); err != nil {
|
||||||
|
logrus.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func run(c *cli.Context) error {
|
||||||
|
if c.String("env-file") != "" {
|
||||||
|
_ = godotenv.Load(c.String("env-file"))
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin := Plugin{
|
||||||
|
Repo: Repo{
|
||||||
|
Owner: c.String("repo.owner"),
|
||||||
|
Name: c.String("repo.name"),
|
||||||
|
},
|
||||||
|
Build: Build{
|
||||||
|
Event: c.String("build.event"),
|
||||||
|
},
|
||||||
|
Commit: Commit{
|
||||||
|
Ref: c.String("commit.ref"),
|
||||||
|
},
|
||||||
|
Config: Config{
|
||||||
|
APIKey: c.String("api-key"),
|
||||||
|
Files: c.StringSlice("files"),
|
||||||
|
FileExists: c.String("file-exists"),
|
||||||
|
Checksum: c.StringSlice("checksum"),
|
||||||
|
Draft: c.Bool("draft"),
|
||||||
|
PreRelease: c.Bool("prerelease"),
|
||||||
|
BaseURL: c.String("base-url"),
|
||||||
|
Insecure: c.Bool("insecure"),
|
||||||
|
Title: c.String("title"),
|
||||||
|
Note: c.String("note"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return plugin.Exec()
|
||||||
|
}
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/tls"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"net/http/cookiejar"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
Repo struct {
|
||||||
|
Owner string
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
Build struct {
|
||||||
|
Event string
|
||||||
|
}
|
||||||
|
|
||||||
|
Commit struct {
|
||||||
|
Ref string
|
||||||
|
}
|
||||||
|
|
||||||
|
Config struct {
|
||||||
|
APIKey string
|
||||||
|
Files []string
|
||||||
|
FileExists string
|
||||||
|
Checksum []string
|
||||||
|
Draft bool
|
||||||
|
PreRelease bool
|
||||||
|
Insecure bool
|
||||||
|
BaseURL string
|
||||||
|
Title string
|
||||||
|
Note string
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugin struct {
|
||||||
|
Repo Repo
|
||||||
|
Build Build
|
||||||
|
Commit Commit
|
||||||
|
Config Config
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (p Plugin) Exec() error {
|
||||||
|
var (
|
||||||
|
files []string
|
||||||
|
)
|
||||||
|
|
||||||
|
if p.Build.Event != "tag" {
|
||||||
|
return fmt.Errorf("The Gitea Release plugin is only available for tags")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.Config.APIKey == "" {
|
||||||
|
return fmt.Errorf("You must provide an API key")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !fileExistsValues[p.Config.FileExists] {
|
||||||
|
return fmt.Errorf("Invalid value for file_exists")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.Config.BaseURL == "" {
|
||||||
|
return fmt.Errorf("You must provide a base url.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !strings.HasSuffix(p.Config.BaseURL, "/") {
|
||||||
|
p.Config.BaseURL = p.Config.BaseURL + "/"
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
if p.Config.Note != "" {
|
||||||
|
if p.Config.Note, err = readStringOrFile(p.Config.Note); err != nil {
|
||||||
|
return fmt.Errorf("error while reading %s: %v", p.Config.Note, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.Config.Title != "" {
|
||||||
|
if p.Config.Title, err = readStringOrFile(p.Config.Title); err != nil {
|
||||||
|
return fmt.Errorf("error while reading %s: %v", p.Config.Note, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, glob := range p.Config.Files {
|
||||||
|
globed, err := filepath.Glob(glob)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Failed to glob %s. %s", glob, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if globed != nil {
|
||||||
|
files = append(files, globed...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.Config.Checksum) > 0 {
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
|
||||||
|
files, err = writeChecksums(files, p.Config.Checksum)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Failed to write checksums. %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
httpClient := &http.Client{}
|
||||||
|
if p.Config.Insecure {
|
||||||
|
cookieJar, _ := cookiejar.New(nil)
|
||||||
|
httpClient = &http.Client{
|
||||||
|
Jar: cookieJar,
|
||||||
|
Transport: &http.Transport{
|
||||||
|
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
client, err := gitea.NewClient(p.Config.BaseURL, gitea.SetToken(p.Config.APIKey), gitea.SetHTTPClient(httpClient))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
rc := releaseClient{
|
||||||
|
Client: client,
|
||||||
|
Owner: p.Repo.Owner,
|
||||||
|
Repo: p.Repo.Name,
|
||||||
|
Tag: strings.TrimPrefix(p.Commit.Ref, "refs/tags/"),
|
||||||
|
Draft: p.Config.Draft,
|
||||||
|
Prerelease: p.Config.PreRelease,
|
||||||
|
FileExists: p.Config.FileExists,
|
||||||
|
Title: p.Config.Title,
|
||||||
|
Note: p.Config.Note,
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the title was not provided via .drone.yml we use the tag instead
|
||||||
|
// fixes https://github.com/drone-plugins/drone-gitea-release/issues/26
|
||||||
|
if rc.Title == "" {
|
||||||
|
rc.Title = rc.Tag
|
||||||
|
}
|
||||||
|
|
||||||
|
release, err := rc.buildRelease()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Failed to create the release. %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rc.uploadFiles(release.ID, files); err != nil {
|
||||||
|
return fmt.Errorf("Failed to upload the files. %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func readStringOrFile(input string) (string, error) {
|
||||||
|
// Check if input is a file path
|
||||||
|
if _, err := os.Stat(input); err != nil && os.IsNotExist(err) {
|
||||||
|
// No file found => use input as result
|
||||||
|
return input, nil
|
||||||
|
} else if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
result, err := os.ReadFile(input)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return string(result), nil
|
||||||
|
}
|
||||||
-132
@@ -1,132 +0,0 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package plugin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"code.gitea.io/sdk/gitea"
|
|
||||||
"github.com/urfave/cli/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Settings for the plugin.
|
|
||||||
type Settings struct {
|
|
||||||
APIKey string
|
|
||||||
Files cli.StringSlice
|
|
||||||
FileExists string
|
|
||||||
Checksum cli.StringSlice
|
|
||||||
Draft bool
|
|
||||||
PreRelease bool
|
|
||||||
BaseURL string
|
|
||||||
Title string
|
|
||||||
Note string
|
|
||||||
|
|
||||||
uploads []string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate handles the settings validation of the plugin.
|
|
||||||
func (p *Plugin) Validate() error {
|
|
||||||
var err error
|
|
||||||
|
|
||||||
if p.pipeline.Build.Event != "tag" {
|
|
||||||
return fmt.Errorf("gitea release plugin is only available for tags")
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.settings.APIKey == "" {
|
|
||||||
return fmt.Errorf("no api key provided")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !fileExistsValues[p.settings.FileExists] {
|
|
||||||
return fmt.Errorf("invalid value for file_exists")
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.settings.BaseURL == "" {
|
|
||||||
return fmt.Errorf("no base url provided")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !strings.HasSuffix(p.settings.BaseURL, "/") {
|
|
||||||
p.settings.BaseURL = p.settings.BaseURL + "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.settings.Note != "" {
|
|
||||||
if p.settings.Note, err = readStringOrFile(p.settings.Note); err != nil {
|
|
||||||
return fmt.Errorf("error while reading %s: %w", p.settings.Note, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.settings.Title != "" {
|
|
||||||
if p.settings.Title, err = readStringOrFile(p.settings.Title); err != nil {
|
|
||||||
return fmt.Errorf("error while reading %s: %w", p.settings.Note, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
files := p.settings.Files.Value()
|
|
||||||
for _, glob := range files {
|
|
||||||
globed, err := filepath.Glob(glob)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to glob %s: %w", glob, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if globed != nil {
|
|
||||||
p.settings.uploads = append(p.settings.uploads, globed...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(files) > 0 && len(p.settings.uploads) < 1 {
|
|
||||||
return fmt.Errorf("failed to find any file to release")
|
|
||||||
}
|
|
||||||
|
|
||||||
checksum := p.settings.Checksum.Value()
|
|
||||||
if len(checksum) > 0 {
|
|
||||||
p.settings.uploads, err = writeChecksums(files, checksum)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to write checksums: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Execute provides the implementation of the plugin.
|
|
||||||
func (p *Plugin) Execute() error {
|
|
||||||
client, err := gitea.NewClient(p.settings.BaseURL, gitea.SetToken(p.settings.APIKey), gitea.SetHTTPClient(p.network.Client))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
rc := releaseClient{
|
|
||||||
Client: client,
|
|
||||||
Owner: p.pipeline.Repo.Owner,
|
|
||||||
Repo: p.pipeline.Repo.Name,
|
|
||||||
Tag: strings.TrimPrefix(p.pipeline.Commit.Ref, "refs/tags/"),
|
|
||||||
Draft: p.settings.Draft,
|
|
||||||
Prerelease: p.settings.PreRelease,
|
|
||||||
FileExists: p.settings.FileExists,
|
|
||||||
Title: p.settings.Title,
|
|
||||||
Note: p.settings.Note,
|
|
||||||
}
|
|
||||||
|
|
||||||
// When the title was not provided in the config use the tag instead
|
|
||||||
if rc.Title == "" {
|
|
||||||
rc.Title = rc.Tag
|
|
||||||
}
|
|
||||||
|
|
||||||
release, err := rc.buildRelease()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to create the release. %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := rc.uploadFiles(release.ID, p.settings.uploads); err != nil {
|
|
||||||
return fmt.Errorf("failed to upload the files. %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package plugin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestValidate(t *testing.T) {
|
|
||||||
t.Skip()
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestExecute(t *testing.T) {
|
|
||||||
t.Skip()
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package plugin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/drone-plugins/drone-plugin-lib/drone"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Plugin implements drone.Plugin to provide the plugin implementation.
|
|
||||||
type Plugin struct {
|
|
||||||
settings Settings
|
|
||||||
pipeline drone.Pipeline
|
|
||||||
network drone.Network
|
|
||||||
}
|
|
||||||
|
|
||||||
// New initializes a plugin from the given Settings, Pipeline, and Network.
|
|
||||||
func New(settings Settings, pipeline drone.Pipeline, network drone.Network) drone.Plugin {
|
|
||||||
return &Plugin{
|
|
||||||
settings: settings,
|
|
||||||
pipeline: pipeline,
|
|
||||||
network: network,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package plugin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestPlugin(t *testing.T) {
|
|
||||||
t.Skip()
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
package main
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package plugin
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -40,7 +35,7 @@ func (rc *releaseClient) buildRelease() (*gitea.Release, error) {
|
|||||||
release, err = rc.newRelease()
|
release, err = rc.newRelease()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to retrieve or create a release: %s", err)
|
return nil, fmt.Errorf("Failed to retrieve or create a release: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return release, nil
|
return release, nil
|
||||||
@@ -54,11 +49,11 @@ func (rc *releaseClient) getRelease() (*gitea.Release, error) {
|
|||||||
|
|
||||||
for _, release := range releases {
|
for _, release := range releases {
|
||||||
if release.TagName == rc.Tag {
|
if release.TagName == rc.Tag {
|
||||||
fmt.Printf("successfully retrieved %s release\n", rc.Tag)
|
fmt.Printf("Successfully retrieved %s release\n", rc.Tag)
|
||||||
return release, nil
|
return release, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("release %s not found", rc.Tag)
|
return nil, fmt.Errorf("Release %s not found", rc.Tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rc *releaseClient) newRelease() (*gitea.Release, error) {
|
func (rc *releaseClient) newRelease() (*gitea.Release, error) {
|
||||||
@@ -72,10 +67,10 @@ func (rc *releaseClient) newRelease() (*gitea.Release, error) {
|
|||||||
|
|
||||||
release, _, err := rc.Client.CreateRelease(rc.Owner, rc.Repo, r)
|
release, _, err := rc.Client.CreateRelease(rc.Owner, rc.Repo, r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create release: %s", err)
|
return nil, fmt.Errorf("Failed to create release: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("successfully created %s release\n", rc.Tag)
|
fmt.Printf("Successfully created %s release\n", rc.Tag)
|
||||||
return release, nil
|
return release, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +78,7 @@ func (rc *releaseClient) uploadFiles(releaseID int64, files []string) error {
|
|||||||
attachments, _, err := rc.Client.ListReleaseAttachments(rc.Owner, rc.Repo, releaseID, gitea.ListReleaseAttachmentsOptions{})
|
attachments, _, err := rc.Client.ListReleaseAttachments(rc.Owner, rc.Repo, releaseID, gitea.ListReleaseAttachmentsOptions{})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to fetch existing assets: %s", err)
|
return fmt.Errorf("Failed to fetch existing assets: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var uploadFiles []string
|
var uploadFiles []string
|
||||||
@@ -96,12 +91,12 @@ files:
|
|||||||
case "overwrite":
|
case "overwrite":
|
||||||
// do nothing
|
// do nothing
|
||||||
case "fail":
|
case "fail":
|
||||||
return fmt.Errorf("asset file %s already exists", path.Base(file))
|
return fmt.Errorf("Asset file %s already exists", path.Base(file))
|
||||||
case "skip":
|
case "skip":
|
||||||
fmt.Printf("skipping pre-existing %s artifact\n", attachment.Name)
|
fmt.Printf("Skipping pre-existing %s artifact\n", attachment.Name)
|
||||||
continue files
|
continue files
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("internal error, unkown file_exist value %s", rc.FileExists)
|
return fmt.Errorf("Internal error, unkown file_exist value %s", rc.FileExists)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,24 +108,24 @@ files:
|
|||||||
handle, err := os.Open(file)
|
handle, err := os.Open(file)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to read %s artifact: %s", file, err)
|
return fmt.Errorf("Failed to read %s artifact: %s", file, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, attachment := range attachments {
|
for _, attachment := range attachments {
|
||||||
if attachment.Name == path.Base(file) {
|
if attachment.Name == path.Base(file) {
|
||||||
if _, err := rc.Client.DeleteReleaseAttachment(rc.Owner, rc.Repo, releaseID, attachment.ID); err != nil {
|
if _, err := rc.Client.DeleteReleaseAttachment(rc.Owner, rc.Repo, releaseID, attachment.ID); err != nil {
|
||||||
return fmt.Errorf("failed to delete %s artifact: %s", file, err)
|
return fmt.Errorf("Failed to delete %s artifact: %s", file, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("successfully deleted old %s artifact\n", attachment.Name)
|
fmt.Printf("Successfully deleted old %s artifact\n", attachment.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, _, err = rc.Client.CreateReleaseAttachment(rc.Owner, rc.Repo, releaseID, handle, path.Base(file)); err != nil {
|
if _, _, err = rc.Client.CreateReleaseAttachment(rc.Owner, rc.Repo, releaseID, handle, path.Base(file)); err != nil {
|
||||||
return fmt.Errorf("failed to upload %s artifact: %s", file, err)
|
return fmt.Errorf("Failed to upload %s artifact: %s", file, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("successfully uploaded %s artifact\n", file)
|
fmt.Printf("Successfully uploaded %s artifact\n", file)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"config:base",
|
|
||||||
":automergeMinor",
|
|
||||||
":automergeDigest"
|
|
||||||
],
|
|
||||||
"enabledManagers": [
|
|
||||||
"dockerfile",
|
|
||||||
"gomod"
|
|
||||||
],
|
|
||||||
"dockerfile": {
|
|
||||||
"fileMatch": [
|
|
||||||
"docker/Dockerfile\\.linux\\.(arm|arm64|amd64|multiarch)",
|
|
||||||
"docker/Dockerfile\\.windows\\.(1809|1903|1909|2004)"
|
|
||||||
],
|
|
||||||
"pinDigests": true
|
|
||||||
},
|
|
||||||
"gomod": {
|
|
||||||
"postUpdateOptions": [
|
|
||||||
"gomodTidy"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"labels": [
|
|
||||||
"renovate"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
+11
-25
@@ -1,9 +1,4 @@
|
|||||||
// Copyright (c) 2021, the Drone Plugins project authors.
|
package main
|
||||||
// Please see the AUTHORS file for details. All rights reserved.
|
|
||||||
// Use of this source code is governed by an Apache 2.0 license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
package plugin
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
@@ -14,9 +9,11 @@ import (
|
|||||||
"hash/adler32"
|
"hash/adler32"
|
||||||
"hash/crc32"
|
"hash/crc32"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
"golang.org/x/crypto/blake2b"
|
||||||
|
"golang.org/x/crypto/blake2s"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -27,23 +24,8 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func readStringOrFile(input string) (string, error) {
|
|
||||||
// Check if input is a file path
|
|
||||||
if _, err := os.Stat(input); err != nil && os.IsNotExist(err) {
|
|
||||||
// No file found => use input as result
|
|
||||||
return input, nil
|
|
||||||
} else if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
result, err := ioutil.ReadFile(input)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return string(result), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func checksum(r io.Reader, method string) (string, error) {
|
func checksum(r io.Reader, method string) (string, error) {
|
||||||
b, err := ioutil.ReadAll(r)
|
b, err := io.ReadAll(r)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@@ -62,9 +44,13 @@ func checksum(r io.Reader, method string) (string, error) {
|
|||||||
return strconv.FormatUint(uint64(adler32.Checksum(b)), 10), nil
|
return strconv.FormatUint(uint64(adler32.Checksum(b)), 10), nil
|
||||||
case "crc32":
|
case "crc32":
|
||||||
return strconv.FormatUint(uint64(crc32.ChecksumIEEE(b)), 10), nil
|
return strconv.FormatUint(uint64(crc32.ChecksumIEEE(b)), 10), nil
|
||||||
|
case "blake2b":
|
||||||
|
return fmt.Sprintf("%x", blake2b.Sum256(b)), nil
|
||||||
|
case "blake2s":
|
||||||
|
return fmt.Sprintf("%x", blake2s.Sum256(b)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return "", fmt.Errorf("hashing method %s is not supported", method)
|
return "", fmt.Errorf("Hashing method %s is not supported", method)
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeChecksums(files, methods []string) ([]string, error) {
|
func writeChecksums(files, methods []string) ([]string, error) {
|
||||||
@@ -75,7 +61,7 @@ func writeChecksums(files, methods []string) ([]string, error) {
|
|||||||
handle, err := os.Open(file)
|
handle, err := os.Open(file)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to read %s artifact: %s", file, err)
|
return nil, fmt.Errorf("Failed to read %s artifact: %s", file, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
hash, err := checksum(handle, method)
|
hash, err := checksum(handle, method)
|
||||||
Reference in New Issue
Block a user