Compare commits
70 Commits
Author | SHA1 | Date | |
---|---|---|---|
edd89b53f7 | |||
5048138533 | |||
2b105af367 | |||
ad611b163b | |||
f6aefe30d4 | |||
b101bea263 | |||
c6ffa64a8d | |||
a6ea9fc951 | |||
cd6560b8ad | |||
5bf2da3da1 | |||
1553ceb2f0 | |||
94afa9f3c0 | |||
9edb21fa20 | |||
17905d15c1 | |||
aedb65bbd2 | |||
bc083df11c | |||
3bb22d788b | |||
24592d561c | |||
74f84de581 | |||
f8e2ca5dc2 | |||
79de8cf11e | |||
505d834814 | |||
ffd92dee6d | |||
6e8b551aa9 | |||
129f325b85 | |||
1d86b001c9 | |||
ba606612fb | |||
04644e51aa | |||
bded4c3ecf | |||
caa7613bf1 | |||
b556644175 | |||
69f069e6c4 | |||
2794b56109 | |||
b5cd7c79cf | |||
c9d39abeaf | |||
c390053549 | |||
d888290d57 | |||
6e6676771c | |||
0d1f4f2073 | |||
9f02ede4e5 | |||
56506c3104 | |||
e7e1df7ea3 | |||
84c12147d6 | |||
94dcc0f369 | |||
ad8c6cdfb7 | |||
c9844af82e | |||
e7be45fd19 | |||
e12d8aa9fa | |||
8f491d9e68 | |||
cf52045028 | |||
ec483e325a | |||
bf8b275393 | |||
2854cfcb9e | |||
a0d15cbffd | |||
e8f9b2df87 | |||
d6f1b5688e | |||
bac542cc5a | |||
91b16032e7 | |||
580444d589 | |||
f6a412fbd2 | |||
62f255edc0 | |||
796ef43f30 | |||
ab5f4651ee | |||
bff5e3e7a4 | |||
9a03d16923 | |||
2deb6f657d | |||
47cdba400e | |||
a1edc08c6f | |||
2be6ffe0e4 | |||
38dea5e7f7 |
23
.chglog/CHANGELOG.tpl.md
Executable file
23
.chglog/CHANGELOG.tpl.md
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
{{ range .Versions -}}
|
||||||
|
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||||
|
|
||||||
|
{{ range .CommitGroups -}}
|
||||||
|
### {{ .Title }}
|
||||||
|
|
||||||
|
{{ range .Commits -}}
|
||||||
|
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
{{- if .NoteGroups -}}
|
||||||
|
{{ range .NoteGroups -}}
|
||||||
|
### {{ .Title }}
|
||||||
|
|
||||||
|
{{ range .Notes }}
|
||||||
|
{{ .Body }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{ end -}}
|
25
.chglog/config.yml
Executable file
25
.chglog/config.yml
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
style: github
|
||||||
|
template: CHANGELOG.tpl.md
|
||||||
|
info:
|
||||||
|
title: CHANGELOG
|
||||||
|
repository_url: https://gitea.rknet.org/docker/kanboard
|
||||||
|
options:
|
||||||
|
commit_groups:
|
||||||
|
title_maps:
|
||||||
|
feat: Features
|
||||||
|
fix: Bug Fixes
|
||||||
|
perf: Performance Improvements
|
||||||
|
refactor: Code Refactoring
|
||||||
|
chore: Others
|
||||||
|
test: Testing
|
||||||
|
ci: CI Pipeline
|
||||||
|
docs: Documentation
|
||||||
|
header:
|
||||||
|
pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
|
||||||
|
pattern_maps:
|
||||||
|
- Type
|
||||||
|
- Scope
|
||||||
|
- Subject
|
||||||
|
notes:
|
||||||
|
keywords:
|
||||||
|
- BREAKING CHANGE
|
|
@ -1,8 +0,0 @@
|
||||||
.git
|
|
||||||
.git*
|
|
||||||
.drone.*
|
|
||||||
*.md
|
|
||||||
.dockerignore
|
|
||||||
Dockerfile
|
|
||||||
Dockerfile.*
|
|
||||||
docker-compose.yml
|
|
148
.drone.jsonnet
148
.drone.jsonnet
|
@ -1,148 +0,0 @@
|
||||||
local PipelineBuild(os='linux', arch='amd64') = {
|
|
||||||
local tag = os + '-' + arch,
|
|
||||||
local version_tag = os + '-' + arch,
|
|
||||||
local file_suffix = std.strReplace(version_tag, '-', '.'),
|
|
||||||
kind: "pipeline",
|
|
||||||
name: version_tag,
|
|
||||||
platform: {
|
|
||||||
os: os,
|
|
||||||
arch: arch,
|
|
||||||
},
|
|
||||||
steps: [
|
|
||||||
{
|
|
||||||
name: 'dryrun',
|
|
||||||
image: 'plugins/docker:' + tag,
|
|
||||||
pull: 'always',
|
|
||||||
settings: {
|
|
||||||
dry_run: true,
|
|
||||||
tags: version_tag,
|
|
||||||
dockerfile: './Dockerfile.' + file_suffix,
|
|
||||||
repo: 'xoxys/kanboard',
|
|
||||||
username: { from_secret: "docker_username" },
|
|
||||||
password: { from_secret: "docker_password" },
|
|
||||||
build_args: {
|
|
||||||
KANBOARD_VERSION: "${DRONE_TAG%-*}",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'publish',
|
|
||||||
image: 'plugins/docker:' + tag,
|
|
||||||
pull: 'always',
|
|
||||||
settings: {
|
|
||||||
auto_tag: true,
|
|
||||||
auto_tag_suffix: version_tag,
|
|
||||||
dockerfile: './Dockerfile.' + file_suffix,
|
|
||||||
repo: 'xoxys/kanboard',
|
|
||||||
username: { from_secret: "docker_username" },
|
|
||||||
password: { from_secret: "docker_password" },
|
|
||||||
build_args: {
|
|
||||||
KANBOARD_VERSION: "${DRONE_TAG%-*}",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
when: {
|
|
||||||
ref: [
|
|
||||||
'refs/heads/master',
|
|
||||||
'refs/tags/**',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "publish-gitea",
|
|
||||||
image: "plugins/gitea-release",
|
|
||||||
pull: "always",
|
|
||||||
settings: {
|
|
||||||
api_key: { "from_secret": "gitea_token" },
|
|
||||||
base_url: "https://gitea.rknet.org",
|
|
||||||
overwrite: true,
|
|
||||||
title: "${DRONE_TAG}",
|
|
||||||
note: "CHANGELOG.md",
|
|
||||||
},
|
|
||||||
when: {
|
|
||||||
ref: ['refs/tags/**'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
local PipelineNotifications(depends_on=[]) = {
|
|
||||||
kind: "pipeline",
|
|
||||||
name: "notifications",
|
|
||||||
platform: {
|
|
||||||
os: "linux",
|
|
||||||
arch: "amd64",
|
|
||||||
},
|
|
||||||
steps: [
|
|
||||||
{
|
|
||||||
image: "plugins/manifest",
|
|
||||||
name: "manifest",
|
|
||||||
pull: "always",
|
|
||||||
settings: {
|
|
||||||
ignore_missing: true,
|
|
||||||
tags: ["${DRONE_TAG}", "${DRONE_TAG%-*}", "${DRONE_TAG%.*}", "${DRONE_TAG%%.*}"],
|
|
||||||
username: { from_secret: "docker_username" },
|
|
||||||
password: { from_secret: "docker_password" },
|
|
||||||
spec: "./manifest.tmpl",
|
|
||||||
},
|
|
||||||
when: {
|
|
||||||
ref: [
|
|
||||||
'refs/heads/master',
|
|
||||||
'refs/tags/**',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "readme",
|
|
||||||
image: "sheogorath/readme-to-dockerhub",
|
|
||||||
pull: "always",
|
|
||||||
environment: {
|
|
||||||
DOCKERHUB_USERNAME: { from_secret: "docker_username" },
|
|
||||||
DOCKERHUB_PASSWORD: { from_secret: "docker_password" },
|
|
||||||
DOCKERHUB_REPO_PREFIX: "xoxys",
|
|
||||||
DOCKERHUB_REPO_NAME: "kanboard",
|
|
||||||
README_PATH: "README.md",
|
|
||||||
SHORT_DESCRIPTION: "Rootless Kanboard - Kanban project management software"
|
|
||||||
},
|
|
||||||
when: {
|
|
||||||
ref: [
|
|
||||||
'refs/heads/master',
|
|
||||||
'refs/tags/**',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "microbadger",
|
|
||||||
image: "plugins/webhook",
|
|
||||||
pull: "always",
|
|
||||||
settings: {
|
|
||||||
urls: { from_secret: "microbadger_url" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
image: "plugins/matrix",
|
|
||||||
name: "matrix",
|
|
||||||
pull: 'always',
|
|
||||||
settings: {
|
|
||||||
homeserver: "https://matrix.rknet.org",
|
|
||||||
roomid: "MtidqQXWWAtQcByBhH:rknet.org",
|
|
||||||
template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}",
|
|
||||||
username: { from_secret: "matrix_username" },
|
|
||||||
password: { from_secret: "matrix_password" },
|
|
||||||
},
|
|
||||||
when: {
|
|
||||||
status: [ "success", "failure" ],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
trigger: {
|
|
||||||
status: [ "success", "failure" ],
|
|
||||||
},
|
|
||||||
depends_on: depends_on,
|
|
||||||
};
|
|
||||||
|
|
||||||
[
|
|
||||||
PipelineBuild(os='linux', arch='amd64'),
|
|
||||||
PipelineNotifications(depends_on=[
|
|
||||||
"linux-amd64",
|
|
||||||
])
|
|
||||||
]
|
|
196
.drone.yml
196
.drone.yml
|
@ -1,6 +1,26 @@
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
name: linux-amd64
|
name: test
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: markdownlint
|
||||||
|
image: thegeeklab/markdownlint-cli
|
||||||
|
commands:
|
||||||
|
- markdownlint 'README.md'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- refs/pull/**
|
||||||
|
- refs/tags/**
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
name: build-container
|
||||||
|
|
||||||
platform:
|
platform:
|
||||||
os: linux
|
os: linux
|
||||||
|
@ -8,41 +28,82 @@ platform:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: dryrun
|
- name: dryrun
|
||||||
pull: always
|
image: thegeeklab/drone-docker-buildx:20
|
||||||
image: plugins/docker:linux-amd64
|
|
||||||
settings:
|
settings:
|
||||||
build_args:
|
build_args:
|
||||||
KANBOARD_VERSION: "${DRONE_TAG%-*}"
|
- BUILD_VERSION=${DRONE_TAG%-*}
|
||||||
dockerfile: ./Dockerfile.linux.amd64
|
dockerfile: Dockerfile
|
||||||
dry_run: true
|
dry_run: true
|
||||||
password:
|
password:
|
||||||
from_secret: docker_password
|
from_secret: docker_password
|
||||||
repo: xoxys/kanboard
|
repo: thegeeklab/${DRONE_REPO_NAME}
|
||||||
tags: linux-amd64
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
|
|
||||||
- name: publish
|
|
||||||
pull: always
|
|
||||||
image: plugins/docker:linux-amd64
|
|
||||||
settings:
|
|
||||||
auto_tag: true
|
|
||||||
auto_tag_suffix: linux-amd64
|
|
||||||
build_args:
|
|
||||||
KANBOARD_VERSION: "${DRONE_TAG%-*}"
|
|
||||||
dockerfile: ./Dockerfile.linux.amd64
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
repo: xoxys/kanboard
|
|
||||||
username:
|
username:
|
||||||
from_secret: docker_username
|
from_secret: docker_username
|
||||||
when:
|
when:
|
||||||
ref:
|
ref:
|
||||||
- refs/heads/master
|
- refs/pull/**
|
||||||
- "refs/tags/**"
|
|
||||||
|
- name: tags
|
||||||
|
image: thegeeklab/docker-autotag
|
||||||
|
environment:
|
||||||
|
DOCKER_AUTOTAG_FORCE_LATEST: True
|
||||||
|
DOCKER_AUTOTAG_IGNORE_PRERELEASE: True
|
||||||
|
DOCKER_AUTOTAG_OUTPUT_FILE: .tags
|
||||||
|
DOCKER_AUTOTAG_VERSION: ${DRONE_TAG}
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- refs/tags/**
|
||||||
|
depends_on:
|
||||||
|
- dryrun
|
||||||
|
|
||||||
|
- name: changelog
|
||||||
|
image: thegeeklab/git-chglog
|
||||||
|
commands:
|
||||||
|
- git fetch -tq
|
||||||
|
- git-chglog --no-color --no-emoji ${DRONE_TAG:---next-tag unreleased unreleased}
|
||||||
|
- git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased}
|
||||||
|
depends_on:
|
||||||
|
- tags
|
||||||
|
|
||||||
|
- name: publish-dockerhub
|
||||||
|
image: thegeeklab/drone-docker-buildx:20
|
||||||
|
settings:
|
||||||
|
build_args:
|
||||||
|
- BUILD_VERSION=${DRONE_TAG%-*}
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
repo: thegeeklab/${DRONE_REPO_NAME}
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- refs/tags/**
|
||||||
|
depends_on:
|
||||||
|
- changelog
|
||||||
|
|
||||||
|
- name: publish-quay
|
||||||
|
image: thegeeklab/drone-docker-buildx:20
|
||||||
|
settings:
|
||||||
|
build_args:
|
||||||
|
- BUILD_VERSION=${DRONE_TAG%-*}
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
password:
|
||||||
|
from_secret: quay_password
|
||||||
|
registry: quay.io
|
||||||
|
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
|
||||||
|
username:
|
||||||
|
from_secret: quay_username
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- refs/tags/**
|
||||||
|
depends_on:
|
||||||
|
- changelog
|
||||||
|
|
||||||
- name: publish-gitea
|
- name: publish-gitea
|
||||||
pull: always
|
|
||||||
image: plugins/gitea-release
|
image: plugins/gitea-release
|
||||||
settings:
|
settings:
|
||||||
api_key:
|
api_key:
|
||||||
|
@ -50,10 +111,22 @@ steps:
|
||||||
base_url: https://gitea.rknet.org
|
base_url: https://gitea.rknet.org
|
||||||
note: CHANGELOG.md
|
note: CHANGELOG.md
|
||||||
overwrite: true
|
overwrite: true
|
||||||
title: "${DRONE_TAG}"
|
title: ${DRONE_TAG}
|
||||||
when:
|
when:
|
||||||
ref:
|
ref:
|
||||||
- "refs/tags/**"
|
- refs/tags/**
|
||||||
|
depends_on:
|
||||||
|
- publish-dockerhub
|
||||||
|
- publish-quay
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- refs/pull/**
|
||||||
|
- refs/tags/**
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- test
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
|
@ -64,58 +137,42 @@ platform:
|
||||||
arch: amd64
|
arch: amd64
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: manifest
|
- name: pushrm-dockerhub
|
||||||
pull: always
|
pull: always
|
||||||
image: plugins/manifest
|
image: chko/docker-pushrm:1
|
||||||
settings:
|
|
||||||
ignore_missing: true
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
spec: ./manifest.tmpl
|
|
||||||
tags:
|
|
||||||
- "${DRONE_TAG}"
|
|
||||||
- "${DRONE_TAG%-*}"
|
|
||||||
- "${DRONE_TAG%.*}"
|
|
||||||
- "${DRONE_TAG%%.*}"
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
when:
|
|
||||||
ref:
|
|
||||||
- refs/heads/master
|
|
||||||
- "refs/tags/**"
|
|
||||||
|
|
||||||
- name: readme
|
|
||||||
pull: always
|
|
||||||
image: sheogorath/readme-to-dockerhub
|
|
||||||
environment:
|
environment:
|
||||||
DOCKERHUB_PASSWORD:
|
DOCKER_PASS:
|
||||||
from_secret: docker_password
|
from_secret: docker_password
|
||||||
DOCKERHUB_REPO_NAME: kanboard
|
DOCKER_USER:
|
||||||
DOCKERHUB_REPO_PREFIX: xoxys
|
|
||||||
DOCKERHUB_USERNAME:
|
|
||||||
from_secret: docker_username
|
from_secret: docker_username
|
||||||
README_PATH: README.md
|
PUSHRM_FILE: README.md
|
||||||
SHORT_DESCRIPTION: Rootless Kanboard - Kanban project management software
|
PUSHRM_SHORT: Custom image for Kanboard Kanban project management
|
||||||
|
PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME}
|
||||||
when:
|
when:
|
||||||
ref:
|
status:
|
||||||
- refs/heads/master
|
- success
|
||||||
- "refs/tags/**"
|
|
||||||
|
|
||||||
- name: microbadger
|
- name: pushrm-quay
|
||||||
pull: always
|
pull: always
|
||||||
image: plugins/webhook
|
image: chko/docker-pushrm:1
|
||||||
settings:
|
environment:
|
||||||
urls:
|
APIKEY__QUAY_IO:
|
||||||
from_secret: microbadger_url
|
from_secret: quay_token
|
||||||
|
PUSHRM_FILE: README.md
|
||||||
|
PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME}
|
||||||
|
when:
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
|
||||||
- name: matrix
|
- name: matrix
|
||||||
pull: always
|
|
||||||
image: plugins/matrix
|
image: plugins/matrix
|
||||||
settings:
|
settings:
|
||||||
homeserver: https://matrix.rknet.org
|
homeserver:
|
||||||
|
from_secret: matrix_homeserver
|
||||||
password:
|
password:
|
||||||
from_secret: matrix_password
|
from_secret: matrix_password
|
||||||
roomid: MtidqQXWWAtQcByBhH:rknet.org
|
roomid:
|
||||||
|
from_secret: matrix_roomid
|
||||||
template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}"
|
template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}"
|
||||||
username:
|
username:
|
||||||
from_secret: matrix_username
|
from_secret: matrix_username
|
||||||
|
@ -125,15 +182,18 @@ steps:
|
||||||
- failure
|
- failure
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
|
ref:
|
||||||
|
- refs/heads/main
|
||||||
|
- refs/tags/**
|
||||||
status:
|
status:
|
||||||
- success
|
- success
|
||||||
- failure
|
- failure
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- linux-amd64
|
- build-container
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: signature
|
kind: signature
|
||||||
hmac: e4f6bc169c5cf8661b73dd9b921f6facd998f0c3035f29b53998f35315b7af32
|
hmac: 2bc6998878baf263dbda96a4c7946551fffc788c2738660b4ebee62887f375d0
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
test/
|
test/
|
||||||
|
CHANGELOG.md
|
||||||
|
|
6
.markdownlint.yml
Normal file
6
.markdownlint.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
default: True
|
||||||
|
MD013: False
|
||||||
|
MD041: False
|
||||||
|
MD004:
|
||||||
|
style: dash
|
1
.prettierignore
Normal file
1
.prettierignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.drone.yml
|
|
@ -1,2 +0,0 @@
|
||||||
* SECURITY
|
|
||||||
* update PHP to address [CVE-2019-11043](https://de.tenable.com/blog/cve-2019-11043-vulnerability-in-php-fpm-could-lead-to-remote-code-execution-on-nginx)
|
|
|
@ -1,13 +1,17 @@
|
||||||
FROM xoxys/nginx:latest
|
FROM thegeeklab/nginx:latest@sha256:1c97c8395046bf2eaa9e758661581d42a9857dcefc6bcf07908dac55dbf26082
|
||||||
|
|
||||||
LABEL maintainer="Robert Kaussow <mail@geeklabor.de>" \
|
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
|
||||||
org.label-schema.name="Kanboard" \
|
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
|
||||||
org.label-schema.version="1.2" \
|
LABEL org.opencontainers.image.title="Kanboard"
|
||||||
org.label-schema.vendor="Robert Kaussow" \
|
LABEL org.opencontainers.image.url="https://gitea.rknet.org/docker/kanboard"
|
||||||
org.label-schema.schema-version="1.0"
|
LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/kanboard"
|
||||||
|
LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/kanboard"
|
||||||
|
|
||||||
ARG KANBOARD_VERSION=master
|
ARG BUILD_VERSION
|
||||||
ARG KANBOARD_TARBALL=https://github.com/kanboard/kanboard/archive/${KANBOARD_VERSION}.tar.gz
|
# renovate: datasource=github-releases depName=kanboard/kanboard
|
||||||
|
ENV KANBOARD_VERSION="${BUILD_VERSION:-v1.2.19}"
|
||||||
|
|
||||||
|
ADD overlay/ /
|
||||||
|
|
||||||
RUN apk --update add --virtual .build-deps tar curl && \
|
RUN apk --update add --virtual .build-deps tar curl && \
|
||||||
apk --update add ssmtp mailx php7 php7-phar php7-curl \
|
apk --update add ssmtp mailx php7 php7-phar php7-curl \
|
||||||
|
@ -17,12 +21,13 @@ RUN apk --update add --virtual .build-deps tar curl && \
|
||||||
rm -rf /var/www/localhost && \
|
rm -rf /var/www/localhost && \
|
||||||
rm -f /etc/php7/php-fpm.d/www.conf && \
|
rm -f /etc/php7/php-fpm.d/www.conf && \
|
||||||
mkdir -p /var/www/app && \
|
mkdir -p /var/www/app && \
|
||||||
curl -SsL ${KANBOARD_TARBALL} | tar xz -C /var/www/app/ --strip-components=1 && \
|
echo "Installing Kanboard version '${KANBOARD_VERSION##v}' ..." && \
|
||||||
|
curl -SsL "https://github.com/kanboard/kanboard/archive/${KANBOARD_VERSION}.tar.gz" | \
|
||||||
|
tar xz -C /var/www/app/ -X /.tarignore --strip-components=1 && \
|
||||||
curl -SsL -o /etc/php7/browscap.ini https://browscap.org/stream?q=Lite_PHP_BrowsCapINI && \
|
curl -SsL -o /etc/php7/browscap.ini https://browscap.org/stream?q=Lite_PHP_BrowsCapINI && \
|
||||||
apk del .build-deps && \
|
apk del .build-deps && \
|
||||||
rm -rf /var/cache/apk/* && \
|
rm -rf /var/cache/apk/* && \
|
||||||
rm -rf /tmp/* && \
|
rm -rf /tmp/* && \
|
||||||
rm -rf /var/www/app/ChangeLog /var/www/app/config.default.php && \
|
|
||||||
mkdir -p /var/run/php && \
|
mkdir -p /var/run/php && \
|
||||||
chown -R nginx /var/run/php && \
|
chown -R nginx /var/run/php && \
|
||||||
mkdir -p /var/lib/php/tmp_upload && \
|
mkdir -p /var/lib/php/tmp_upload && \
|
||||||
|
@ -32,8 +37,6 @@ RUN apk --update add --virtual .build-deps tar curl && \
|
||||||
chown nginx /etc/php7/php.ini && \
|
chown nginx /etc/php7/php.ini && \
|
||||||
chown -R nginx:nginx /var/www/app
|
chown -R nginx:nginx /var/www/app
|
||||||
|
|
||||||
ADD overlay/ /
|
|
||||||
|
|
||||||
VOLUME /var/www/app/plugins
|
VOLUME /var/www/app/plugins
|
||||||
VOLUME /var/www/app/data
|
VOLUME /var/www/app/data
|
||||||
|
|
||||||
|
@ -43,7 +46,7 @@ USER nginx
|
||||||
|
|
||||||
STOPSIGNAL SIGTERM
|
STOPSIGNAL SIGTERM
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
ENTRYPOINT ["/usr/local/bin/entrypoint"]
|
||||||
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD /usr/local/bin/healthcheck.sh
|
HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD /usr/local/bin/healthcheck
|
||||||
WORKDIR /var/www/app
|
WORKDIR /var/www/app
|
||||||
CMD []
|
CMD []
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019 Robert Kaussow
|
Copyright (c) 2021 Robert Kaussow <mail@thegeeklab.de>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
51
README.md
51
README.md
|
@ -1,11 +1,16 @@
|
||||||
# [kanboard](https://gitea.rknet.org/docker/kanboard)
|
# kanboard
|
||||||
|
|
||||||
[![Build Status](https://drone.rknet.org/api/badges/docker/kanboard/status.svg)](https://drone.rknet.org/docker/kanboard/)
|
Custom image for Kanboard Kanban project management
|
||||||
[![Microbadger](https://images.microbadger.com/badges/image/xoxys/kanboard.svg)](https://microbadger.com/images/xoxys/kanboard "Get your own image badge on microbadger.com")
|
|
||||||
|
|
||||||
> **WARNING**: since release v1.2.1102 this image is a rootless image and may BREAK your setup!
|
[![Build Status](https://img.shields.io/drone/build/docker/kanboard?logo=drone&server=https%3A%2F%2Fdrone.rknet.org)](https://drone.rknet.org/docker/kanboard)
|
||||||
|
[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/kanboard)
|
||||||
|
[![Quay.io](https://img.shields.io/badge/quay-latest-blue.svg?logo=docker&logoColor=white)](https://quay.io/repository/thegeeklab/kanboard)
|
||||||
|
[![Source: Gitea](https://img.shields.io/badge/source-gitea-blue.svg?logo=gitea&logoColor=white)](https://gitea.rknet.org/docker/kanboard)
|
||||||
|
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitea.rknet.org/docker/kanboard/src/branch/main/LICENSE)
|
||||||
|
|
||||||
Kanboard is project management software that focuses on the Kanban methodology.
|
> **WARNING**: Since release v1.2.1102 this image is a rootless image and may BREAK your setup!
|
||||||
|
|
||||||
|
Custom rootless Docker image for Kanboard, a project management software that focuses on the Kanban methodology.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@ -19,35 +24,12 @@ Here are some example snippets to help you get started creating a container. Thi
|
||||||
docker create \
|
docker create \
|
||||||
--name=kanboard \
|
--name=kanboard \
|
||||||
-p 80:8080 \
|
-p 80:8080 \
|
||||||
xoxys/kanboard
|
thegeeklab/kanboard
|
||||||
```
|
```
|
||||||
|
|
||||||
### Docker Compose
|
### Docker Compose
|
||||||
|
|
||||||
Compatible with docker-compose v2 schemas.
|
Please take a look at the [example](https://gitea.rknet.org/docker/kanboard/src/branch/main/docker-compose.yml) compose file from the git repo.
|
||||||
|
|
||||||
```Yaml
|
|
||||||
---
|
|
||||||
version: '2.1'
|
|
||||||
|
|
||||||
services:
|
|
||||||
kanboard:
|
|
||||||
container_name: kanboard
|
|
||||||
image: xoxys/kanboard:latest
|
|
||||||
ports:
|
|
||||||
- "80:8080"
|
|
||||||
volumes:
|
|
||||||
- kanboard_data:/var/www/app/data
|
|
||||||
- kanboard_plugins:/var/www/app/plugins
|
|
||||||
environment:
|
|
||||||
KANBOARD_PLUGIN_INSTALLER: "true"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
kanboard_data:
|
|
||||||
driver: local
|
|
||||||
kanboard_plugins:
|
|
||||||
driver: local
|
|
||||||
```
|
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
|
@ -56,7 +38,6 @@ volumes:
|
||||||
```Shell
|
```Shell
|
||||||
KANBOARD_PLUGIN_INSTALLER=false
|
KANBOARD_PLUGIN_INSTALLER=false
|
||||||
KANBOARD_CACHE_DRIVER=memory
|
KANBOARD_CACHE_DRIVER=memory
|
||||||
KANBOARD_MAIL_CONFIGURATION=true
|
|
||||||
KANBOARD_MAIL_FROM=
|
KANBOARD_MAIL_FROM=
|
||||||
KANBOARD_MAIL_TRANSPORT=mail
|
KANBOARD_MAIL_TRANSPORT=mail
|
||||||
KANBOARD_MAIL_SMTP_HOSTNAME=
|
KANBOARD_MAIL_SMTP_HOSTNAME=
|
||||||
|
@ -153,10 +134,6 @@ PHP_DATE_TIMEZONE=Europe/Berlin
|
||||||
PHP_SQL_SAFE_MODE=On
|
PHP_SQL_SAFE_MODE=On
|
||||||
```
|
```
|
||||||
|
|
||||||
### License
|
## License
|
||||||
|
|
||||||
This project is licensed under the MIT License - see the [LICENSE](https://gitea.rknet.org/docker/kanboard/src/branch/master/LICENSE) file for details.
|
This project is licensed under the MIT License - see the [LICENSE](https://gitea.rknet.org/docker/kanboard/src/branch/main/LICENSE) file for details.
|
||||||
|
|
||||||
### Maintainers and Contributors
|
|
||||||
|
|
||||||
[Robert Kaussow](https://gitea.rknet.org/xoxys)
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
---
|
---
|
||||||
version: '2.1'
|
version: "3"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
kanboard:
|
kanboard:
|
||||||
container_name: kanboard
|
container_name: kanboard
|
||||||
image: xoxys/kanboard:latest
|
image: thegeeklab/kanboard
|
||||||
ports:
|
ports:
|
||||||
- "80:8080"
|
- "80:8080"
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
image: xoxys/kanboard:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
|
||||||
{{#if build.tags}}
|
|
||||||
tags:
|
|
||||||
{{#each build.tags}}
|
|
||||||
{{#if this}}
|
|
||||||
- {{trimPrefix "v" this}}
|
|
||||||
- {{trimPrefix "v" this}}-linux-amd64
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
|
||||||
{{/if}}
|
|
||||||
manifests:
|
|
||||||
- image: xoxys/kanboard:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
|
||||||
platform:
|
|
||||||
architecture: amd64
|
|
||||||
os: linux
|
|
2
overlay/.tarignore
Normal file
2
overlay/.tarignore
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
ChangeLog
|
||||||
|
config.default.php
|
|
@ -30,7 +30,7 @@ define('CACHE_DIR', '/var/www/app/data/cache');
|
||||||
define('FILES_DIR', '/var/www/app/data/files');
|
define('FILES_DIR', '/var/www/app/data/files');
|
||||||
|
|
||||||
// Enable/disable email configuration from the user interface
|
// Enable/disable email configuration from the user interface
|
||||||
define('MAIL_CONFIGURATION', {{ getenv "KANBOARD_MAIL_CONFIGURATION" "true" }});
|
define('MAIL_CONFIGURATION', false);
|
||||||
|
|
||||||
// E-mail address used for the "From" header (notifications)
|
// E-mail address used for the "From" header (notifications)
|
||||||
define('MAIL_FROM', '{{ getenv "KANBOARD_MAIL_FROM" }}');
|
define('MAIL_FROM', '{{ getenv "KANBOARD_MAIL_FROM" }}');
|
||||||
|
|
8
overlay/usr/local/bin/entrypoint
Executable file
8
overlay/usr/local/bin/entrypoint
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
/usr/local/bin/gomplate -o /etc/php7/php.ini -f /etc/templates/php.ini.tmpl
|
||||||
|
/usr/local/bin/gomplate -o /var/www/app/data/config.php -f /etc/templates/config.php.tmpl
|
||||||
|
|
||||||
|
exec supercronic -split-logs /etc/crontabs/nginx 1>/dev/null &
|
||||||
|
exec php-fpm7 -F &
|
||||||
|
exec nginx -g "daemon off;"
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
/usr/local/bin/gomplate -V -o /etc/php7/php.ini -f /etc/templates/php.ini.tmpl
|
|
||||||
/usr/local/bin/gomplate -V -o /var/www/app/data/config.php -f /etc/templates/config.php.tmpl
|
|
||||||
|
|
||||||
exec supercronic -split-logs /etc/crontabs/nginx 1>/dev/null &
|
|
||||||
exec php-fpm7 -F &
|
|
||||||
exec nginx -g "daemon off;"
|
|
|
@ -1,7 +1,8 @@
|
||||||
#!/bin/sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
URL=http://localhost:8080
|
|
||||||
|
URL=http://127.0.0.1:8080
|
||||||
|
|
||||||
wget --quiet --tries=1 --spider ${URL}
|
wget --quiet --tries=1 --spider ${URL}
|
||||||
[ $? -ne 0 ] && exit 1
|
[ $? -ne 0 ] && exit 1
|
4
renovate.json
Normal file
4
renovate.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": ["github>thegeeklab/renovate-presets:docker"]
|
||||||
|
}
|
Reference in New Issue
Block a user