Compare commits

..

No commits in common. "main" and "v0.6.1-3" have entirely different histories.

18 changed files with 273 additions and 316 deletions

View File

@ -1,2 +0,0 @@
lhci
lighthouse-ci

190
.drone.yml Normal file
View File

@ -0,0 +1,190 @@
---
kind: pipeline
name: test
platform:
os: linux
arch: amd64
steps:
- name: markdownlint
image: thegeeklab/markdownlint-cli
commands:
- markdownlint 'README.md'
trigger:
ref:
- refs/heads/master
- refs/pull/**
- refs/tags/**
---
kind: pipeline
name: build-container
platform:
os: linux
arch: amd64
steps:
- name: dryrun
image: plugins/docker:19
settings:
build_args:
- BUILD_VERSION=${DRONE_TAG%-*}
dockerfile: Dockerfile
dry_run: true
password:
from_secret: docker_password
repo: thegeeklab/${DRONE_REPO_NAME}
username:
from_secret: docker_username
when:
ref:
- refs/pull/**
- 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/master
- refs/tags/**
depends_on:
- dryrun
- name: publish-dockerhub
image: plugins/docker:19
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/master
- refs/tags/**
depends_on:
- tags
- name: publish-quay
image: plugins/docker:19
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/master
- refs/tags/**
depends_on:
- tags
- name: publish-gitea
image: plugins/gitea-release
settings:
api_key:
from_secret: gitea_token
base_url: https://gitea.rknet.org
note: CHANGELOG.md
overwrite: true
title: ${DRONE_TAG}
when:
ref:
- refs/tags/**
depends_on:
- publish-dockerhub
- publish-quay
trigger:
ref:
- refs/heads/master
- refs/pull/**
- refs/tags/**
depends_on:
- test
---
kind: pipeline
name: notifications
platform:
os: linux
arch: amd64
steps:
- name: pushrm-dockerhub
pull: always
image: chko/docker-pushrm:1
environment:
DOCKER_PASS:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
PUSHRM_FILE: README.md
PUSHRM_SHORT: Custom image for lighthouse-ci
PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME}
when:
status:
- success
- name: pushrm-quay
pull: always
image: chko/docker-pushrm:1
environment:
APIKEY__QUAY_IO:
from_secret: quay_token
PUSHRM_FILE: README.md
PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME}
when:
status:
- success
- name: matrix
image: plugins/matrix
settings:
homeserver:
from_secret: matrix_homeserver
password:
from_secret: matrix_password
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 }}"
username:
from_secret: matrix_username
when:
status:
- success
- failure
trigger:
ref:
- refs/heads/master
- refs/tags/**
status:
- success
- failure
depends_on:
- build-container
---
kind: signature
hmac: 6947fd2349103a32a9fe46e79d61751515b6c1b6e5b6ee4c45bd9421a25ae0f7
...

1
.gitignore vendored
View File

@ -1 +0,0 @@
CHANGELOG.md

View File

@ -1,47 +0,0 @@
---
version: "1.1"
versioning:
update-major: []
update-minor: [feat]
update-patch: [fix, perf, refactor, chore, test, ci, docs]
tag:
pattern: "v%d.%d.%d"
release-notes:
sections:
- name: Features
commit-types: [feat]
section-type: commits
- name: Bug Fixes
commit-types: [fix]
section-type: commits
- name: Performance Improvements
commit-types: [perf]
section-type: commits
- name: Code Refactoring
commit-types: [refactor]
section-type: commits
- name: Others
commit-types: [chore]
section-type: commits
- name: Testing
commit-types: [test]
section-type: commits
- name: CI Pipeline
commit-types: [ci]
section-type: commits
- name: Documentation
commit-types: [docs]
section-type: commits
- name: BREAKING CHANGES
section-type: breaking-changes
commit-message:
footer:
issue:
key: issue
add-value-prefix: "#"
issue:
regex: "#?[0-9]+"

View File

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

View File

@ -1,63 +0,0 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: security-build
image: quay.io/thegeeklab/wp-docker-buildx:4
settings:
containerfile: Containerfile
output: type=oci,dest=oci/${CI_REPO_NAME},tar=false
repo: thegeeklab/${CI_REPO_NAME}
- name: security-scan
image: ghcr.io/aquasecurity/trivy
commands:
- trivy -v
- trivy image --input oci/${CI_REPO_NAME}
environment:
TRIVY_EXIT_CODE: "1"
TRIVY_IGNORE_UNFIXED: "true"
TRIVY_NO_PROGRESS: "true"
TRIVY_SEVERITY: HIGH,CRITICAL
TRIVY_TIMEOUT: 1m
- name: publish-dockerhub
image: quay.io/thegeeklab/wp-docker-buildx:4
group: container
settings:
auto_tag: true
containerfile: Containerfile
password:
from_secret: docker_password
provenance: false
repo: thegeeklab/${CI_REPO_NAME}
username:
from_secret: docker_username
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
- name: publish-quay
image: quay.io/thegeeklab/wp-docker-buildx:4
group: container
settings:
auto_tag: true
containerfile: Containerfile
password:
from_secret: quay_password
provenance: false
registry: quay.io
repo: quay.io/thegeeklab/${CI_REPO_NAME}
username:
from_secret: quay_username
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}

View File

@ -1,25 +0,0 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: changelog
image: quay.io/thegeeklab/git-sv
commands:
- git sv current-version
- git sv release-notes -t ${CI_COMMIT_TAG:-next} -o CHANGELOG.md
- cat CHANGELOG.md
- name: publish-gitea
image: quay.io/thegeeklab/wp-gitea-release
settings:
api_key:
from_secret: gitea_token
base_url: https://gitea.rknet.org
note: CHANGELOG.md
title: ${CI_COMMIT_TAG}
when:
- event: [tag]

View File

@ -1,62 +0,0 @@
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: markdownlint
image: quay.io/thegeeklab/markdownlint-cli
group: test
commands:
- markdownlint 'README.md'
- name: spellcheck
image: quay.io/thegeeklab/alpine-tools
group: test
commands:
- spellchecker --files '_docs/**/*.md' 'README.md' -d .dictionary -p spell indefinite-article syntax-urls
environment:
FORCE_COLOR: "true"
- name: link-validation
image: docker.io/lycheeverse/lychee
group: test
commands:
- lychee --no-progress --format detailed README.md
- name: pushrm-dockerhub
image: docker.io/chko/docker-pushrm:1
secrets:
- source: docker_password
target: DOCKER_PASS
- source: docker_username
target: DOCKER_USER
environment:
PUSHRM_FILE: README.md
PUSHRM_SHORT: Custom image for lighthouse-ci
PUSHRM_TARGET: thegeeklab/${CI_REPO_NAME}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success]
- name: pushrm-quay
image: docker.io/chko/docker-pushrm:1
secrets:
- source: quay_token
target: APIKEY__QUAY_IO
environment:
PUSHRM_FILE: README.md
PUSHRM_TARGET: quay.io/thegeeklab/${CI_REPO_NAME}
when:
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success]
depends_on:
- build-package
- build-container

