Compare commits

..

No commits in common. "main" and "v0.7.8-14" have entirely different histories.

8 changed files with 187 additions and 214 deletions

View File

@ -6,9 +6,13 @@
{{ range .CommitGroups -}} {{ range .CommitGroups -}}
### {{ .Title }} ### {{ .Title }}
{{ $subjects := list }}
{{ range .Commits -}} {{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ (regexReplaceAll "(.*)/issues/(.*)" (regexReplaceAll "(Co-\\w*-by.*)" .Subject "") "${1}/pulls/${2}") | trim }} {{ if not (has .Subject $subjects) -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ $subjects = append $subjects .Subject -}}
{{ end }} {{ end }}
{{- end }}
{{- end -}} {{- end -}}
{{- if .NoteGroups -}} {{- if .NoteGroups -}}

View File

@ -7,16 +7,16 @@ platform:
arch: amd64 arch: amd64
steps: steps:
- name: markdownlint - name: markdownlint
image: thegeeklab/markdownlint-cli image: thegeeklab/markdownlint-cli
commands: commands:
- markdownlint 'README.md' - markdownlint 'README.md'
trigger: trigger:
ref: ref:
- refs/heads/main - refs/heads/main
- refs/pull/** - refs/pull/**
- refs/tags/** - refs/tags/**
--- ---
kind: pipeline kind: pipeline
@ -27,106 +27,113 @@ platform:
arch: amd64 arch: amd64
steps: steps:
- name: dryrun - name: dryrun
image: thegeeklab/drone-docker-buildx:23 image: thegeeklab/drone-docker-buildx:20
settings: settings:
dockerfile: Dockerfile build_args:
dry_run: true - BUILD_VERSION=${DRONE_TAG%-*}
provenance: false dockerfile: Dockerfile
repo: thegeeklab/${DRONE_REPO_NAME} dry_run: true
when: password:
ref: from_secret: docker_password
- refs/pull/** repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
- name: tags - name: tags
image: thegeeklab/docker-autotag image: thegeeklab/docker-autotag
environment: environment:
DOCKER_AUTOTAG_FORCE_LATEST: True DOCKER_AUTOTAG_FORCE_LATEST: True
DOCKER_AUTOTAG_IGNORE_PRERELEASE: True DOCKER_AUTOTAG_IGNORE_PRERELEASE: True
DOCKER_AUTOTAG_OUTPUT_FILE: .tags DOCKER_AUTOTAG_OUTPUT_FILE: .tags
DOCKER_AUTOTAG_VERSION: ${DRONE_TAG} DOCKER_AUTOTAG_VERSION: ${DRONE_TAG}
when: when:
ref: ref:
- refs/heads/main - refs/heads/main
- refs/tags/** - refs/tags/**
depends_on: depends_on:
- dryrun - dryrun
- name: changelog-generate - name: changelog-generate
image: thegeeklab/git-chglog image: thegeeklab/git-chglog
commands: commands:
- git fetch -tq - git fetch -tq
- git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased} - git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased}
depends_on: depends_on:
- tags - tags
- name: changelog-format - name: changelog-format
image: thegeeklab/alpine-tools image: thegeeklab/alpine-tools
commands: commands:
- prettier CHANGELOG.md - prettier CHANGELOG.md
- prettier -w CHANGELOG.md - prettier -w CHANGELOG.md
depends_on: depends_on:
- changelog-generate - changelog-generate
- name: publish-dockerhub - name: publish-dockerhub
image: thegeeklab/drone-docker-buildx:23 image: thegeeklab/drone-docker-buildx:20
settings: settings:
dockerfile: Dockerfile build_args:
password: - BUILD_VERSION=${DRONE_TAG%-*}
from_secret: docker_password dockerfile: Dockerfile
provenance: false password:
repo: thegeeklab/${DRONE_REPO_NAME} from_secret: docker_password
username: repo: thegeeklab/${DRONE_REPO_NAME}
from_secret: docker_username username:
when: from_secret: docker_username
ref: when:
- refs/heads/main ref:
- refs/tags/** - refs/heads/main
depends_on: - refs/tags/**
- changelog-format depends_on:
- changelog-format
- name: publish-quay - name: publish-quay
image: thegeeklab/drone-docker-buildx:23 image: thegeeklab/drone-docker-buildx:20
settings: settings:
dockerfile: Dockerfile build_args:
password: - BUILD_VERSION=${DRONE_TAG%-*}
from_secret: quay_password dockerfile: Dockerfile
provenance: false password:
registry: quay.io from_secret: quay_password
repo: quay.io/thegeeklab/${DRONE_REPO_NAME} registry: quay.io
username: repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
from_secret: quay_username username:
when: from_secret: quay_username
ref: when:
- refs/heads/main ref:
- refs/tags/** - refs/heads/main
depends_on: - refs/tags/**
- changelog-format depends_on:
- changelog-format
- name: publish-gitea - name: publish-gitea
image: plugins/gitea-release image: plugins/gitea-release
settings: settings:
api_key: api_key:
from_secret: gitea_token from_secret: gitea_token
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: depends_on:
- publish-dockerhub - publish-dockerhub
- publish-quay - publish-quay
trigger: trigger:
ref: ref:
- refs/heads/main - refs/heads/main
- refs/pull/** - refs/pull/**
- refs/tags/** - refs/tags/**
depends_on: depends_on:
- test - test
--- ---
kind: pipeline kind: pipeline
@ -137,61 +144,63 @@ platform:
arch: amd64 arch: amd64
steps: steps:
- name: pushrm-dockerhub - name: pushrm-dockerhub
image: chko/docker-pushrm:1 pull: always
environment: image: chko/docker-pushrm:1
DOCKER_PASS: environment:
from_secret: docker_password DOCKER_PASS:
DOCKER_USER: from_secret: docker_password
from_secret: docker_username DOCKER_USER:
PUSHRM_FILE: README.md from_secret: docker_username
PUSHRM_SHORT: Custom image for muffet PUSHRM_FILE: README.md
PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME} PUSHRM_SHORT: Custom image for broken-link-checker
when: PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME}
status: when:
- success status:
- success
- name: pushrm-quay - name: pushrm-quay
image: chko/docker-pushrm:1 pull: always
environment: image: chko/docker-pushrm:1
APIKEY__QUAY_IO: environment:
from_secret: quay_token APIKEY__QUAY_IO:
PUSHRM_FILE: README.md from_secret: quay_token
PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME} PUSHRM_FILE: README.md
when: PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME}
status: when:
- success status:
- success
- name: matrix - name: matrix
image: thegeeklab/drone-matrix image: plugins/matrix
settings: settings:
homeserver: homeserver:
from_secret: matrix_homeserver from_secret: matrix_homeserver
password: password:
from_secret: matrix_password from_secret: matrix_password
roomid: roomid:
from_secret: matrix_roomid from_secret: matrix_roomid
template: "Status: **{{ .Build.Status }}**<br/> Build: [{{ .Repo.Owner }}/{{ .Repo.Name }}]({{ .Build.Link }}){{ if .Build.Branch }} ({{ .Build.Branch }}){{ end }} by {{ .Commit.Author }}<br/> Message: {{ .Commit.Message.Title }}" 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
when: when:
status: status:
- success
- failure
trigger:
ref:
- refs/heads/main
- refs/tags/**
status:
- success - success
- failure - failure
trigger:
ref:
- refs/heads/main
- refs/tags/**
status:
- success
- failure
depends_on: depends_on:
- build-container - build-container
--- ---
kind: signature kind: signature
hmac: 78e01e7829a4953f6068e8c71f068cc449d5a41d6ea26adc7ad456d19b0ed40f hmac: 5c2a9c3283e29459194fc2f63fac55ad0ef49db8506838bba7fa82c5926a1b34
... ...

1
.gitignore vendored
View File

@ -1,2 +1 @@
CHANGELOG.md CHANGELOG.md
/src

View File

@ -1,3 +1,2 @@
.drone.yml .drone.yml
*.tpl.md *.tpl.md
LICENSE

View File

@ -1,4 +1,4 @@
FROM debian:bullseye-slim@sha256:9bec46ecd98ce4bf8305840b021dda9b3e1f8494a0768c407e2b233180fa1466 FROM node:lts-alpine3.13@sha256:bd7f3879132b126e5f6770e7e50e223c2e74c1f223d27bfd06dd71a17ebb8fc3
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>" LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>" LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
@ -7,40 +7,35 @@ LABEL org.opencontainers.image.url="https://gitea.rknet.org/docker/link-validato
LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/link-validator" LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/link-validator"
LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/link-validator" LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/link-validator"
ARG CADDY_VERSION ARG BUILD_VERSION
ARG WAIT_FOR_VERSION # renovate: datasource=npm depName=broken-link-checker
ARG CONTAINER_LIBRARY ENV BLC_VERSION="${BUILD_VERSION:-0.7.8}"
# renovate: datasource=github-releases depName=caddyserver/caddy # renovate: datasource=github-releases depName=caddyserver/caddy
ENV CADDY_VERSION="${CADDY_VERSION:-v2.7.4}" ENV CADDY_VERSION="${CADDY_VERSION:-v2.4.4}"
# renovate: datasource=github-releases depName=thegeeklab/wait-for
ENV WAIT_FOR_VERSION="${WAIT_FOR_VERSION:-v0.4.2}"
# renovate: datasource=github-releases depName=thegeeklab/retry
ENV RETRY_VERSION="${RETRY_VERSION:-v0.4.0}"
# renovate: datasource=github-releases depName=raviqqe/muffet
ENV MUFFET_VERSION="${MUFFET_VERSION:-v2.9.2}"
# renovate: datasource=git-tags depName=https://gitea.rknet.org/docker/container-library
ENV CONTAINER_LIBRARY="${CONTAINER_LIBRARY:-v0.1.3}"
ENV LINK_VALIDATOR_BASE_DIR=/drone/src \ ENV LINK_VALIDATOR_BASE_DIR=/drone/src \
LINK_VALIDATOR_SERVER_PORT=8000 \ LINK_VALIDATOR_SERVER_PORT=80 \
LINK_VALIDATOR_RETRIES=0 FORCE_COLOR=true \
NPM_CONFIG_LOGLEVEL=error
COPY overlay/ / COPY overlay/ /
RUN apt-get update && apt-get install -y curl bash ncat media-types && \ RUN echo "Installing requirements ..." && \
curl -SsfL "https://gitea.rknet.org/docker/container-library/releases/download/${CONTAINER_LIBRARY}/container-library.tar.gz" | tar xz -C / && \ apk --update add --virtual .build-deps curl && \
curl -sSL "https://github.com/caddyserver/caddy/releases/download/${CADDY_VERSION}/caddy_${CADDY_VERSION##v}_linux_amd64.tar.gz" | tar xz -C /usr/local/bin caddy && \ curl -sSL "https://github.com/caddyserver/caddy/releases/download/${CADDY_VERSION}/caddy_${CADDY_VERSION##v}_linux_amd64.tar.gz" | tar xz -C /usr/local/bin caddy && \
curl -SsfL "https://github.com/raviqqe/muffet/releases/download/${MUFFET_VERSION}/muffet_linux_amd64.tar.gz" | tar xz -C /usr/local/bin muffet && \
curl -SsfL -o /usr/local/bin/wait-for "https://github.com/thegeeklab/wait-for/releases/download/${WAIT_FOR_VERSION}/wait-for" && \
curl -SsfL -o /usr/local/bin/retry "https://github.com/thegeeklab/retry/releases/download/${RETRY_VERSION}/retry" && \
chmod 755 /usr/local/bin/caddy && \ chmod 755 /usr/local/bin/caddy && \
chmod 755 /usr/local/bin/muffet && \ BLC_VERSION="${BLC_VERSION##v}" && \
chmod 755 /usr/local/bin/wait-for && \ BLC_MAJOR="${BLC_VERSION%%.*}" && \
chmod 755 /usr/local/bin/retry && \ if [ -z "${BLC_MAJOR//[0-9]}" ] && [ -n "$BLC_MAJOR" ]; then \
rm -rf /var/lib/apt/lists/* && \ echo "Installing link-checker version '$BLC_VERSION' ..." && \
rm -rf /tmp/* && \ npm install -g broken-link-checker@"$BLC_VERSION"; \
rm -rf /root/.cache/ else \
echo "Installing latest link-checker ..." && \
npm install -g broken-link-checker; \
fi && \
apk del .build-deps && \
rm -rf /var/cache/apk/* && \
rm -rf /tmp/*
USER root USER root
CMD [] CMD []

21
LICENSE
View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2022 Robert Kaussow <mail@thegeeklab.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,6 +1,6 @@
# link-validator # link-validator
Custom image for muffet Custom image for broken-link-checker
[![Build Status](https://img.shields.io/drone/build/docker/link-validator?logo=drone&server=https%3A%2F%2Fdrone.rknet.org)](https://drone.rknet.org/docker/link-validator) [![Build Status](https://img.shields.io/drone/build/docker/link-validator?logo=drone&server=https%3A%2F%2Fdrone.rknet.org)](https://drone.rknet.org/docker/link-validator)
[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/link-validator) [![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/link-validator)
@ -8,16 +8,16 @@ Custom image for muffet
[![Source: Gitea](https://img.shields.io/badge/source-gitea-blue.svg?logo=gitea&logoColor=white)](https://gitea.rknet.org/docker/link-validator) [![Source: Gitea](https://img.shields.io/badge/source-gitea-blue.svg?logo=gitea&logoColor=white)](https://gitea.rknet.org/docker/link-validator)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitea.rknet.org/docker/link-validator/src/branch/main/LICENSE) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitea.rknet.org/docker/link-validator/src/branch/main/LICENSE)
Custom wrapper Docker image for [muffet](https://github.com/raviqqe/muffet) optimized for CI. Custom wrapper Docker image for [broken-link-checker](https://github.com/stevenvachon/broken-link-checker) optimized for CI.
## Usage ## Usage
```Shell ```Shell
docker run -v $(pwd)/public:/drone/src link-validator docker run -v $(pwd)/public:/drone/src link-validator
# Pass arguments to muffet # or pass arguments to broken-link-checker
# ... but DO NOT set the server url! This is done automatically. # ... but DO NOT set the server url! This will be done automatically. See environment variables.
docker run -v $(pwd)/public:/drone/src link-validator -e docker run -v $(pwd)/public:/drone/src link-validator -ro
``` ```
## Environment variables ## Environment variables
@ -25,7 +25,6 @@ docker run -v $(pwd)/public:/drone/src link-validator -e
```Shell ```Shell
LINK_VALIDATOR_BASE_DIR=/drone/src LINK_VALIDATOR_BASE_DIR=/drone/src
LINK_VALIDATOR_SERVER_PORT=8000 LINK_VALIDATOR_SERVER_PORT=8000
LINK_VALIDATOR_RETRIES=0
``` ```
## Build ## Build

View File

@ -1,16 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env sh
set -eo pipefail set -eo pipefail
# shellcheck disable=SC1091 caddy file-server --root "$LINK_VALIDATOR_BASE_DIR" --listen "127.0.0.1:$LINK_VALIDATOR_SERVER_PORT" &> /dev/null &
. /usr/local/lib/log.sh exec /usr/local/bin/broken-link-checker "$@" http://localhost:"$LINK_VALIDATOR_SERVER_PORT"
URL="127.0.0.1:$LINK_VALIDATOR_SERVER_PORT"
caddy file-server --root "$LINK_VALIDATOR_BASE_DIR" --listen "$URL" &
log_info "Wait for web server on '$URL'"
/usr/local/bin/wait-for "$URL"
log_info "Start link validation"
exec retry -t "$LINK_VALIDATOR_RETRIES" -m 5 -- "/usr/local/bin/muffet $* http://$URL"