From f6866358374e846f42e67867cb431ad18bbdb24f Mon Sep 17 00:00:00 2001 From: Thomas Kolb Date: Tue, 27 Aug 2024 21:10:30 +0200 Subject: [PATCH] doc: automatic builds and deployment using Forgejo Actions Actions run in a custom Docker image built by the scripts in `doc/docker`. There are two jobs that run in sequence: - `build-doc`: builds the documentation from the AsciiDoc sources. - `deploy-doc`: Uploads the generated files to http://0fm.de --- .forgejo/workflows/doc.yaml | 24 ++++++++++++++++++++++++ doc/docker/Dockerfile | 16 ++++++++++++++++ doc/docker/build.sh | 8 ++++++++ doc/docker/test.sh | 8 ++++++++ doc/docker/upload.sh | 10 ++++++++++ 5 files changed, 66 insertions(+) create mode 100644 .forgejo/workflows/doc.yaml create mode 100644 doc/docker/Dockerfile create mode 100755 doc/docker/build.sh create mode 100755 doc/docker/test.sh create mode 100755 doc/docker/upload.sh diff --git a/.forgejo/workflows/doc.yaml b/.forgejo/workflows/doc.yaml new file mode 100644 index 0000000..827aefa --- /dev/null +++ b/.forgejo/workflows/doc.yaml @@ -0,0 +1,24 @@ +on: [push] +jobs: + build-doc: + runs-on: docker + container: + image: git.tkolb.de/amateurfunk/hamnet70/asciidoctor:1.6 + steps: + - uses: actions/checkout@v4 + - run: cd doc && make + - uses: actions/upload-artifact@v3 + with: + name: documentation + path: doc/out/ + deploy-doc: + needs: build-doc + runs-on: docker + container: + image: git.tkolb.de/amateurfunk/hamnet70/asciidoctor:1.6 + steps: + - run: mkdir ~/.ssh && echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_ed25519 && chmod 0600 ~/.ssh/id_ed25519 && echo "${{ secrets.SSH_KNOWN_HOST }}" > ~/.ssh/known_hosts + - uses: actions/download-artifact@v3 + with: + name: documentation + - run: 'rsync -e "ssh -p 2342" -r . deployment@tkolb.de:' diff --git a/doc/docker/Dockerfile b/doc/docker/Dockerfile new file mode 100644 index 0000000..60a0d7c --- /dev/null +++ b/doc/docker/Dockerfile @@ -0,0 +1,16 @@ +FROM debian:stable + +# for basic Forgejo + AsciiDoctor support +RUN apt update && apt install -y --no-install-recommends nodejs git ruby-rubygems make && apt clean + +RUN gem install asciidoctor asciidoctor-diagram + +# tools for diagram generation +RUN apt install -y --no-install-recommends mscgen && apt clean + +# tools for automatic deployment +RUN apt install -y --no-install-recommends rsync openssh-client && apt clean + +# run as unprivileged user in the container +RUN useradd -m ciuser +USER ciuser diff --git a/doc/docker/build.sh b/doc/docker/build.sh new file mode 100755 index 0000000..02cabee --- /dev/null +++ b/doc/docker/build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ -z "$1" ]; then + echo "usage: $0 " + exit 1 +fi + +docker build -t git.tkolb.de/amateurfunk/hamnet70/asciidoctor:$1 . diff --git a/doc/docker/test.sh b/doc/docker/test.sh new file mode 100755 index 0000000..1a22732 --- /dev/null +++ b/doc/docker/test.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ -z "$1" ]; then + echo "usage: $0 " + exit 1 +fi + +docker run -v $(realpath ..):/doc -it git.tkolb.de/amateurfunk/hamnet70/asciidoctor:$1 diff --git a/doc/docker/upload.sh b/doc/docker/upload.sh new file mode 100755 index 0000000..1733dce --- /dev/null +++ b/doc/docker/upload.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +if [ -z "$1" ]; then + echo "usage: $0 " + exit 1 +fi + +docker login +docker push git.tkolb.de/amateurfunk/hamnet70/asciidoctor:$1 +docker logout