View File

@ -1,26 +0,0 @@
---
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
runs_on: [success, failure]
steps:
- name: matrix
image: quay.io/thegeeklab/wp-matrix
settings:
homeserver:
from_secret: matrix_homeserver
password:
from_secret: matrix_password
roomid:
from_secret: matrix_roomid
username:
from_secret: matrix_username
when:
- status: [success, failure]
depends_on:
- docs

3
CHANGELOG.md Normal file
View File

@ -0,0 +1,3 @@
- ENHANCEMENT
- Update dependency mikefarah/yq to v4.1.0
- Use `yq` native alternative syntax

View File

@ -1,42 +0,0 @@
FROM docker.io/node:lts-bookworm-slim@sha256:a16301294ba66d2ad22d3beded4a52720f96ab208c1db0973c034d0127a4ccb0
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.title="lhci"
LABEL org.opencontainers.image.url="https://gitea.rknet.org/container/lhci"
LABEL org.opencontainers.image.source="https://gitea.rknet.org/container/lhci"
LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/container/lhci"
ARG BUILD_VERSION
ARG YQ_VERSION
# renovate: datasource=npm depName=@lhci/cli
ENV LHCI_VERSION="${BUILD_VERSION:-0.13.0}"
# renovate: datasource=github-releases depName=mikefarah/yq
ENV YQ_VERSION="${YQ_VERSION:-v4.44.1}"
ENV LHCI_BASE_DIR=/drone/src \
FORCE_COLOR=true \
NPM_CONFIG_LOGLEVEL=error \
PATH=/usr/bin:$PATH
ADD overlay/ /
RUN apt-get update && apt-get install -y git curl wget gnupg jq bash bc libc-bin libc6 && \
curl -SsfL -o /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64" && \
chmod 755 /usr/local/bin/yq && \
wget -qO - "https://dl-ssl.google.com/linux/linux_signing_key.pub" | apt-key add - && \
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | tee "/etc/apt/sources.list.d/google.list" && \
apt-get update && apt-get install --no-install-recommends -y google-chrome-stable && \
LHCI_VERSION="${LHCI_VERSION##v}" && \
echo "Installing lhci version '$LHCI_VERSION' ..." && \
npm install -g @lhci/cli@"$LHCI_VERSION"; \
npm install -g lighthouse && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /tmp/* && \
rm -rf /root/.cache/
USER root
CMD []
WORKDIR /drone/src
ENTRYPOINT ["/usr/bin/lhci", "autorun"]

51
Dockerfile Normal file
View File

@ -0,0 +1,51 @@
FROM node:10-alpine
# due to https://github.com/http-party/http-server/issues/537
LABEL maintainer="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.authors="Robert Kaussow <mail@thegeeklab.de>"
LABEL org.opencontainers.image.title="lhci"
LABEL org.opencontainers.image.url="https://gitea.rknet.org/docker/lhci"
LABEL org.opencontainers.image.source="https://gitea.rknet.org/docker/lhci"
LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/docker/lhci"
ARG BUILD_VERSION
ARG YQ_VERSION
# renovate: datasource=npm depName=@lhci/cli
ENV LHCI_VERSION="${BUILD_VERSION:-0.6.1}"
# renovate: datasource=github-releases depName=mikefarah/yq
ENV YQ_VERSION="${YQ_VERSION:-v4.1.0}"
ENV LHCI_BASE_DIR=/drone/src \
FORCE_COLOR=true \
NPM_CONFIG_LOGLEVEL=error \
PATH=/usr/bin:$PATH
ADD overlay/ /
RUN apk --update add --virtual .build-deps curl && \
echo @edge http://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \
echo @edge http://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
apk update && \
apk add --update --no-cache git chromium@edge jq && \
curl -SsL -o /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64" && \
chmod 755 /usr/local/bin/yq && \
LHCI_VERSION="${LHCI_VERSION##v}" && \
LHCI_MAJOR="${LHCI_VERSION%%.*}" && \
if [ -z "${LHCI_MAJOR//[0-9]}" ] && [ -n "$LHCI_MAJOR" ]; then \
echo "Installing lhci version '$LHCI_VERSION' ..." && \
npm install -g @lhci/cli@"$LHCI_VERSION"; \
else \
echo "Installing latest lhci ..." && \
npm install -g @lhci/cli; \
fi && \
npm install -g lighthouse && \
apk del .build-deps && \
rm -rf /var/cache/apk/* && \
rm -rf /tmp/* && \
rm -rf /root/.cache/
USER root
CMD []
WORKDIR /drone/src
ENTRYPOINT ["/usr/bin/lhci", "autorun"]

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

@ -2,17 +2,13 @@
Custom image for lighthouse-ci
<!-- spellchecker-disable -->
[![Build Status](https://ci.rknet.org/api/badges/container/lhci/status.svg)](https://ci.rknet.org/repos/container/lhci)
[![Build Status](https://img.shields.io/drone/build/docker/lhci?logo=drone&server=https%3A%2F%2Fdrone.rknet.org)](https://drone.rknet.org/docker/lhci)
[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/lhci)
[![Quay.io](https://img.shields.io/badge/quay-latest-blue.svg?logo=docker&logoColor=white)](https://quay.io/repository/thegeeklab/lhci)
[![Source: Gitea](https://img.shields.io/badge/source-gitea-blue.svg?logo=gitea&logoColor=white)](https://gitea.rknet.org/container/lhci)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitea.rknet.org/container/lhci/src/branch/main/LICENSE)
[![Source: Gitea](https://img.shields.io/badge/source-gitea-blue.svg?logo=gitea&logoColor=white)](https://gitea.rknet.org/docker/lhci)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitea.rknet.org/docker/lhci/src/branch/master/LICENSE)
<!-- spellchecker-enable -->
Custom container image for [lighthouse-ci](https://github.com/GoogleChrome/lighthouse-ci).
Custom wrapper Docker image for [lighthouse-ci](https://github.com/GoogleChrome/lighthouse-ci).
## Usage
@ -59,7 +55,7 @@ You will also get the target URLs in your CI output:
All results processed!
Dumping 6 reports to disk at /src/lhci_reports...
Dumping 6 reports to disk at /drone/src/lhci_reports...
Done writing reports to disk.
Done running autorun.
@ -71,16 +67,16 @@ Report for http://localhost:43901/posts/ will be uploaded to https://example.com
```
```Shell
docker run -v $(pwd)/public:/src lhci autorun
docker run -v $(pwd)/public:/drone/src lhci autorun
# or pass arguments to lhci
docker run -v $(pwd)/public:/src lhci autorun --upload.target=temporary-public-storage
docker run -v $(pwd)/public:/drone/src lhci autorun --upload.target=temporary-public-storage
```
## Environment variables
```Shell
LHCI_BASE_DIR="/src"
LHCI_BASE_DIR="/drone/src"
LHCI_SERVER_URL="https://example.com/"
```
@ -92,4 +88,4 @@ docker build -t lhci:latest .
## License
This project is licensed under the MIT License - see the [LICENSE](https://gitea.rknet.org/container/lhci/src/branch/main/LICENSE) file for details.
This project is licensed under the MIT License - see the [LICENSE](https://gitea.rknet.org/docker/lhci/src/branch/master/LICENSE) file for details.

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
set -eo pipefail
CONFIG="${LHCI_BASE_DIR%/}/.lighthouserc.yml"
@ -10,16 +10,16 @@ if [ -f "$CONFIG" ] && echo "$OUT" | grep -q "Done running Lighthouse"; then
UPLOAD_TARGET=$(yq e '.ci.upload.target // ""' "${CONFIG}")
UPLOAD_OUTPUT_DIR=$(yq e '.ci.upload.outputDir // ""' "${CONFIG}")
if [ "${UPLOAD_TARGET}" = "filesystem" ] && [ -n "${UPLOAD_OUTPUT_DIR}" ]; then
if [ "${UPLOAD_TARGET}" = "filesystem" ] && [ -n "${UPLOAD_OUTPUT_DIR}" ] ; then
MANIFEST=${UPLOAD_OUTPUT_DIR%/}/manifest.json
DIST="${LHCI_BASE_DIR%/}/${UPLOAD_OUTPUT_DIR%/}/dist"
mkdir -p "${DIST}"
if [ -f "$CONFIG" ]; then
cp /templates/summary.md "${DIST}/summary.md"
cp /templates/summary.md "${DIST}/summary.md"
printf "\nPost-process report files...\n"
for ITEM in $(jq -r '.[] | select( .isRepresentativeRun == true ) | @base64' <"${MANIFEST}"); do
for ITEM in $(jq -r '.[] | select( .isRepresentativeRun == true ) | @base64' < "${MANIFEST}"); do
JSON=$(echo "${ITEM}" | base64 -d)
FILE_DATE=$(date '+%Y%m%d%H%M')
@ -38,7 +38,7 @@ if [ -f "$CONFIG" ] && echo "$OUT" | grep -q "Done running Lighthouse"; then
cp "${FILENAME}" "${DIST}/${FILENAME_NEW}.html"
echo "Report for ${URL} will be uploaded to ${DOWNLOAD}"
echo "| [Link](${DOWNLOAD}) | \`${URL}\` | $(echo "scale=0;($PERF*100)/1" | bc) % | $(echo "scale=0;($ACCESS*100)/1" | bc) % | $(echo "scale=0;($PRACTICE*100)/1" | bc) % | $(echo "scale=0;($SEO*100)/1" | bc) % | $(echo "scale=0;($PWA*100)/1" | bc) % |" >>"${DIST}/summary.md"
echo "| [Link]("${DOWNLOAD}") | \`${URL}\` | $(echo "scale=0;($PERF*100)/1" | bc) % | $(echo "scale=0;($ACCESS*100)/1" | bc) % | $(echo "scale=0;($PRACTICE*100)/1" | bc) % | $(echo "scale=0;($SEO*100)/1" | bc) % | $(echo "scale=0;($PWA*100)/1" | bc) % |" >> "${DIST}/summary.md"
done
else
printf "\nPost-processing skipped. Manifest not found!\n"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
set -eo pipefail
exec /usr/local/bin/lhci "$@"

View File

@ -1,4 +1,16 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>thegeeklab/renovate-presets:docker"]
"extends": ["config:base"],
"ignorePresets": [":prHourlyLimit2"],
"regexManagers": [
{
"fileMatch": ["^Dockerfile$"],
"matchStrings": [
"# renovate: datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)( versioning=(?<versioning>.*?))?\\nENV .*?_VERSION=\"\\${.*:-(?<currentValue>.*)}\"\\s"
]
}
],
"droneci": {
"enabled": false
}
}

View File

@ -1,5 +0,0 @@
---
scan:
skip-files:
- /usr/local/bin/gomplate
- /usr/local/bin/yq