83 Commits

Author SHA1 Message Date
862301668b Merge pull request 'chore(deps): update actions/checkout action to v4.3.0' (#51) from renovate/actions into master
All checks were successful
Lint Markdown files / markdown-lint (push) Successful in 4s
Release / push-amd64 (push) Successful in 24s
Release / push-arm64 (push) Successful in 1m10s
Release / push-manifest (push) Successful in 5s
Release / sync-to-hub-docker-io (push) Successful in 1m5s
2025-08-11 14:08:17 +00:00
4aea773895 chore(deps): update actions/checkout action to v4.3.0
All checks were successful
Lint Markdown files / markdown-lint (pull_request) Successful in 14s
2025-08-11 13:14:07 +00:00
e32d01bfa8 Merge pull request 'chore(deps): update docker/login-action action to v3.5.0' (#50) from renovate/actions into master
All checks were successful
Lint Markdown files / markdown-lint (push) Successful in 13s
Release / push-arm64 (push) Successful in 1m59s
Release / push-amd64 (push) Successful in 1m25s
Release / push-manifest (push) Successful in 12s
Release / sync-to-hub-docker-io (push) Successful in 41s
2025-08-04 16:44:28 +00:00
2980d31e14 chore(deps): update docker/login-action action to v3.5.0
All checks were successful
Lint Markdown files / markdown-lint (pull_request) Successful in 13s
2025-08-04 16:08:26 +00:00
ac4d9b833f chore(deps): update docker.io/library/alpine docker tag to v3.22.1
All checks were successful
Lint Markdown files / markdown-lint (pull_request) Successful in 11s
Lint Markdown files / markdown-lint (push) Successful in 13s
Release / push-arm64 (push) Successful in 1m11s
Release / push-amd64 (push) Successful in 1m49s
Release / push-manifest (push) Successful in 11s
Release / sync-to-hub-docker-io (push) Successful in 44s
2025-07-15 22:05:49 +00:00
2c5ccee23a chore(deps): update docker/setup-buildx-action action to v3.11.1
Some checks failed
Lint Markdown files / markdown-lint (pull_request) Successful in 13s
Lint Markdown files / markdown-lint (push) Successful in 11s
Release / push-arm64 (push) Successful in 1m18s
Release / push-amd64 (push) Successful in 44s
Release / push-manifest (push) Successful in 10s
Release / sync-to-hub-docker-io (push) Failing after 27s
2025-06-18 10:09:24 +00:00
fe69c0661f chore(deps): update docker/setup-buildx-action action to v3.11.0
All checks were successful
Lint Markdown files / markdown-lint (pull_request) Successful in 10s
Lint Markdown files / markdown-lint (push) Successful in 12s
Release / push-arm64 (push) Successful in 1m15s
Release / push-amd64 (push) Successful in 1m29s
Release / push-manifest (push) Successful in 11s
Release / sync-to-hub-docker-io (push) Successful in 43s
2025-06-16 13:08:08 +00:00
7b81f73f1b chore(deps): update davidanson/markdownlint-cli2-action action to v20
All checks were successful
Lint Markdown files / markdown-lint (push) Successful in 4s
Release / push-amd64 (push) Successful in 24s
Lint Markdown files / markdown-lint (pull_request) Successful in 4s
Release / push-arm64 (push) Successful in 1m46s
Release / push-manifest (push) Successful in 16s
Release / sync-to-hub-docker-io (push) Successful in 22s
2025-05-30 22:06:55 +00:00
aef5e974aa chore(deps): update docker.io/library/alpine docker tag to v3.22.0
All checks were successful
Lint Markdown files / markdown-lint (pull_request) Successful in 4s
Lint Markdown files / markdown-lint (push) Successful in 6s
Release / push-amd64 (push) Successful in 25s
Release / push-arm64 (push) Successful in 1m47s
Release / push-manifest (push) Successful in 5s
Release / sync-to-hub-docker-io (push) Successful in 1m39s
2025-05-30 19:06:54 +00:00
aa9b2df225 fix(ci): replace drone with gitea actions
All checks were successful
Lint Markdown files / markdown-lint (push) Successful in 4s
Release / push-amd64 (push) Successful in 1m30s
Release / push-arm64 (push) Successful in 1m42s
Release / push-manifest (push) Successful in 5s
Release / sync-to-hub-docker-io (push) Successful in 51s
2025-05-13 18:47:11 +02:00
f5e85cee7e fix(Makefile): get rid of unqualified container images 2025-05-12 22:47:19 +02:00
51d1d93980 style(markdownlint): update configuration 2025-05-09 11:27:46 +02:00
844a54171c docs(README): add hub.docker.io badge 2025-05-08 21:49:31 +02:00
94b296e85b fix(makefile): remove the deletion of the base image via make clean 2025-05-08 18:44:00 +02:00
acc2af5168 fix(makefile): remove unqualified image name 2025-05-08 18:41:32 +02:00
b1fb51d469 chore(ci): use upstream container image registry
All checks were successful
continuous-integration/drone/push Build is passing
2025-04-02 21:31:29 +02:00
942c0e69a1 chore(ci): rollback plugins/docker to 20.18.6
Some checks failed
continuous-integration/drone/push Build is failing
2025-04-02 10:43:33 +02:00
cdd03c5eba chore(ci): use container image mirror
Some checks failed
continuous-integration/drone/push Build is failing
2025-04-02 09:54:12 +02:00
b4ce799f62 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.44.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-04-01 19:22:53 +00:00
2c9f23098c fix(Makefile): make FQIN configurable
All checks were successful
continuous-integration/drone/push Build is passing
2025-04-01 20:45:42 +02:00
63bb82125b chore(renovate): use configuration preset
All checks were successful
continuous-integration/drone/push Build is passing
2025-03-30 20:41:53 +02:00
31033949c8 chore(deps): update docker.io/plugins/docker docker tag to v20.18.8
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-03-26 20:18:09 +00:00
9be221c32a chore(deps): update quay.io/skopeo/stable docker tag to v1.18.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-28 17:18:05 +00:00
e5f115d64c chore(deps): update docker.io/plugins/docker docker tag to v20.18.7
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-18 08:16:15 +00:00
6d76a49433 chore(deps): update docker.io/library/alpine docker tag to v3.21.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-14 20:13:19 +00:00
a83078e6bb chore(deps): update docker.io/library/alpine docker tag to v3.21.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-05 17:23:33 +00:00
5f7aade573 chore(deps): update docker.io/plugins/docker docker tag to v20.18.6
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-25 05:15:06 +00:00
2ba12c3bb3 Merge pull request 'chore(deps): update docker.io/library/alpine docker tag to v3.21.0' (#35) from renovate/docker.io-library-alpine-3.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #35
2024-12-06 08:17:26 +00:00
71bb0eca40 chore(deps): update docker.io/library/alpine docker tag to v3.21.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-12-05 23:14:31 +00:00
572351fc52 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.43.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-03 14:19:34 +00:00
51f9d1dd2e chore(deps): update docker.io/plugins/docker docker tag to v20.18.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-29 11:16:23 +00:00
44cabfca02 chore(deps): update git.cryptic.systems/volker.raschek/git docker tag to v1.4.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 23:18:12 +00:00
9eec475232 chore(deps): update git.cryptic.systems/volker.raschek/git docker tag to v1.3.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-11-21 20:15:56 +00:00
a07437cc98 chore(deps): update quay.io/skopeo/stable docker tag to v1.17.0
Some checks reported errors
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build encountered an error
2024-11-21 17:16:28 +00:00
8927f0af51 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.42.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-14 19:19:00 +00:00
947d678377 fix(renovate): update config
All checks were successful
continuous-integration/drone/push Build is passing
2024-09-28 13:35:01 +02:00
6f725261ff Merge pull request 'chore(deps): update docker.io/library/alpine docker tag to v3.20.3' (#21) from renovate/docker.io-library-alpine-3.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #21
2024-09-22 16:32:53 +00:00
4a67b7dd55 chore(deps): update docker.io/library/alpine docker tag to v3.20.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-07 01:13:41 +00:00
1cb03cd85b chore(deps): update docker.io/plugins/docker docker tag to v20.18.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-03 19:12:48 +00:00
5fb3b990f6 chore(deps): update quay.io/skopeo/stable docker tag to v1.16.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-03 16:12:15 +00:00
a9c5450c23 chore(deps): update docker.io/plugins/docker docker tag to v20.18.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-07-26 12:09:19 +00:00
4acab0b15c chore(deps): update quay.io/skopeo/stable docker tag to v1.15.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-07-16 16:09:58 +00:00
7b005b3fd3 chore(deps): update docker.io/plugins/docker docker tag to v20.18.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-07-15 22:14:03 +00:00
8335dc33de chore(deps): update quay.io/skopeo/stable docker tag to v1.15.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-07-13 19:14:33 +00:00
8238daf5c8 chore(deps): update docker.io/plugins/docker docker tag to v20.18.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-07-13 11:55:23 +00:00
47a919c4ce chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.41.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-27 13:22:18 +00:00
4e57620e6e chore(deps): update docker.io/plugins/docker docker tag to v20.17.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-20 13:12:55 +00:00
df1f74c95c chore(deps): update docker.io/plugins/docker docker tag to v20.17.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-13 10:11:38 +00:00
af20703e78 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.40.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-07 22:26:40 +00:00
cba27052c8 chore(deps): update quay.io/skopeo/stable docker tag to v1.15.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-31 16:09:44 +00:00
50cc76bebf chore(deps): update docker.io/plugins/docker docker tag to v20.17.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-11 08:20:52 +00:00
26ebfdf2a7 chore(deps): update quay.io/skopeo/stable docker tag to v1.14.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-02-18 17:09:09 +00:00
3ffb466310 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.39.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-28 23:11:17 +00:00
6edca6cdc4 chore(deps): update docker.io/library/alpine docker tag to v3.19.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-27 02:06:39 +00:00
b224063b61 fix(renovate): remove automerge options
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-21 14:36:48 +01:00
73ed7b7f29 Merge pull request 'chore(deps): update docker.io/plugins/docker docker tag to v20.17.2' (#11) from renovate/docker.io-plugins-docker-20.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-10 17:23:41 +00:00
7bdd385c82 chore(deps): update docker.io/plugins/docker docker tag to v20.17.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-01-10 17:09:28 +00:00
3942020271 Merge pull request 'chore(deps): update docker.io/library/alpine docker tag to v3.19.0' (#9) from renovate/docker.io-library-alpine-3.x into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #9
2023-12-20 11:14:58 +00:00
0d6f93216e chore(deps): update docker.io/library/alpine docker tag to v3.19.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-09 16:22:21 +01:00
dddaaa2226 chore(deps): update git.cryptic.systems/volker.raschek/markdownlint docker tag to v0.38.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-09 14:38:12 +00:00
dd7dbf0c0a chore(deps): update quay.io/skopeo/stable docker tag to v1.14.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-12-06 17:19:57 +01:00
8ce3dffaf3 chore(deps): update docker.io/library/alpine docker tag to v3.18.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-30 23:09:53 +00:00
5eb189d052 chore(deps): update docker.io/plugins/docker docker tag to v20.17.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-11-15 14:11:06 +00:00
72270dc9e1 chore(deps): update docker.io/plugins/docker docker tag to v20.17.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-26 14:33:04 +00:00
aa2d41f46b Merge pull request 'chore(deps): update docker.io/plugins/docker docker tag to v20.16.0' (#4) from renovate/docker.io-plugins-docker-20.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-25 20:30:34 +00:00
9c342cdc4f chore(deps): update docker.io/plugins/docker docker tag to v20.16.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-25 22:05:19 +02:00
1916138eca fix: unsupport arm-v7 image
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-25 14:13:34 +02:00
f0e125757b chore(deps): update quay.io/skopeo/stable docker tag to v1.13.3
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-03 09:21:01 +00:00
8fe3458257 chore(deps): update git.cryptic.systems/volker.raschek/git docker tag to v1.3.1
Some checks failed
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is failing
2023-10-03 10:06:06 +02:00
ebfa105e26 core(deps): update git.cryptic.systems/volker.raschek/drone-email to 0.1.5
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-02 13:52:46 +02:00
b9cd56f49d fix(ci): use global tagged images
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-01 21:59:04 +02:00
f3c90af2b7 fix: remove ls
All checks were successful
continuous-integration/drone/push Build is passing
2023-10-01 21:16:54 +02:00
213960abc3 fix: normal git commit checkout
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-01 21:10:17 +02:00
e5254617f6 fix: remove symlink
Some checks reported errors
continuous-integration/drone/push Build was killed
2023-10-01 20:52:13 +02:00
570825bcaa fix(ci): pull always
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-01 20:45:41 +02:00
9fae1f4211 fix: use whitespaces instead of tabs
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-01 20:44:02 +02:00
8e901429a3 fix(ci): pull-always
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-01 19:43:27 +02:00
db6bbad75b fix: git clone by refspec
Some checks reported errors
continuous-integration/drone/push Build was killed
2023-10-01 19:39:08 +02:00
2ca1f86ec4 fix(ci): use specific images for different architectures
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-01 19:20:45 +02:00
c33efa3ce9 fix: disable aws integration
Some checks reported errors
continuous-integration/drone/push Build was killed
2023-10-01 19:03:40 +02:00
d320981914 fix(ci): rename drone.yml to .drone.yml
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2023-10-01 18:57:32 +02:00
4d91bb9897 core(deps): update git.cryptic.systems/volker.raschek/markdownlint to 0.37.0 2023-10-01 18:56:07 +02:00
d6adb0e2e3 refac: project 2023-10-01 18:54:37 +02:00
39 changed files with 584 additions and 1264 deletions

View File

@ -1,7 +0,0 @@
.github
.gitignore
.drone.yml
LICENSE
README.md
*/fixtures*
*.go

View File

@ -1,168 +0,0 @@
---
kind: pipeline
type: vm
name: linux-amd64
platform:
os: linux
arch: amd64
pool:
use: ubuntu
steps:
- name: build
image: golang:1.10
commands:
- cd posix
- tar -xf fixtures.tar -C /
- go test -v
- name: publish
image: plugins/docker:18
settings:
dockerfile: docker/Dockerfile.linux.amd64
repo: drone/git
auto_tag: "true"
auto_tag_suffix: linux-amd64
username:
from_secret: docker_username
password:
from_secret: docker_password
when:
event:
- push
- tag
---
kind: pipeline
type: vm
name: linux-arm64
platform:
os: linux
arch: arm64
pool:
use: ubuntu_arm64
steps:
- name: build
image: golang:1.10
commands:
- cd posix
- tar -xf fixtures.tar -C /
- go test -v
- name: publish
image: plugins/docker:18
settings:
dockerfile: docker/Dockerfile.linux.arm64
repo: drone/git
auto_tag: "true"
auto_tag_suffix: linux-arm64
username:
from_secret: docker_username
password:
from_secret: docker_password
when:
event:
- push
- tag
---
kind: pipeline
type: vm
name: windows-1809
platform:
os: windows
arch: amd64
pool:
use: windows
steps:
- name: docker
image: plugins/docker
settings:
dockerfile: docker/Dockerfile.windows.1809
repo: drone/git
username:
from_secret: docker_username
password:
from_secret: docker_password
auto_tag: true
auto_tag_suffix: windows-1809-amd64
daemon_off: true
purge: false
trigger:
event:
- push
---
kind: pipeline
type: vm
name: windows-ltsc2022
platform:
os: windows
arch: amd64
pool:
use: windows-2022
steps:
- name: docker
image: plugins/docker
settings:
dockerfile: docker/Dockerfile.windows.ltsc2022
repo: drone/git
username:
from_secret: docker_username
password:
from_secret: docker_password
auto_tag: true
auto_tag_suffix: windows-ltsc2022-amd64
daemon_off: true
purge: false
trigger:
event:
- push
---
kind: pipeline
type: vm
name: manifest
platform:
os: linux
arch: amd64
pool:
use: ubuntu
steps:
- name: manifest
image: plugins/manifest
settings:
auto_tag: "true"
ignore_missing: "true"
spec: docker/manifest.tmpl
username:
from_secret: docker_username
password:
from_secret: docker_password
trigger:
event:
- push
- tag
depends_on:
- linux-amd64
- linux-arm64
- windows-1809
- windows-ltsc2022

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false
[Makefile]
indent_style = tab

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
Makefile eol=lf

View File

@ -0,0 +1,22 @@
name: 'Lint Markdown files'
on:
pull_request:
types:
- opened
- reopened
- synchronize
push:
branches:
- master
workflow_dispatch: {}
jobs:
markdown-lint:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v4.3.0
- uses: DavidAnson/markdownlint-cli2-action@v20.0.0
with:
globs: '**/*.md'

View File

@ -0,0 +1,99 @@
name: Release
on:
push:
branches:
- master
jobs:
push-arm64:
runs-on: ubuntu-latest-arm64
steps:
- uses: actions/checkout@v4.3.0
- uses: docker/setup-qemu-action@v3.6.0
- uses: docker/setup-buildx-action@v3.11.1
- uses: docker/login-action@v3.5.0
with:
registry: git.cryptic.systems
username: ${{ github.repository_owner }}
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
- name: Build and push image
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
docker buildx build \
--file Dockerfile \
--platform linux/arm64 \
--provenance false \
--push \
--tag git.cryptic.systems/volker.raschek/git:${TAG}-arm64 \
.
push-amd64:
runs-on: ubuntu-latest-amd64
steps:
- uses: actions/checkout@v4.3.0
- uses: docker/setup-qemu-action@v3.6.0
- uses: docker/setup-buildx-action@v3.11.1
- uses: docker/login-action@v3.5.0
with:
registry: git.cryptic.systems
username: ${{ github.repository_owner }}
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
- name: Build and push image
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
docker buildx build \
--file Dockerfile \
--platform linux/amd64 \
--provenance false \
--push \
--tag git.cryptic.systems/volker.raschek/git:${TAG}-amd64 \
.
push-manifest:
runs-on: ubuntu-latest
needs:
- push-arm64
- push-amd64
steps:
- uses: docker/login-action@v3.5.0
with:
registry: git.cryptic.systems
username: ${{ github.repository_owner }}
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
- name: Create and push manifest
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
docker manifest create git.cryptic.systems/volker.raschek/git:${TAG} \
--amend git.cryptic.systems/volker.raschek/git:${TAG}-amd64 \
--amend git.cryptic.systems/volker.raschek/git:${TAG}-arm64
docker manifest push git.cryptic.systems/volker.raschek/git:${TAG}
sync-to-hub-docker-io:
needs:
- push-manifest
runs-on: ubuntu-latest
steps:
- name: Copy images to docker.io
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
apt-get update --yes
apt-get install --yes skopeo
skopeo copy \
--all \
--dest-password ${{ secrets.DOCKER_IO_PASSWORD }} \
--dest-username ${{ secrets.DOCKER_IO_USERNAME }} \
--src-password ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} \
--src-username volker.raschek \
docker://git.cryptic.systems/volker.raschek/git:${TAG} \
docker://docker.io/volkerraschek/git:${TAG}

View File

@ -0,0 +1,22 @@
name: Update Docker Hub Description
on:
push:
branches:
- master
paths:
- README.md
workflow_dispatch: {}
jobs:
update-description-on-hub-docker-io:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v4.3.0
- uses: peter-evans/dockerhub-description@v4.0.2
with:
username: ${{ secrets.DOCKER_IO_USERNAME }}
password: ${{ secrets.DOCKER_IO_PASSWORD }}
repository: volkerraschek/git
readme-filepath: README.md

View File

@ -1,9 +0,0 @@
<!-- PLEASE READ BEFORE DELETING
Bugs or Issues? Due to the high number of false positive issues we receive,
please do not create a GitHub issue until you have discussed and verified
with community support at:
https://discourse.drone.io/
-->

View File

136
.markdownlint.yaml Normal file
View File

@ -0,0 +1,136 @@
# markdownlint YAML configuration
# https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml
# Default state for all rules
default: true
# Path to configuration file to extend
extends: null
# MD003/heading-style/header-style - Heading style
MD003:
# Heading style
style: "atx"
# MD004/ul-style - Unordered list style
MD004:
style: "dash"
# MD007/ul-indent - Unordered list indentation
MD007:
# Spaces for indent
indent: 2
# Whether to indent the first level of the list
start_indented: false
# MD009/no-trailing-spaces - Trailing spaces
MD009:
# Spaces for line break
br_spaces: 2
# Allow spaces for empty lines in list items
list_item_empty_lines: false
# Include unnecessary breaks
strict: false
# MD010/no-hard-tabs - Hard tabs
MD010:
# Include code blocks
code_blocks: true
# MD012/no-multiple-blanks - Multiple consecutive blank lines
MD012:
# Consecutive blank lines
maximum: 1
# MD013/line-length - Line length
MD013:
# Number of characters
line_length: 120
# Number of characters for headings
heading_line_length: 120
# Number of characters for code blocks
code_block_line_length: 120
# Include code blocks
code_blocks: false
# Include tables
tables: false
# Include headings
headings: true
# Strict length checking
strict: false
# Stern length checking
stern: false
# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
MD022:
# Blank lines above heading
lines_above: 1
# Blank lines below heading
lines_below: 1
# MD025/single-title/single-h1 - Multiple top-level headings in the same document
MD025:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD026/no-trailing-punctuation - Trailing punctuation in heading
MD026:
# Punctuation characters
punctuation: ".,;:!。,;:!"
# MD029/ol-prefix - Ordered list item prefix
MD029:
# List style
style: "one_or_ordered"
# MD030/list-marker-space - Spaces after list markers
MD030:
# Spaces for single-line unordered list items
ul_single: 1
# Spaces for single-line ordered list items
ol_single: 1
# Spaces for multi-line unordered list items
ul_multi: 1
# Spaces for multi-line ordered list items
ol_multi: 1
# MD033/no-inline-html - Inline HTML
MD033:
# Allowed elements
allowed_elements: []
# MD035/hr-style - Horizontal rule style
MD035:
# Horizontal rule style
style: "---"
# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
MD036:
# Punctuation characters
punctuation: ".,;:!?。,;:!?"
# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
MD041:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD044/proper-names - Proper names should have the correct capitalization
MD044:
# List of proper names
names: []
# Include code blocks
code_blocks: false
# MD046/code-block-style - Code block style
MD046:
# Block style
style: "fenced"
# MD048/code-fence-style - Code fence style
MD048:
# Code fence syle
style: "backtick"

View File

@ -1,21 +0,0 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
## [1.1.0]
### Added
- Ability to clone tags for promotion events from [@josmo](https://github.com/josme)
- Support for git lfs in base images from [@carlwgeorge](https://github.com/carlwgeorge)
- Support for windows 1803 from [@donny-dont](https://github.com/donny-dont)
- Support for windows 1809 from [@donny-dont](https://github.com/donny-dont)
### Fixed
- Fixed error merging when missing email from [@bradrydzewski](https://github.com/bradrydzewski)
- Fixed empty ref on windows from [@drpebcak](https://github.com/drpebcak)

View File

@ -1,7 +1,16 @@
FROM alpine:3.12 FROM docker.io/library/alpine:3.22.1
RUN apk add --no-cache ca-certificates git git-lfs openssh curl perl aws-cli sudo
ADD posix/* /usr/local/bin/ RUN apk add --no-cache \
bash \
ca-certificates \
curl \
git \
git-lfs \
openssh \
perl \
sudo
ADD rootfs /
# RUN adduser -g Drone -s /bin/sh -D -u 1000 drone # RUN adduser -g Drone -s /bin/sh -D -u 1000 drone
# RUN echo 'drone ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/drone # RUN echo 'drone ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/drone

44
Makefile Normal file
View File

@ -0,0 +1,44 @@
# CONTAINER_RUNTIME
# The CONTAINER_RUNTIME variable will be used to specified the path to a
# container runtime. This is needed to start and run a container image.
CONTAINER_RUNTIME?=$(shell which podman)
# GIT_IMAGE_REGISTRY_NAME
# Defines the name of the new container to be built using several variables.
GIT_IMAGE_REGISTRY_NAME?=git.cryptic.systems
GIT_IMAGE_REGISTRY_USER?=volker.raschek
GIT_IMAGE_NAMESPACE?=${GIT_IMAGE_REGISTRY_USER}
GIT_IMAGE_NAME:=git
GIT_IMAGE_VERSION?=latest
GIT_IMAGE_FULLY_QUALIFIED=${GIT_IMAGE_REGISTRY_NAME}/${GIT_IMAGE_NAMESPACE}/${GIT_IMAGE_NAME}:${GIT_IMAGE_VERSION}
# BUILD CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/build
container-image/build:
${CONTAINER_RUNTIME} build \
--file Dockerfile \
--no-cache \
--pull \
--tag ${GIT_IMAGE_FULLY_QUALIFIED} \
.
# DELETE CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/delete
container-image/delete:
- ${CONTAINER_RUNTIME} image rm ${GIT_IMAGE_FULLY_QUALIFIED}
# PUSH CONTAINER IMAGE
# ==============================================================================
PHONY+=container-image/push
container-image/push:
echo ${GIT_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${GIT_IMAGE_REGISTRY_NAME} --username ${GIT_IMAGE_REGISTRY_USER} --password-stdin
${CONTAINER_RUNTIME} push ${GIT_IMAGE_FULLY_QUALIFIED}
# PHONY
# ==============================================================================
# Declare the contents of the PHONY variable as phony. We keep that information
# in a variable so we can use it in if_changed.
.PHONY: ${PHONY}

View File

@ -1,25 +1,36 @@
# drone-git # git-docker
Drone plugin to clone `git` repositories. [![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/git)](https://hub.docker.com/r/volkerraschek/git)
This is a fork of the official project to clone git repositories from a SCM
control system like github, gitlab, gitea, gogs and so on. The difference
between the origin and this fork is that this project supports ARM and the shell
scripts are tested against shellchecker.
Among other things, the project experiences more extensive support, as the
project receives continuous updates thanks to renovate.
## Build ## Build
Build the Docker image with the following commands: The container image can be build with via `make` and requires `docker` or
`podman`.
``` ```bash
docker build --rm -f docker/Dockerfile.linux.amd64 -t drone/git . make container-image/build CONTAINER_RUNTIME=docker # or
make container-image/build CONTAINER_RUNTIME=podman
``` ```
## Usage ## Usage
Clone a commit: Clone a commit:
``` ```bash
docker run --rm \ podman run \
-e DRONE_WORKSPACE=/drone \ --rm \
-e DRONE_REMOTE_URL=https://github.com/drone/envsubst.git \ --env DRONE_BUILD_EVENT=push \
-e DRONE_BUILD_EVENT=push \ --env DRONE_COMMIT_BRANCH=master \
-e DRONE_COMMIT_SHA=15e3f9b7e16332eee3bbdff9ef31f95d23c5da2c \ --env DRONE_REMOTE_URL=https://git.cryptic.systems/volker.raschek/git-docker.git \
-e DRONE_COMMIT_BRANCH=master \ --env DRONE_WORKSPACE=/workspace \
drone/git --volume /tmp/workspace:/workspace \
volker.raschek/git:latest
``` ```

View File

@ -1,11 +0,0 @@
FROM arm64v8/alpine:3.12
RUN apk add --no-cache ca-certificates git git-lfs openssh curl perl aws-cli sudo
ADD posix/* /usr/local/bin/
# RUN adduser -g Drone -s /bin/sh -D -u 1000 drone
# RUN echo 'drone ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/drone
# USER drone:drone
# RUN chmod -R 777 /home/drone
ENTRYPOINT ["/usr/local/bin/clone"]

View File

@ -1,20 +0,0 @@
# escape=`
FROM mcr.microsoft.com/windows/servercore:1809 AS git
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; `
Invoke-WebRequest -UseBasicParsing https://github.com/git-for-windows/git/releases/download/v2.21.0.windows.1/MinGit-2.21.0-64-bit.zip -OutFile git.zip; `
Expand-Archive git.zip -DestinationPath C:\git;
FROM mcr.microsoft.com/powershell:nanoserver-1809
COPY --from=git /git /git
ADD windows/* /bin/
# https://github.com/PowerShell/PowerShell/issues/6211#issuecomment-367477137
USER ContainerAdministrator
RUN setx /M PATH "%PATH%;C:\Program Files\PowerShell"
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
CMD [ "pwsh", "C:\\bin\\clone.ps1" ]

View File

@ -1,20 +0,0 @@
# escape=`
FROM mcr.microsoft.com/windows/servercore:ltsc2022 AS git
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; `
Invoke-WebRequest -UseBasicParsing https://github.com/git-for-windows/git/releases/download/v2.21.0.windows.1/MinGit-2.21.0-64-bit.zip -OutFile git.zip; `
Expand-Archive git.zip -DestinationPath C:\git;
FROM mcr.microsoft.com/powershell:nanoserver-ltsc2022
COPY --from=git /git /git
ADD windows/* /bin/
# https://github.com/PowerShell/PowerShell/issues/6211#issuecomment-367477137
USER ContainerAdministrator
RUN setx /M PATH "%PATH%;C:\Program Files\PowerShell"
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
CMD [ "pwsh", "C:\\bin\\clone.ps1" ]

View File

@ -1,31 +0,0 @@
image: drone/git:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
{{/if}}
manifests:
-
image: drone/git:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
platform:
architecture: amd64
os: linux
-
image: drone/git:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
platform:
variant: v8
architecture: arm64
os: linux
-
image: drone/git:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809-amd64
platform:
architecture: amd64
os: windows
version: 1809
-
image: drone/git:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-ltsc2022-amd64
platform:
architecture: amd64
os: windows
version: ltsc2022

View File

@ -1,117 +0,0 @@
#!/bin/sh
if [[ -n "${DRONE_WORKSPACE}" ]]; then
# ensure the unprivileged drone user can write
# to the workspace. This is required because
# the workspace is a docker volume and is owned
# by root.
# sudo mkdir -p ${DRONE_WORKSPACE}
# sudo chown drone:drone ${DRONE_WORKSPACE}
# ensure the workspace is the current working
# directory. This should already be the case,
# but we cd just to be safe.
cd ${DRONE_WORKSPACE}
fi
# force the home directory path.
# if [ "$HOME" != "/home/drone" ]; then
# echo "[DEBUG] setting default home directory"
# export HOME=/home/drone
# fi
# if the netrc enviornment variables exist, write
# the netrc file.
if [[ ! -z "${DRONE_NETRC_MACHINE}" ]]; then
cat <<EOF > ${HOME}/.netrc
machine ${DRONE_NETRC_MACHINE}
login ${DRONE_NETRC_USERNAME}
password ${DRONE_NETRC_PASSWORD}
EOF
fi
# if the ssh_key environment variable exists, write
# the ssh key and add the netrc machine to the
# known hosts file.
if [[ ! -z "${DRONE_SSH_KEY}" ]]; then
mkdir ${HOME}/.ssh
echo -n "$DRONE_SSH_KEY" > ${HOME}/.ssh/id_rsa
chmod 600 ${HOME}/.ssh/id_rsa
touch ${HOME}/.ssh/known_hosts
chmod 600 ${HOME}/.ssh/known_hosts
ssh-keyscan -H ${DRONE_NETRC_MACHINE} > /etc/ssh/ssh_known_hosts 2> /dev/null
fi
# AWS codecommit support using AWS access key & secret key
# Refer: https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html
if [[ ! -z "$DRONE_AWS_ACCESS_KEY" ]]; then
aws configure set aws_access_key_id $DRONE_AWS_ACCESS_KEY
aws configure set aws_secret_access_key $DRONE_AWS_SECRET_KEY
aws configure set default.region $DRONE_AWS_REGION
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
fi
# configure git global behavior and parameters via the
# following environment variables:
if [[ -z "${DRONE_COMMIT_AUTHOR_NAME}" ]]; then
export DRONE_COMMIT_AUTHOR_NAME=drone
fi
if [[ -z "${DRONE_COMMIT_AUTHOR_EMAIL}" ]]; then
export DRONE_COMMIT_AUTHOR_EMAIL=drone@localhost
fi
export GIT_AUTHOR_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_AUTHOR_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
export GIT_COMMITTER_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_COMMITTER_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
# invoke the sub-script based on the drone event type.
# TODO we should ultimately look at the ref, since
# we need something compatible with deployment events.
CLONE_TYPE=$DRONE_BUILD_EVENT
case $DRONE_COMMIT_REF in
refs/tags/* ) CLONE_TYPE=tag ;;
refs/pull/* ) CLONE_TYPE=pull_request ;;
refs/pull-request/* ) CLONE_TYPE=pull_request ;;
refs/merge-requests/* ) CLONE_TYPE=pull_request ;;
esac
git_clone_retry(){
retries="${PLUGIN_RETRIES:-0}"
if [ -n "${retries##*[0-9]*}" ] || [ "${retries}" -lt 0 ]; then
echo "PLUGIN_RETRIES defined but is not a number: ${retries}" >&2
exit 1
fi
echo "Cloning with ${retries} retries"
n=0
until [ "$n" -gt "${retries}" ]; do
$1 && return
n=$((n+1))
done
exit 1
}
case $CLONE_TYPE in
pull_request)
git_clone_retry clone-pull-request
;;
tag)
git_clone_retry clone-tag
;;
*)
git_clone_retry clone-commit
;;
esac

View File

@ -1,41 +0,0 @@
#!/bin/sh
FLAGS=""
if [[ ! -z "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin ${DRONE_REMOTE_URL}
fi
# the branch may be empty for certain event types,
# such as github deployment events. If the branch
# is empty we checkout the sha directly. Note that
# we intentially omit depth flags to avoid failed
# clones due to lack of history.
if [[ -z "${DRONE_COMMIT_BRANCH}" ]]; then
set -e
set -x
git fetch origin
git checkout -qf ${DRONE_COMMIT_SHA}
exit 0
fi
# the commit sha may be empty for builds that are
# manually triggered in Harness CI Enterprise. If
# the commit is empty we clone the branch.
if [[ -z "${DRONE_COMMIT_SHA}" ]]; then
set -e
set -x
git fetch ${FLAGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:
git checkout -b ${DRONE_COMMIT_BRANCH} origin/${DRONE_COMMIT_BRANCH}
exit 0
fi
set -e
set -x
git fetch ${FLAGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:
git checkout ${DRONE_COMMIT_SHA} -b ${DRONE_COMMIT_BRANCH}

View File

@ -1,20 +0,0 @@
#!/bin/sh
FLAGS=""
if [[ ! -z "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin ${DRONE_REMOTE_URL}
fi
set -e
set -x
git fetch ${FLAGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:
git checkout ${DRONE_COMMIT_BRANCH}
git fetch origin ${DRONE_COMMIT_REF}:
git merge ${DRONE_COMMIT_SHA}

View File

@ -1,17 +0,0 @@
#!/bin/sh
FLAGS=""
if [[ ! -z "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin ${DRONE_REMOTE_URL}
fi
set -e
set -x
git fetch ${FLAGS} origin +refs/tags/${DRONE_TAG}:
git checkout -qf FETCH_HEAD

View File

@ -1,40 +0,0 @@
#!/bin/sh
# This script creates a git repository and seeds with
# commit history. Used by unit tests.
set -e
set -x
rm -rf /tmp/remote/greeting
mkdir -p /tmp/remote/greeting
pushd /tmp/remote/greeting
git init
echo "hi world" > hello.txt
git add hello.txt
git commit -m "say hi"
git tag v1.0.0
echo "hello world" > hello.txt
git add hello.txt
git commit -m "say hello"
git tag v1.1.0
git checkout -b fr
echo "salut monde" > hello.txt
git add hello.txt
git commit -m "say hello in french"
git tag v2.0.0
echo "bonjour monde" > hello.txt
git add hello.txt
git commit -m "say hello en francais"
git tag v2.1.0
git checkout master
popd
tar -cvf fixtures.tar /tmp/remote/greeting

Binary file not shown.

View File

@ -1,3 +0,0 @@
package posix
//go:generate go run ../scripts/includetext.go --input=clone --input=clone-commit --input=clone-pull-request --input=clone-tag --package=posix --output=posix_gen.go

View File

@ -1,138 +0,0 @@
package posix
// DO NOT EDIT. This file is automatically generated.
// Contents of clone
const Clone = `#!/bin/sh
if [[ ! -z "${DRONE_WORKSPACE}" ]]; then
cd ${DRONE_WORKSPACE}
fi
# if the netrc enviornment variables exist, write
# the netrc file.
if [[ ! -z "${DRONE_NETRC_MACHINE}" ]]; then
cat <<EOF > /root/.netrc
machine ${DRONE_NETRC_MACHINE}
login ${DRONE_NETRC_USERNAME}
password ${DRONE_NETRC_PASSWORD}
EOF
fi
# if the ssh_key environment variable exists, write
# the ssh key and add the netrc machine to the
# known hosts file.
if [[ ! -z "${SSH_KEY}" ]]; then
mkdir /root/.ssh
echo -n "$SSH_KEY" > /root/.ssh/id_rsa
chmod 600 /root/.ssh/id_rsa
touch /root/.ssh/known_hosts
chmod 600 /root/.ssh/known_hosts
ssh-keyscan -H ${DRONE_NETRC_MACHINE} > /etc/ssh/ssh_known_hosts 2> /dev/null
fi
# configure git global behavior and parameters via the
# following environment variables:
if [[ -z "${DRONE_COMMIT_AUTHOR_NAME}" ]]; then
export DRONE_COMMIT_AUTHOR_NAME=drone
fi
if [[ -z "${DRONE_COMMIT_AUTHOR_EMAIL}" ]]; then
export DRONE_COMMIT_AUTHOR_EMAIL=drone@localhost
fi
export GIT_AUTHOR_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_AUTHOR_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
export GIT_COMMITTER_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_COMMITTER_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
# invoke the sub-script based on the drone event type.
# TODO we should ultimately look at the ref, since
# we need something compatible with deployment events.
CLONE_TYPE=$DRONE_BUILD_EVENT
case $DRONE_COMMIT_REF in
refs/tags/* ) CLONE_TYPE=tag ;;
esac
case $CLONE_TYPE in
pull_request)
clone-pull-request
;;
tag)
clone-tag
;;
*)
clone-commit
;;
esac
`
// Contents of clone-commit
const CloneCommit = `#!/bin/sh
FLAGS=""
if [[ ! -z "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin ${DRONE_REMOTE_URL}
fi
set -e
set -x
git fetch ${FLAGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:
git checkout ${DRONE_COMMIT_SHA} -b ${DRONE_COMMIT_BRANCH}
`
// Contents of clone-pull-request
const ClonePullRequest = `#!/bin/sh
FLAGS=""
if [[ ! -z "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin ${DRONE_REMOTE_URL}
fi
set -e
set -x
git fetch ${FLAGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:
git checkout ${DRONE_COMMIT_BRANCH}
git fetch origin ${DRONE_COMMIT_REF}:
git merge ${DRONE_COMMIT_SHA}
`
// Contents of clone-tag
const CloneTag = `#!/bin/sh
FLAGS=""
if [[ ! -z "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin ${DRONE_REMOTE_URL}
fi
set -e
set -x
git fetch ${FLAGS} origin +refs/tags/${DRONE_TAG}:
git checkout -qf FETCH_HEAD
`

View File

@ -1,259 +0,0 @@
package posix
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
"strings"
"testing"
)
func TestCommits(t *testing.T) {
remote := "/tmp/remote/greeting"
base, err := ioutil.TempDir("", "test")
if err != nil {
t.Error(err)
return
}
defer os.Remove(base)
for i, test := range tests {
local := filepath.Join(base, fmt.Sprint(i))
err = os.MkdirAll(local, 0777)
if err != nil {
t.Error(err)
return
}
bin, err := filepath.Abs("clone-commit")
if err != nil {
t.Error(err)
return
}
cmd := exec.Command(bin)
cmd.Dir = local
cmd.Env = []string{
fmt.Sprintf("DRONE_COMMIT_BRANCH=%s", test.branch),
fmt.Sprintf("DRONE_COMMIT_SHA=%s", test.commit),
fmt.Sprintf("DRONE_WORKSPACE=%s", local),
fmt.Sprintf("DRONE_REMOTE_URL=%s", remote),
}
out, err := cmd.CombinedOutput()
if err != nil {
t.Error(err)
t.Log(string(out))
return
}
commit, err := getCommit(local)
if err != nil {
t.Error(err)
return
}
branch, err := getBranch(local)
if err != nil {
t.Error(err)
return
}
if want, got := test.commit, commit; got != want {
t.Errorf("Want commit %s, got %s", want, got)
}
if want, got := test.branch, branch; got != want {
t.Errorf("Want branch %s, got %s", want, got)
}
file := filepath.Join(local, test.file)
out, err = ioutil.ReadFile(file)
if err != nil {
t.Error(err)
return
}
if want, got := test.text, string(out); want != got {
t.Errorf("Want file content %q, got %q", want, got)
}
}
}
func TestTags(t *testing.T) {
remote := "/tmp/remote/greeting"
base, err := ioutil.TempDir("", "test")
if err != nil {
t.Error(err)
return
}
defer os.Remove(base)
for i, test := range tests {
local := filepath.Join(base, fmt.Sprint(i))
err = os.MkdirAll(local, 0777)
if err != nil {
t.Error(err)
return
}
bin, err := filepath.Abs("clone-tag")
if err != nil {
t.Error(err)
return
}
cmd := exec.Command(bin)
cmd.Dir = local
cmd.Env = []string{
fmt.Sprintf("DRONE_TAG=%s", test.tag),
fmt.Sprintf("DRONE_COMMIT_SHA=%s", test.commit),
fmt.Sprintf("DRONE_WORKSPACE=%s", local),
fmt.Sprintf("DRONE_REMOTE_URL=%s", remote),
}
out, err := cmd.CombinedOutput()
if err != nil {
t.Error(err)
t.Log(string(out))
return
}
commit, err := getCommit(local)
if err != nil {
t.Error(err)
return
}
if want, got := test.commit, commit; got != want {
t.Errorf("Want commit %s, got %s", want, got)
}
file := filepath.Join(local, test.file)
out, err = ioutil.ReadFile(file)
if err != nil {
t.Error(err)
return
}
if want, got := test.text, string(out); want != got {
t.Errorf("Want file content %q, got %q", want, got)
}
}
}
func TestPullRequest(t *testing.T) {
remote := "https://github.com/octocat/Spoon-Knife.git"
local, err := ioutil.TempDir("", "test")
if err != nil {
t.Error(err)
return
}
defer os.Remove(local)
bin, err := filepath.Abs("clone-pull-request")
if err != nil {
t.Error(err)
return
}
cmd := exec.Command(bin)
cmd.Dir = local
cmd.Env = []string{
fmt.Sprintf("DRONE_COMMIT_REF=%s", "refs/pull/14596/head"),
fmt.Sprintf("DRONE_COMMIT_BRANCH=%s", "main"),
fmt.Sprintf("DRONE_COMMIT_SHA=%s", "26923a8f37933ccc23943de0d4ebd53908268582"),
fmt.Sprintf("DRONE_WORKSPACE=%s", local),
fmt.Sprintf("DRONE_REMOTE_URL=%s", remote),
}
out, err := cmd.CombinedOutput()
if err != nil {
t.Error(err)
t.Log(string(out))
return
}
commit, err := getCommit(local)
if err != nil {
t.Error(err)
return
}
branch, err := getBranch(local)
if err != nil {
t.Error(err)
return
}
if want, got := "26923a8f37933ccc23943de0d4ebd53908268582", commit; got != want {
t.Errorf("Want commit %s, got %s", want, got)
}
if want, got := "main", branch; got != want {
t.Errorf("Want branch %s, got %s", want, got)
}
file := filepath.Join(local, "directory/file.txt")
out, err = ioutil.ReadFile(file)
if err != nil {
t.Error(err)
return
}
}
func getBranch(path string) (string, error) {
cmd := exec.Command("git", "rev-parse", "--abbrev-ref", "HEAD")
cmd.Dir = path
out, err := cmd.CombinedOutput()
return strings.TrimSpace(string(out)), err
}
func getCommit(path string) (string, error) {
cmd := exec.Command("git", "rev-parse", "HEAD")
cmd.Dir = path
out, err := cmd.CombinedOutput()
return strings.TrimSpace(string(out)), err
}
var tests = []struct {
branch string
commit string
tag string
file string
text string
}{
{
commit: "9cd29dca0a98f76df94d66493ee54788a18190a0",
branch: "master",
tag: "v1.0.0",
file: "hello.txt",
text: "hi world\n",
},
{
commit: "bbdf5d4028a6066431f59fcd8d83afff610a55ae",
branch: "master",
tag: "v1.1.0",
file: "hello.txt",
text: "hello world\n",
},
{
commit: "553af1ca53c9ad54b096d7ff1416f6c4d1e5049f",
branch: "fr",
tag: "v2.0.0",
file: "hello.txt",
text: "salut monde\n",
},
{
commit: "94b4a1710d1581b8b00c5f7b077026eae3c07646",
branch: "fr",
tag: "v2.1.0",
file: "hello.txt",
text: "bonjour monde\n",
},
}

9
renovate.json Normal file
View File

@ -0,0 +1,9 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>volker.raschek/renovate-config:default#master",
"local>volker.raschek/renovate-config:container#master",
"local>volker.raschek/renovate-config:actions#master",
"local>volker.raschek/renovate-config:regexp#master"
]
}

124
rootfs/usr/local/bin/clone Executable file
View File

@ -0,0 +1,124 @@
#!/bin/bash
if [[ -n "${DRONE_WORKSPACE}" ]]; then
# ensure the unprivileged drone user can write
# to the workspace. This is required because
# the workspace is a docker volume and is owned
# by root.
# sudo mkdir -p ${DRONE_WORKSPACE}
# sudo chown drone:drone ${DRONE_WORKSPACE}
# ensure the workspace is the current working
# directory. This should already be the case,
# but we cd just to be safe.
cd "${DRONE_WORKSPACE}" || exit 1
fi
# force the home directory path.
# if [ "$HOME" != "/home/drone" ]; then
# echo "[DEBUG] setting default home directory"
# export HOME=/home/drone
# fi
# if the netrc enviornment variables exist, write
# the netrc file.
if [[ -n "${DRONE_NETRC_MACHINE}" ]]; then
cat <<EOF > "${HOME}/.netrc"
machine ${DRONE_NETRC_MACHINE}
login ${DRONE_NETRC_USERNAME}
password ${DRONE_NETRC_PASSWORD}
EOF
fi
# if the ssh_key environment variable exists, write
# the ssh key and add the netrc machine to the
# known hosts file.
if [[ -n "${DRONE_SSH_KEY}" ]]; then
mkdir "${HOME}/.ssh"
echo -n "${DRONE_SSH_KEY}" > "${HOME}/.ssh/id_rsa"
chmod 600 "${HOME}/.ssh/id_rsa"
touch "${HOME}/.ssh/known_hosts"
chmod 600 "${HOME}/.ssh/known_hosts"
ssh-keyscan -H "${DRONE_NETRC_MACHINE}" > /etc/ssh/ssh_known_hosts 2> /dev/null
fi
# # AWS codecommit support using AWS access key & secret key
# # Refer: https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html
# if [[ -n "${DRONE_AWS_ACCESS_KEY}" ]]; then
# aws configure set aws_access_key_id "${DRONE_AWS_ACCESS_KEY}"
# aws configure set aws_secret_access_key "${DRONE_AWS_SECRET_KEY}"
# aws configure set default.region "${DRONE_AWS_REGION}"
# git config --global credential.helper '!aws codecommit credential-helper $@'
# git config --global credential.UseHttpPath true
# fi
# configure git global behavior and parameters via the
# following environment variables:
if [[ -z "${DRONE_COMMIT_AUTHOR_NAME}" ]]; then
export DRONE_COMMIT_AUTHOR_NAME=drone
fi
if [[ -z "${DRONE_COMMIT_AUTHOR_EMAIL}" ]]; then
export DRONE_COMMIT_AUTHOR_EMAIL=drone@localhost
fi
export GIT_AUTHOR_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_AUTHOR_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
export GIT_COMMITTER_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_COMMITTER_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
# invoke the sub-script based on the drone event type.
# TODO we should ultimately look at the ref, since
# we need something compatible with deployment events.
CLONE_TYPE=${DRONE_BUILD_EVENT}
case ${DRONE_COMMIT_REF} in
refs/tags/*)
CLONE_TYPE=tag
;;
refs/pull/*)
CLONE_TYPE=pull_request
;;
refs/pull-request/*)
CLONE_TYPE=pull_request
;;
refs/merge-requests/*)
CLONE_TYPE=pull_request
;;
esac
git_clone_retry(){
retries="${PLUGIN_RETRIES:-0}"
if [ -n "${retries##*[0-9]*}" ] || [ "${retries}" -lt 0 ]; then
echo "PLUGIN_RETRIES defined but is not a number: ${retries}" >&2
exit 1
fi
echo "Cloning with ${retries} retries"
n=0
until [ "$n" -gt "${retries}" ]; do
$1 && return
n=$((n+1))
done
exit 1
}
case ${CLONE_TYPE} in
pull_request)
git_clone_retry clone-pull-request
;;
tag)
git_clone_retry clone-tag
;;
*)
git_clone_retry clone-commit
;;
esac

View File

@ -0,0 +1,44 @@
#!/bin/bash
set -e
GIT_FETCH_ARGS=""
GIT_CHECKOUT_ARGS=""
if [[ -n "${PLUGIN_DEPTH}" ]]; then
GIT_FETCH_ARGS="${GIT_FETCH_ARGS} --depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin "${DRONE_REMOTE_URL}"
fi
# the branch may be empty for certain event types,
# such as github deployment events. If the branch
# is empty we checkout the sha directly. Note that
# we intentially omit depth flags to avoid failed
# clones due to lack of history.
if [[ -z "${DRONE_COMMIT_BRANCH}" ]] && [[ -n "${DRONE_COMMIT_SHA}" ]]; then
GIT_CHECKOUT_ARGS="${GIT_CHECKOUT_ARGS} --quiet --force ${DRONE_COMMIT_SHA}"
GIT_FETCH_ARGS="${GIT_FETCH_ARGS} origin"
fi
# the commit sha may be empty for builds that are
# manually triggered in Harness CI Enterprise. If
# the commit is empty we clone the branch.
if [[ -n "${DRONE_COMMIT_BRANCH}" ]] && [[ -z "${DRONE_COMMIT_SHA}" ]]; then
GIT_CHECKOUT_ARGS="${GIT_CHECKOUT_ARGS} -b ${DRONE_COMMIT_BRANCH} refs/remotes/origin/${DRONE_COMMIT_BRANCH}"
GIT_FETCH_ARGS="${GIT_FETCH_ARGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:refs/remotes/origin/${DRONE_COMMIT_BRANCH}"
fi
# if the commit sha and branch name not empty, fetch the branch even if a
# fast-forward is not possible. Checkout the specified commit sha which must be
# part of the branch.
if [[ -n "${DRONE_COMMIT_BRANCH}" ]] && [[ -n "${DRONE_COMMIT_SHA}" ]]; then
GIT_CHECKOUT_ARGS="${GIT_CHECKOUT_ARGS} ${DRONE_COMMIT_SHA} -b refs/remotes/origin/${DRONE_COMMIT_BRANCH}"
GIT_FETCH_ARGS="${GIT_FETCH_ARGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:refs/remotes/origin/${DRONE_COMMIT_BRANCH}"
fi
git fetch ${GIT_FETCH_ARGS}
git checkout ${GIT_CHECKOUT_ARGS}

View File

@ -0,0 +1,19 @@
#!/bin/bash
set -e
FLAGS=""
if [[ -n "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin "${DRONE_REMOTE_URL}"
fi
git fetch ${FLAGS} origin "+refs/heads/${DRONE_COMMIT_BRANCH}:"
git checkout "${DRONE_COMMIT_BRANCH}"
git fetch origin "${DRONE_COMMIT_REF}:"
git merge "${DRONE_COMMIT_SHA}"

16
rootfs/usr/local/bin/clone-tag Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
set -e
FLAGS=""
if [[ -n "${PLUGIN_DEPTH}" ]]; then
FLAGS="--depth=${PLUGIN_DEPTH}"
fi
if [ ! -d .git ]; then
git init
git remote add origin "${DRONE_REMOTE_URL}"
fi
git fetch ${FLAGS} origin "+refs/tags/${DRONE_TAG}:"
git checkout --quiet --force FETCH_HEAD

View File

@ -1,87 +0,0 @@
// +build ignore
package main
import (
"bytes"
"flag"
"io/ioutil"
"log"
"path/filepath"
"strings"
"text/template"
)
var (
input stringSlice
output string
name string
)
func main() {
flag.Var(&input, "input", "input files")
flag.StringVar(&output, "output", "", "output file")
flag.StringVar(&name, "package", "", "package name")
flag.Parse()
var files []File
for _, file := range input {
out, err := ioutil.ReadFile(file)
if err != nil {
log.Fatalln(err)
}
files = append(files, File{
Name: file,
Slug: slugify(file),
Data: string(out),
})
}
data := map[string]interface{}{
"Files": files,
"Package": name,
}
buf := new(bytes.Buffer)
err := tmpl.Execute(buf, data)
if err != nil {
log.Fatalln(err)
}
ioutil.WriteFile(output, buf.Bytes(), 0644)
}
func slugify(s string) string {
ext := filepath.Ext(s)
s = strings.TrimSuffix(s, ext)
s = strings.Title(s)
s = strings.ReplaceAll(s, "-", "")
s = strings.ReplaceAll(s, "_", "")
return s
}
type stringSlice []string
func (s *stringSlice) String() string {
return strings.Join(*s, ",")
}
func (s *stringSlice) Set(value string) error {
*s = append(*s, value)
return nil
}
type File struct {
Name string
Data string
Slug string
}
var tmpl = template.Must(template.New("_").Parse(`package {{ .Package }}
// DO NOT EDIT. This file is automatically generated.
{{ range .Files -}}
// Contents of {{ .Name }}
const {{ .Slug }} = ` + "`{{ .Data }}`" + `
{{ end -}}`))

View File

@ -1,17 +0,0 @@
Set-Variable -Name "FLAGS" -Value ""
if ($Env:PLUGIN_DEPTH) {
Set-Variable -Name "FLAGS" -Value "--depth=$Env:PLUGIN_DEPTH"
}
if (!(Test-Path .git)) {
Write-Host 'git init';
git init
Write-Host "git remote add origin $Env:DRONE_REMOTE_URL"
git remote add origin $Env:DRONE_REMOTE_URL
}
Write-Host "git fetch $FLAGS origin +refs/heads/${Env:DRONE_COMMIT_BRANCH}:";
git fetch $FLAGS origin "+refs/heads/${Env:DRONE_COMMIT_BRANCH}:";
Write-Host "git checkout $Env:DRONE_COMMIT_SHA -f $Env:DRONE_COMMIT_BRANCH";
git checkout $Env:DRONE_COMMIT_SHA -b $Env:DRONE_COMMIT_BRANCH;

View File

@ -1,16 +0,0 @@
Set-Variable -Name "FLAGS" -Value ""
if ($Env:PLUGIN_DEPTH) {
Set-Variable -Name "FLAGS" -Value "--depth=$Env:PLUGIN_DEPTH"
}
if (!(Test-Path .git)) {
git init
git remote add origin $Env:DRONE_REMOTE_URL
}
git fetch $FLAGS origin "+refs/heads/${Env:DRONE_COMMIT_BRANCH}:"
git checkout $Env:DRONE_COMMIT_BRANCH
git fetch origin "${Env:DRONE_COMMIT_REF}:"
git merge $Env:DRONE_COMMIT_SHA

View File

@ -1,13 +0,0 @@
Set-Variable -Name "FLAGS" -Value ""
if ($Env:PLUGIN_DEPTH) {
Set-Variable -Name "FLAGS" -Value "--depth=$Env:PLUGIN_DEPTH"
}
if (!(Test-Path .git)) {
git init
git remote add origin $Env:DRONE_REMOTE_URL
}
git fetch $FLAGS origin "+refs/tags/${Env:DRONE_TAG}:"
git checkout -qf FETCH_HEAD

View File

@ -1,64 +0,0 @@
$ErrorActionPreference = 'Stop';
# HACK: no clue how to set the PATH inside the Dockerfile,
# so am setting it here instead. This is not idea.
$Env:PATH += ';C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin'
# if the workspace is set we should make sure
# it is the current working directory.
if ($Env:DRONE_WORKSPACE) {
cd $Env:DRONE_WORKSPACE
}
# if the netrc enviornment variables exist, write
# the netrc file.
if ($Env:DRONE_NETRC_MACHINE) {
@"
machine $Env:DRONE_NETRC_MACHINE
login $Env:DRONE_NETRC_USERNAME
password $Env:DRONE_NETRC_PASSWORD
"@ > (Join-Path $Env:USERPROFILE '_netrc');
}
# configure git global behavior and parameters via the
# following environment variables:
if ($Env:PLUGIN_SKIP_VERIFY) {
$Env:GIT_SSL_NO_VERIFY = "true"
}
if ($Env:DRONE_COMMIT_AUTHOR_NAME -eq '' -or $Env:DRONE_COMMIT_AUTHOR_NAME -eq $null) {
$Env:GIT_AUTHOR_NAME = "drone"
} else {
$Env:GIT_AUTHOR_NAME = $Env:DRONE_COMMIT_AUTHOR_NAME
}
if ($Env:DRONE_COMMIT_AUTHOR_EMAIL -eq '' -or $Env:DRONE_COMMIT_AUTHOR_EMAIL -eq $null) {
$Env:GIT_AUTHOR_EMAIL = 'drone@localhost'
} else {
$Env:GIT_AUTHOR_EMAIL = $Env:DRONE_COMMIT_AUTHOR_EMAIL
}
$Env:GIT_COMMITTER_NAME = $Env:GIT_AUTHOR_NAME
$Env:GIT_COMMITTER_EMAIL = $Env:GIT_AUTHOR_EMAIL
# invoke the sub-script based on the drone event type.
# TODO we should ultimately look at the ref, since
# we need something compatible with deployment events.
switch ($Env:DRONE_BUILD_EVENT) {
"pull_request" {
Invoke-Expression "${PSScriptRoot}\clone-pull-request.ps1"
break
}
"tag" {
Invoke-Expression "${PSScriptRoot}\clone-tag.ps1"
break
}
default {
Invoke-Expression "${PSScriptRoot}\clone-commit.ps1"
break
}
}

View File

@ -1,3 +0,0 @@
package windows
//go:generate go run ../scripts/includetext.go --input=clone.ps1 --input=clone-commit.ps1 --input=clone-pull-request.ps1 --input=clone-tag.ps1 --package=windows --output=windows_gen.go

View File

@ -1,126 +0,0 @@
package windows
// DO NOT EDIT. This file is automatically generated.
// Contents of clone.ps1
const Clone = `$ErrorActionPreference = 'Stop';
# HACK: no clue how to set the PATH inside the Dockerfile,
# so am setting it here instead. This is not idea.
$Env:PATH += ';C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin'
# if the workspace is set we should make sure
# it is the current working directory.
if ($Env:DRONE_WORKSPACE) {
cd $Env:DRONE_WORKSPACE
}
# if the netrc enviornment variables exist, write
# the netrc file.
if ($Env:DRONE_NETRC_MACHINE) {
@"
machine $Env:DRONE_NETRC_MACHINE
login $Env:DRONE_NETRC_USERNAME
password $Env:DRONE_NETRC_PASSWORD
"@ > (Join-Path $Env:USERPROFILE '_netrc');
}
# configure git global behavior and parameters via the
# following environment variables:
if ($Env:PLUGIN_SKIP_VERIFY) {
$Env:GIT_SSL_NO_VERIFY = "true"
}
if ($Env:DRONE_COMMIT_AUTHOR_NAME -eq '' -or $Env:DRONE_COMMIT_AUTHOR_NAME -eq $null) {
$Env:GIT_AUTHOR_NAME = "drone"
} else {
$Env:GIT_AUTHOR_NAME = $Env:DRONE_COMMIT_AUTHOR_NAME
}
if ($Env:DRONE_COMMIT_AUTHOR_EMAIL -eq '' -or $Env:DRONE_COMMIT_AUTHOR_EMAIL -eq $null) {
$Env:GIT_AUTHOR_EMAIL = 'drone@localhost'
} else {
$Env:GIT_AUTHOR_EMAIL = $Env:DRONE_COMMIT_AUTHOR_EMAIL
}
$Env:GIT_COMMITTER_NAME = $Env:GIT_AUTHOR_NAME
$Env:GIT_COMMITTER_EMAIL = $Env:GIT_AUTHOR_EMAIL
# invoke the sub-script based on the drone event type.
# TODO we should ultimately look at the ref, since
# we need something compatible with deployment events.
switch ($Env:DRONE_BUILD_EVENT) {
"pull_request" {
Invoke-Expression "${PSScriptRoot}\clone-pull-request.ps1"
break
}
"tag" {
Invoke-Expression "${PSScriptRoot}\clone-tag.ps1"
break
}
default {
Invoke-Expression "${PSScriptRoot}\clone-commit.ps1"
break
}
}
`
// Contents of clone-commit.ps1
const CloneCommit = `
Set-Variable -Name "FLAGS" -Value ""
if ($Env:PLUGIN_DEPTH) {
Set-Variable -Name "FLAGS" -Value "--depth=$Env:PLUGIN_DEPTH"
}
if (!(Test-Path .git)) {
Write-Host 'git init';
git init
Write-Host "git remote add origin $Env:DRONE_REMOTE_URL"
git remote add origin $Env:DRONE_REMOTE_URL
}
Write-Host "git fetch $FLAGS origin +refs/heads/${Env:DRONE_COMMIT_BRANCH}:";
git fetch $FLAGS origin "+refs/heads/${Env:DRONE_COMMIT_BRANCH}:";
Write-Host "git checkout $Env:DRONE_COMMIT_SHA -f $Env:DRONE_COMMIT_BRANCH";
git checkout $Env:DRONE_COMMIT_SHA -b $Env:DRONE_COMMIT_BRANCH;
`
// Contents of clone-pull-request.ps1
const ClonePullRequest = `
Set-Variable -Name "FLAGS" -Value ""
if ($Env:PLUGIN_DEPTH) {
Set-Variable -Name "FLAGS" -Value "--depth=$Env:PLUGIN_DEPTH"
}
if (!(Test-Path .git)) {
git init
git remote add origin $Env:DRONE_REMOTE_URL
}
git fetch $FLAGS origin "+refs/heads/${Env:DRONE_COMMIT_BRANCH}:"
git checkout $Env:DRONE_COMMIT_BRANCH
git fetch origin "${Env:DRONE_COMMIT_REF}:"
git merge $Env:DRONE_COMMIT_SHA
`
// Contents of clone-tag.ps1
const CloneTag = `
Set-Variable -Name "FLAGS" -Value ""
if ($Env:PLUGIN_DEPTH) {
Set-Variable -Name "FLAGS" -Value "--depth=$Env:PLUGIN_DEPTH"
}
if (!(Test-Path .git)) {
git init
git remote add origin $Env:DRONE_REMOTE_URL
}
git fetch $FLAGS origin "+refs/tags/${Env:DRONE_TAG}:"
git checkout -qf FETCH_HEAD
`