Initial commit.
This commit is contained in:
78
.gitea/workflows/release.yml
Normal file
78
.gitea/workflows/release.yml
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
name: Build vzlogger image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
schedule:
|
||||||
|
# Run every Sunday at midnight
|
||||||
|
- cron: '0 0 * * 0'
|
||||||
|
|
||||||
|
env:
|
||||||
|
IMAGE: /home/vzlogger
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Build-and-release-image:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: catthehacker/ubuntu:act-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERHUB_USER }}
|
||||||
|
password: ${{ vars.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log into CS registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.CS_REGISTRY_URL }}
|
||||||
|
username: ${{ vars.CS_REGISTRY_USER }}
|
||||||
|
password: ${{ vars.CS_REGISTRY_PASS }}
|
||||||
|
|
||||||
|
- name: Log into local registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.LOCAL_REGISTRY_URL }}
|
||||||
|
username: ${{ vars.LOCAL_REGISTRY_USER }}
|
||||||
|
password: ${{ vars.LOCAL_REGISTRY_PASS }}
|
||||||
|
|
||||||
|
- name: Extract Docker metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ secrets.REGISTRY_URL }}${{ env.IMAGE }}
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
env:
|
||||||
|
ACTIONS_RUNTIME_TOKEN: ''
|
||||||
|
with:
|
||||||
|
tags: ${{ vars.LOCAL_REGISTRY_URL }}${{ env.IMAGE }}:latest
|
||||||
|
push: true
|
||||||
|
|
||||||
|
- name: Scan image
|
||||||
|
uses: anchore/scan-action@v6
|
||||||
|
id: scan
|
||||||
|
with:
|
||||||
|
image: ${{ vars.LOCAL_REGISTRY_URL }}${{ env.IMAGE }}:latest
|
||||||
|
fail-build: false
|
||||||
|
output-format: table
|
||||||
|
severity-cutoff: critical
|
||||||
|
registry-username: ${{ vars.LOCAL_REGISTRY_USER }}
|
||||||
|
registry-password: ${{ vars.LOCAL_REGISTRY_PASS }}
|
||||||
|
grype-version: 'v0.90.0'
|
||||||
|
|
||||||
|
- name: Inspect file
|
||||||
|
run: cat ${{ steps.scan.outputs.table }}
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: scan-result
|
||||||
|
path: ${{ steps.scan.outputs.table }}
|
||||||
82
Dockerfile
Normal file
82
Dockerfile
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
############################
|
||||||
|
# STEP 1 build executable binary
|
||||||
|
############################
|
||||||
|
|
||||||
|
FROM alpine:latest AS builder
|
||||||
|
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
libc-dev \
|
||||||
|
linux-headers \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
cmake \
|
||||||
|
curl-dev \
|
||||||
|
gnutls-dev \
|
||||||
|
cyrus-sasl-dev \
|
||||||
|
# for libuuid
|
||||||
|
util-linux-dev \
|
||||||
|
libtool \
|
||||||
|
libgcrypt-dev \
|
||||||
|
libmicrohttpd-dev \
|
||||||
|
json-c-dev \
|
||||||
|
mosquitto-dev \
|
||||||
|
libunistring-dev \
|
||||||
|
automake \
|
||||||
|
autoconf \
|
||||||
|
gtest-dev
|
||||||
|
|
||||||
|
WORKDIR /vzlogger
|
||||||
|
|
||||||
|
RUN git clone https://github.com/volkszaehler/libsml.git --depth 1 \
|
||||||
|
&& make install -C libsml/sml
|
||||||
|
|
||||||
|
RUN git clone https://github.com/rscada/libmbus.git --depth 1 \
|
||||||
|
&& cd libmbus \
|
||||||
|
&& ./build.sh \
|
||||||
|
&& make install
|
||||||
|
|
||||||
|
COPY . /vzlogger
|
||||||
|
|
||||||
|
ARG build_test=off
|
||||||
|
RUN cmake -DBUILD_TEST=${build_test} \
|
||||||
|
&& make -j $(nproc --all || echo 1) \
|
||||||
|
&& make install \
|
||||||
|
&& if [ "$build_test" != "off" ]; then make test; fi
|
||||||
|
|
||||||
|
|
||||||
|
#############################
|
||||||
|
## STEP 2 build a small image
|
||||||
|
#############################
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
LABEL Description="vzlogger"
|
||||||
|
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
libcurl \
|
||||||
|
gnutls \
|
||||||
|
libsasl \
|
||||||
|
libuuid \
|
||||||
|
libgcrypt \
|
||||||
|
libmicrohttpd \
|
||||||
|
json-c \
|
||||||
|
libatomic \
|
||||||
|
mosquitto-libs \
|
||||||
|
libunistring \
|
||||||
|
libstdc++ \
|
||||||
|
libgcc
|
||||||
|
|
||||||
|
# libsml is linked statically => no need to copy
|
||||||
|
COPY --from=builder /usr/local/bin/vzlogger /usr/local/bin/vzlogger
|
||||||
|
COPY --from=builder /usr/local/lib/libmbus.so* /usr/local/lib/
|
||||||
|
COPY ./vzlogger.conf /cfg
|
||||||
|
|
||||||
|
# without running a user context, no exec is possible and without the dialout group no access to usb ir reader possible
|
||||||
|
RUN adduser -S vz -G dialout
|
||||||
|
|
||||||
|
RUN vzlogger --version
|
||||||
|
|
||||||
|
USER vz
|
||||||
|
CMD ["vzlogger", "--foreground"]
|
||||||
33
vzlogger.conf
Normal file
33
vzlogger.conf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"retry": 0, /* sleep between failed requests (seconds) */
|
||||||
|
"daemon": true, /* run as deamon*/
|
||||||
|
"verbosity": 2, /* Loglevel between 0 (nothing) and 15 (higest) */
|
||||||
|
"log": "/var/log/vzlogger.log", /* logfile path */
|
||||||
|
"local": {
|
||||||
|
"enabled": false, /* Enable / Disable local HTTP-Server for serving live readings */
|
||||||
|
"port": 8080, /* TCP port for the local HTTP-Server */
|
||||||
|
"index": true, /* Provide a index listing of available channels */
|
||||||
|
"timeout": 30, /* timeout for long polling requests (seconds) */
|
||||||
|
"buffer": 600 /* Buffer reading for the local interface (seconds) */
|
||||||
|
},
|
||||||
|
"meters": [
|
||||||
|
{
|
||||||
|
"enabled": true, /* disable or enable meter */
|
||||||
|
"protocol": "sml", /* use 'vzlogger -h' for available protocols */
|
||||||
|
"device": "/dev/ttyUSB0", /* Serial Port of Photodiod */
|
||||||
|
"channels": [
|
||||||
|
{
|
||||||
|
"uuid": "ac9dc6a0-dbfc-11ee-8e1d-2bb051f0ef2a", /* UUID von dem angelegten Channel für 1.8.0 */
|
||||||
|
"middleware": "http://localhost/middleware.php", /* Server Adresse der Middleware, läuft bei uns auf dem RasPi mit */
|
||||||
|
"identifier": "1-0:1.8.0" /* Die OBIS Kennzahl welche an den Channel gesendet wird - hier Bezug Tarif 1 */
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"uuid": "27260d00-dbfc-11ee-af9d-594b1762c0d0",
|
||||||
|
"middleware": "http://localhost/middleware.php",
|
||||||
|
"identifier": "1-0:16.7.0" /* Aktuelle Leistung */
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user