Compare commits
82 Commits
Author | SHA1 | Date | |
---|---|---|---|
ce8695c843 | |||
c9340d06f8 | |||
1fc12fc06e | |||
cd25708fa8 | |||
dd0e9c41a0 | |||
50d874acd5 | |||
c98a25c98e | |||
0a7ca3fe16 | |||
76161de18f | |||
1b476e7f24 | |||
1158454f8d | |||
58551091ab | |||
04e8ce38c8 | |||
6aafa1ea31 | |||
b4bbade6e8 | |||
8666f56e0d | |||
e30fcf07b3 | |||
24f4f26e53 | |||
4c535246d4 | |||
50efd107d3 | |||
1a4fadcdb1 | |||
82d11cf24f | |||
67873b87a2 | |||
110832e40c | |||
b932eadfec | |||
b5d8d62210 | |||
4424b9277c | |||
ba6a4dc93f | |||
c126c88ea2 | |||
5326201c79 | |||
a3fe8faf0d | |||
aee4efd1f7 | |||
c9f59f1b8b | |||
3866a242f6 | |||
9be2a2f234 | |||
d125b8d7bf | |||
e9c807fd87 | |||
e65a32b951 | |||
4696de1e05 | |||
180f593646 | |||
ab41abde05 | |||
d12d07a66b | |||
a496fbe02a | |||
fac7b392c5 | |||
6d403d9c7b | |||
18dfb3d381 | |||
a87278e7bd | |||
653e5e2b6d | |||
46cfdfcb25 | |||
9513b8f462 | |||
f6364b79dd | |||
302a0f17e6 | |||
8e65d30b5c | |||
b1147d7b0a | |||
57eff1d513 | |||
c458bbbe4c | |||
aff5bb8210 | |||
6eb9769039 | |||
b76f805f7f | |||
f642a43a92 | |||
de2c79696a | |||
c02502e17c | |||
9aff64f918 | |||
9acd8c30ff | |||
5e7f1f1273 | |||
cd73eb8d67 | |||
4e51bb4980 | |||
380b8ab141 | |||
2a0fb016fc | |||
0274a5060f | |||
c8d92c27bd | |||
44b9c3a56a | |||
42cff9b22e | |||
b5fadfeb5d | |||
5b8ddd1d10 | |||
dbf3780c94 | |||
783fecbccd | |||
2490b779eb | |||
db4edb3554 | |||
4d85a7c08c | |||
058284c17d | |||
b94579b1a7 |
27
.drone.yml
27
.drone.yml
@ -28,17 +28,12 @@ platform:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: dryrun
|
- name: dryrun
|
||||||
image: thegeeklab/drone-docker-buildx:20
|
image: thegeeklab/drone-docker-buildx:23
|
||||||
settings:
|
settings:
|
||||||
build_args:
|
|
||||||
- BUILD_VERSION=${DRONE_TAG%-*}
|
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
dry_run: true
|
dry_run: true
|
||||||
password:
|
provenance: false
|
||||||
from_secret: docker_password
|
|
||||||
repo: thegeeklab/${DRONE_REPO_NAME}
|
repo: thegeeklab/${DRONE_REPO_NAME}
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
when:
|
when:
|
||||||
ref:
|
ref:
|
||||||
- refs/pull/**
|
- refs/pull/**
|
||||||
@ -74,13 +69,12 @@ steps:
|
|||||||
- changelog-generate
|
- changelog-generate
|
||||||
|
|
||||||
- name: publish-dockerhub
|
- name: publish-dockerhub
|
||||||
image: thegeeklab/drone-docker-buildx:20
|
image: thegeeklab/drone-docker-buildx:23
|
||||||
settings:
|
settings:
|
||||||
build_args:
|
|
||||||
- BUILD_VERSION=${DRONE_TAG%-*}
|
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
password:
|
password:
|
||||||
from_secret: docker_password
|
from_secret: docker_password
|
||||||
|
provenance: false
|
||||||
repo: thegeeklab/${DRONE_REPO_NAME}
|
repo: thegeeklab/${DRONE_REPO_NAME}
|
||||||
username:
|
username:
|
||||||
from_secret: docker_username
|
from_secret: docker_username
|
||||||
@ -92,13 +86,12 @@ steps:
|
|||||||
- changelog-format
|
- changelog-format
|
||||||
|
|
||||||
- name: publish-quay
|
- name: publish-quay
|
||||||
image: thegeeklab/drone-docker-buildx:20
|
image: thegeeklab/drone-docker-buildx:23
|
||||||
settings:
|
settings:
|
||||||
build_args:
|
|
||||||
- BUILD_VERSION=${DRONE_TAG%-*}
|
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
password:
|
password:
|
||||||
from_secret: quay_password
|
from_secret: quay_password
|
||||||
|
provenance: false
|
||||||
registry: quay.io
|
registry: quay.io
|
||||||
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
|
repo: quay.io/thegeeklab/${DRONE_REPO_NAME}
|
||||||
username:
|
username:
|
||||||
@ -145,7 +138,6 @@ platform:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: pushrm-dockerhub
|
- name: pushrm-dockerhub
|
||||||
pull: always
|
|
||||||
image: chko/docker-pushrm:1
|
image: chko/docker-pushrm:1
|
||||||
environment:
|
environment:
|
||||||
DOCKER_PASS:
|
DOCKER_PASS:
|
||||||
@ -153,14 +145,13 @@ steps:
|
|||||||
DOCKER_USER:
|
DOCKER_USER:
|
||||||
from_secret: docker_username
|
from_secret: docker_username
|
||||||
PUSHRM_FILE: README.md
|
PUSHRM_FILE: README.md
|
||||||
PUSHRM_SHORT: Custom image for broken-link-checker
|
PUSHRM_SHORT: Custom image for muffet
|
||||||
PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME}
|
PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME}
|
||||||
when:
|
when:
|
||||||
status:
|
status:
|
||||||
- success
|
- success
|
||||||
|
|
||||||
- name: pushrm-quay
|
- name: pushrm-quay
|
||||||
pull: always
|
|
||||||
image: chko/docker-pushrm:1
|
image: chko/docker-pushrm:1
|
||||||
environment:
|
environment:
|
||||||
APIKEY__QUAY_IO:
|
APIKEY__QUAY_IO:
|
||||||
@ -180,7 +171,7 @@ steps:
|
|||||||
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 }}){{/if}} by {{ commit.Author }}<br/> Message: {{ commit.Message.Title }}"
|
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 }}"
|
||||||
username:
|
username:
|
||||||
from_secret: matrix_username
|
from_secret: matrix_username
|
||||||
when:
|
when:
|
||||||
@ -201,6 +192,6 @@ depends_on:
|
|||||||
|
|
||||||
---
|
---
|
||||||
kind: signature
|
kind: signature
|
||||||
hmac: 146d9e41ffdf9ebeae30b044503608af4a872f420cf7f799e70d4ab3a50f4f77
|
hmac: 78e01e7829a4953f6068e8c71f068cc449d5a41d6ea26adc7ad456d19b0ed40f
|
||||||
|
|
||||||
...
|
...
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
CHANGELOG.md
|
CHANGELOG.md
|
||||||
|
/src
|
||||||
|
49
Dockerfile
49
Dockerfile
@ -1,4 +1,4 @@
|
|||||||
FROM node:lts-alpine3.15@sha256:1a9a71ea86aad332aa7740316d4111ee1bd4e890df47d3b5eff3e5bded3b3d10
|
FROM debian:bullseye-slim@sha256:9bec46ecd98ce4bf8305840b021dda9b3e1f8494a0768c407e2b233180fa1466
|
||||||
|
|
||||||
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,35 +7,40 @@ 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 BUILD_VERSION
|
ARG CADDY_VERSION
|
||||||
# renovate: datasource=npm depName=broken-link-checker
|
ARG WAIT_FOR_VERSION
|
||||||
ENV BLC_VERSION="${BUILD_VERSION:-0.7.8}"
|
ARG CONTAINER_LIBRARY
|
||||||
|
|
||||||
# renovate: datasource=github-releases depName=caddyserver/caddy
|
# renovate: datasource=github-releases depName=caddyserver/caddy
|
||||||
ENV CADDY_VERSION="${CADDY_VERSION:-v2.5.0}"
|
ENV CADDY_VERSION="${CADDY_VERSION:-v2.7.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=80 \
|
LINK_VALIDATOR_SERVER_PORT=8000 \
|
||||||
FORCE_COLOR=true \
|
LINK_VALIDATOR_RETRIES=0
|
||||||
NPM_CONFIG_LOGLEVEL=error
|
|
||||||
|
|
||||||
COPY overlay/ /
|
COPY overlay/ /
|
||||||
|
|
||||||
RUN echo "Installing requirements ..." && \
|
RUN apt-get update && apt-get install -y curl bash ncat media-types && \
|
||||||
apk --update add --virtual .build-deps curl && \
|
curl -SsfL "https://gitea.rknet.org/docker/container-library/releases/download/${CONTAINER_LIBRARY}/container-library.tar.gz" | tar xz -C / && \
|
||||||
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 && \
|
||||||
BLC_VERSION="${BLC_VERSION##v}" && \
|
chmod 755 /usr/local/bin/muffet && \
|
||||||
BLC_MAJOR="${BLC_VERSION%%.*}" && \
|
chmod 755 /usr/local/bin/wait-for && \
|
||||||
if [ -z "${BLC_MAJOR//[0-9]}" ] && [ -n "$BLC_MAJOR" ]; then \
|
chmod 755 /usr/local/bin/retry && \
|
||||||
echo "Installing link-checker version '$BLC_VERSION' ..." && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
npm install -g broken-link-checker@"$BLC_VERSION"; \
|
rm -rf /tmp/* && \
|
||||||
else \
|
rm -rf /root/.cache/
|
||||||
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 []
|
||||||
|
11
README.md
11
README.md
@ -1,6 +1,6 @@
|
|||||||
# link-validator
|
# link-validator
|
||||||
|
|
||||||
Custom image for broken-link-checker
|
Custom image for muffet
|
||||||
|
|
||||||
[![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 broken-link-checker
|
|||||||
[![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 [broken-link-checker](https://github.com/stevenvachon/broken-link-checker) optimized for CI.
|
Custom wrapper Docker image for [muffet](https://github.com/raviqqe/muffet) 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
|
||||||
|
|
||||||
# or pass arguments to broken-link-checker
|
# Pass arguments to muffet
|
||||||
# ... but DO NOT set the server url! This will be done automatically. See environment variables.
|
# ... but DO NOT set the server url! This is done automatically.
|
||||||
docker run -v $(pwd)/public:/drone/src link-validator -ro
|
docker run -v $(pwd)/public:/drone/src link-validator -e
|
||||||
```
|
```
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
@ -25,6 +25,7 @@ docker run -v $(pwd)/public:/drone/src link-validator -ro
|
|||||||
```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
|
||||||
|
@ -1,5 +1,16 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
caddy file-server --root "$LINK_VALIDATOR_BASE_DIR" --listen "127.0.0.1:$LINK_VALIDATOR_SERVER_PORT" &> /dev/null &
|
# shellcheck disable=SC1091
|
||||||
exec /usr/local/bin/broken-link-checker "$@" http://localhost:"$LINK_VALIDATOR_SERVER_PORT"
|
. /usr/local/lib/log.sh
|
||||||
|
|
||||||
|
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"
|
||||||
|
Reference in New Issue
Block a user