Compare commits

...

14 Commits

Author SHA1 Message Date
b66dac1342 docs(README): use git.cryptic.systems instead of docker.io
All checks were successful
Lint Markdown files / markdown-lint (push) Successful in 15s
Build / build-arch-linux (push) Successful in 2m13s
2025-05-13 18:55:11 +02:00
6f4e26d27a docs(README): migrate from docker.io to git.cryptic.systems
All checks were successful
Lint Markdown files / markdown-lint (push) Successful in 16s
Update Docker Hub Description / update-description-on-hub-docker-io (push) Successful in 13s
Build / build-arch-linux (push) Successful in 11m39s
2025-05-12 18:19:07 +02:00
94a88ca4eb fix: remove texlive-most
Some checks failed
Lint Markdown files / markdown-lint (push) Successful in 16s
Build / build-arch-linux (push) Has been cancelled
2025-05-12 18:05:28 +02:00
458bee010a fix(ci): replace drone with gitea actions
Some checks failed
Lint Markdown files / markdown-lint (push) Successful in 13s
Update Docker Hub Description / update-description-on-hub-docker-io (push) Successful in 10s
Build / build-arch-linux (push) Failing after 15m2s
2025-05-09 11:38:53 +02:00
c9163f2360 style(markdownlint): update configuration 2025-05-09 11:27:51 +02:00
4032897913 docs(README): remove drone badge 2025-05-08 21:47:25 +02:00
2e94c19840 chore(ci): use upstream container image registry
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2025-04-02 21:32:02 +02:00
9b503252f4 chore(ci): use container image mirror
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2025-04-02 09:54:30 +02:00
63fd6810bf feat(ci): use git.cryptic.systems/volker.raschek/markdownlint v0.33.0
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-08 19:38:44 +02:00
9696d303c9 fix: remove arch linux pkgs from cache
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-08 18:34:14 +02:00
01ddea84ec fix(ci): resource limits
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2022-05-22 13:09:39 +02:00
59fd1c360e fix(ci): use fully qualified image name
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2022-05-22 13:01:59 +02:00
45b0f0abb0 fix(ci): use gitea to sync repo with github
Some checks failed
continuous-integration/drone/push Build is failing
2022-05-03 17:43:28 +02:00
c8488d5ab3 fix: install correct pygments package for debian and ubuntu
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-03 22:30:37 +01:00
14 changed files with 188 additions and 587 deletions

View File

@@ -1,408 +0,0 @@
---
kind: pipeline
type: kubernetes
name: linter
platform:
os: linux
arch: amd64
steps:
- name: markdown lint
commands:
- markdownlint *.md
image: docker.io/volkerraschek/markdownlint:0.30.0
resources:
limits:
cpu: 50
memory: 50M
- name: email-notification
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
image: docker.io/drillster/drone-email:latest
resources:
limits:
cpu: 50
memory: 25M
when:
status:
- changed
- failure
trigger:
event:
exclude:
- tag
---
kind: pipeline
type: docker
name: archlinux
platform:
os: linux
arch: amd64
steps:
- name: archlinux
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh archlinux latest
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
trigger:
when:
branch:
- master
event:
- push
- cron
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: centos
platform:
os: linux
arch: amd64
steps:
- name: centos7
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh centos 7
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
trigger:
when:
branch:
- master
event:
- push
- cron
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: debian
platform:
os: linux
arch: amd64
steps:
- name: 8-slim
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh debian 8-slim
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: 9-slim
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh debian 9-slim
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: 10-slim
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh debian 10-slim
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: 11-slim
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh debian 11-slim
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
trigger:
when:
branch:
- master
event:
- push
- cron
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: fedora
platform:
os: linux
arch: amd64
steps:
- name: fedora-33
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh fedora 33
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: fedora-34
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh fedora 34
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
trigger:
when:
branch:
- master
event:
- push
- cron
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: ubuntu
platform:
os: linux
arch: amd64
steps:
- name: ubuntu-16.04
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh ubuntu 16.04
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: ubuntu-18.04
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh ubuntu 18.04
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: ubuntu-20.04
image: docker.io/volkerraschek/build-image:latest
commands:
- ./build.sh ubuntu 20.04
environment:
CONTAINER_IMAGE_REGISTRY_PASSWORD:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: notify
image: drillster/drone-email
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
when:
status:
- changed
- failure
trigger:
when:
branch:
- master
event:
- push
- cron
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
---
kind: pipeline
type: kubernetes
name: sync
platform:
os: linux
arch: amd64
steps:
- name: github
image: docker.io/appleboy/drone-git-push:latest
resources:
limits:
cpu: 50
memory: 25M
settings:
branch: master
remote: ssh://git@github.com/volker-raschek/latex-docker.git
force: true
ssh_key:
from_secret: ssh_key
- name: email-notification
environment:
PLUGIN_HOST:
from_secret: smtp_host
PLUGIN_USERNAME:
from_secret: smtp_username
PLUGIN_PASSWORD:
from_secret: smtp_password
PLUGIN_FROM:
from_secret: smtp_mail_address
image: docker.io/drillster/drone-email:latest
resources:
limits:
cpu: 50
memory: 25M
when:
status:
- changed
- failure
trigger:
event:
- push
repo:
- volker.raschek/latex-docker

View File

@@ -0,0 +1,29 @@
name: Build
on:
pull_request:
types:
- opened
- reopened
- synchronize
push:
branches:
- master
workflow_dispatch: {}
jobs:
build-arch-linux:
runs-on: ubuntu-latest-amd64
steps:
- uses: actions/checkout@v4.2.2
- uses: docker/setup-qemu-action@v3.6.0
- uses: docker/setup-buildx-action@v3.10.0
- name: Build image
run: |
TAG=latest
docker buildx build \
--file Dockerfile.archlinux \
--tag git.cryptic.systems/volker.raschek/latex:${TAG}-archlinux \
.

View File

@@ -0,0 +1,22 @@
name: 'Lint Markdown files'
on:
pull_request:
types:
- opened
- reopened
- synchronize
push:
branches:
- master
workflow_dispatch: {}
jobs:
markdown-lint:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: DavidAnson/markdownlint-cli2-action@v19.1.0
with:
globs: '**/*.md'

View File

@@ -0,0 +1,53 @@
name: Release
on:
push:
tags:
- "**"
jobs:
push-arch-linux:
runs-on: ubuntu-latest-amd64
steps:
- uses: actions/checkout@v4.2.2
- uses: docker/setup-qemu-action@v3.6.0
- uses: docker/setup-buildx-action@v3.10.0
- uses: docker/login-action@v3.4.0
with:
registry: git.cryptic.systems
username: ${{ github.repository_owner }}
password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
- name: Build and push image
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
docker buildx build \
--file Dockerfile.archlinux \
--push \
--tag git.cryptic.systems/volker.raschek/latex:${TAG}-archlinux \
.
sync-to-hub-docker-io:
needs:
- push-arch-linux
runs-on: ubuntu-latest
steps:
- name: Copy images to docker.io
run: |
TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
apt-get update --yes
apt-get install --yes skopeo
for suffix in archlinux; do
skopeo copy \
--all \
--dest-password ${{ secrets.DOCKER_IO_PASSWORD }} \
--dest-username ${{ secrets.DOCKER_IO_USERNAME }} \
--src-password ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} \
--src-username volker.raschek \
docker://git.cryptic.systems/volker.raschek/latex:${TAG}-${suffix} \
docker://docker.io/volkerraschek/latex:${TAG}-${suffix}
done

View File

@@ -0,0 +1,22 @@
name: Update Docker Hub Description
on:
push:
branches:
- master
paths:
- README.md
workflow_dispatch: {}
jobs:
update-description-on-hub-docker-io:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: peter-evans/dockerhub-description@v4.0.2
with:
username: ${{ secrets.DOCKER_IO_USERNAME }}
password: ${{ secrets.DOCKER_IO_PASSWORD }}
repository: volkerraschek/latex
readme-filepath: README.md

View File

@@ -45,19 +45,17 @@ MD012:
# MD013/line-length - Line length
MD013:
# Number of characters
line_length: 80
line_length: 120
# Number of characters for headings
heading_line_length: 80
heading_line_length: 120
# Number of characters for code blocks
code_block_line_length: 80
code_block_line_length: 120
# Include code blocks
code_blocks: false
# Include tables
tables: false
# Include headings
headings: true
# Include headings
headers: true
# Strict length checking
strict: false
# Stern length checking
@@ -70,11 +68,6 @@ MD022:
# Blank lines below heading
lines_below: 1
# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
MD024:
# Only check sibling headings
allow_different_nesting: true
# MD025/single-title/single-h1 - Multiple top-level headings in the same document
MD025:
# Heading level
@@ -129,7 +122,6 @@ MD041:
MD044:
# List of proper names
names: []
# - some-thing
# Include code blocks
code_blocks: false

View File

@@ -1,4 +1,3 @@
# Base-Image
FROM docker.io/library/archlinux:latest
# Labels
@@ -14,8 +13,8 @@ RUN pacman --sync --noconfirm \
make \
python-pygments \
texlive-bin \
texlive-lang \
texlive-most
texlive-lang && \
rm --recursive --force /var/cache/pacman/pkg
ENV PATH=/usr/bin/vendor_perl:${PATH}

View File

@@ -1,25 +0,0 @@
# Build-Arguments
ARG TAG=latest
# Base-Image
FROM docker.io/library/centos:${TAG}
# Labels
LABEL maintainer="Markus Pesch <markus.pesch@cryptic.systems>"
# Runs
RUN yum update --assumeyes
RUN yum install --assumeyes \
biber \
curl \
git \
gnuplot \
latexmk \
make \
python-pygments \
texlive \
texlive-*.noarch
# Workspace
WORKDIR /workspace
VOLUME [ "/workspace" ]

View File

@@ -1,34 +0,0 @@
# Build-Arguments
ARG TAG=latest
# Base-Image
FROM docker.io/library/debian:${TAG}
# Labels
LABEL maintainer="Markus Pesch <markus.pesch@cryptic.systems>"
# Environment
ENV DEBIAN_FRONTEND="noninteractive"
# Runs
RUN apt-get update
RUN apt-get upgrade --yes
RUN apt-get install --yes \
biber \
curl \
git \
gnuplot \
latexmk \
make \
texlive-full
# version specific packages
RUN if [ $(cat /etc/debian_version) != "11.0" ]; then apt-get install --yes python-pygments; fi
RUN if [ $(cat /etc/debian_version) = "11.0" ]; then apt-get install --yes python3-pygments; fi
# remove dpkg lists
RUN rm --recursive --force /var/lib/apt/lists/*
# Workspace
WORKDIR /workspace
VOLUME [ "/workspace" ]

View File

@@ -1,26 +0,0 @@
# Build-Arguments
ARG TAG=latest
# Base-Image
FROM docker.io/library/fedora:${TAG}
# Labels
LABEL maintainer="Markus Pesch <markus.pesch@cryptic.systems>"
# Runs
RUN yum update --assumeyes
RUN yum install --assumeyes \
biber \
curl \
git \
gnuplot \
latexmk \
make \
python-pygments \
texlive-collection-bibtexextra \
texlive-collection-fontutils \
texlive-collection-langeuropean
# Workspace
WORKDIR /workspace
VOLUME [ "/workspace" ]

View File

@@ -1,35 +0,0 @@
# Build-Arguments
ARG TAG=latest
# Base-Image
FROM docker.io/library/ubuntu:${TAG}
# Labels
LABEL maintainer="Markus Pesch <markus.pesch@cryptic.systems>"
# Environment
ENV DEBIAN_FRONTEND="noninteractive"
# Runs
RUN apt-get update
RUN apt-get upgrade --yes
RUN apt-get install --yes \
biber \
curl \
git \
gnuplot \
latexmk \
make \
texlive-full \
xindy
# version specific packages
RUN if [ $(cat /etc/debian_version) != "bullseye/sid" ]; then apt-get install --yes python-pygments; fi
RUN if [ $(cat /etc/debian_version) = "bullseye/sid" ]; then apt-get install --yes python3-pygments; fi
# remove dpkg lists
RUN rm --recursive --force /var/lib/apt/lists/*
# Workspace
WORKDIR /workspace
VOLUME [ "/workspace" ]

42
Makefile Normal file
View File

@@ -0,0 +1,42 @@
# CONTAINER_RUNTIME
# The CONTAINER_RUNTIME variable will be used to specified the path to a
# container runtime. This is needed to start and run a container image.
CONTAINER_RUNTIME?=$(shell which podman)
# ArchLinux
LATEX_IMAGE_REGISTRY_HOST?=git.cryptic.systems
LATEX_IMAGE_REGISTRY_USER?=volker.raschek
LATEX_IMAGE_NAMESPACE?=${LATEX_IMAGE_REGISTRY_USER}
LATEX_IMAGE_REPOSITORY:=latex
LATEX_IMAGE_VERSION?=latest
LATEX_IMAGE_FULLY_QUALIFIED=${LATEX_IMAGE_REGISTRY_HOST}/${LATEX_IMAGE_NAMESPACE}/${LATEX_IMAGE_REPOSITORY}:${LATEX_IMAGE_VERSION}
# BUILD LATEX CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/build/arch-linux
container-image/build/arch-linux:
${CONTAINER_RUNTIME} build \
--file Dockerfile.archlinux \
--no-cache \
--pull \
--tag ${LATEX_IMAGE_FULLY_QUALIFIED} \
.
# DELETE LATEX CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/delete/arch-linux
container-image/delete/arch-linux:
- ${CONTAINER_RUNTIME} image rm ${LATEX_IMAGE_FULLY_QUALIFIED}
# PUSH LATEX CONTAINER IMAGE
# ==============================================================================
PHONY+=container-image/push/arch-linux
container-image/push/arch-linux:
echo ${LATEX_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${LATEX_IMAGE_REGISTRY_HOST} --username ${LATEX_IMAGE_REGISTRY_USER} --password-stdin
${CONTAINER_RUNTIME} push ${LATEX_IMAGE_FULLY_QUALIFIED}
# PHONY
# ==============================================================================
# Declare the contents of the PHONY variable as phony. We keep that information
# in a variable so we can use it in if_changed.
.PHONY: ${PHONY}

View File

@@ -1,47 +1,34 @@
# Docker Latex
# Latex
[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/latex-docker/status.svg)](https://drone.cryptic.systems/volker.raschek/latex-docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/latex)](https://hub.docker.com/r/volkerraschek/latex)
This repository, hosted on
[git.cryptic.systems](https://git.cryptic.systems/volker.raschek/latex-docker),
contains Dockerfiles to build different container images based on differend base
images. Any container image has the tex compiler and the minted package
included. Throught this are all container images able to compile tex source code
with source code highlighting.
The repository, hosted on [git.cryptic.systems](https://git.cryptic.systems/volker.raschek/latex-docker), contains
Dockerfiles to build container images based on different base images. Any container image has the tex compiler and the
minted package included. The main goal of all container image is to compile the text source code with highlighting
provided by minted into a PDF file.
## Images
Available Images:
- volkerraschek/latex:latest-archlinux
- volkerraschek/latex:latest-debian8-slim
- volkerraschek/latex:latest-debian9-slim
- volkerraschek/latex:latest-debian10-slim
- volkerraschek/latex:latest-fedora-30
- volkerraschek/latex:latest-fedora-31
- volkerraschek/latex:latest-centos-7
- volkerraschek/latex:latest-ubuntu-16.04
- volkerraschek/latex:latest-ubuntu-18.04
- volkerraschek/latex:latest-ubuntu-20.04
- `git.cryptic.systems/volker.raschek/latex:latest-archlinux`
You can find a complete list of all docker images based on different
distributions on [Docker Hub](https://hub.docker.com/r/volkerraschek/latex-docker/tags).
You can find a complete list of all docker images based on different distributions on [Docker
Hub](https://hub.docker.com/r/volkerraschek/latex-docker/tags).
## Usage
### Latexmk
Here is an example based on ubuntu 18.04 to compile a PDF file with `latexmk`
from `index.tex`. Run this command in your root directory of your Latex files or
change the `volume` option with the `${PWD}` variable.
Here is an example based on ubuntu 18.04 to compile a PDF file with `latexmk` from `index.tex`. Run this command in your
root directory of your Latex files or change the `volume` option with the `${PWD}` variable.
```bash
$ docker run \
--rm \
--user="$(shell id -u):$(shell id -g)" \
--net="none" \
--volume="${PWD}:/workspace" volkerraschek/latex:latest-ubuntu-18.04 \
--volume="${PWD}:/workspace" git.cryptic.systems/volker.raschek/latex:latest-archlinux \
latexmk \
-shell-escape \
-synctex=1 \
@@ -52,16 +39,15 @@ $ docker run \
### pdflatex
Here is a example based on ubuntu 18.04 to compile a PDF file with `pdflatex`
from `index.tex`. Run this command in your root directory of your Latex files
or change the `volume` option with the `${PWD}` variable.
Here is a example based on ubuntu 18.04 to compile a PDF file with `pdflatex` from `index.tex`. Run this command in
your root directory of your Latex files or change the `volume` option with the `${PWD}` variable.
```bash
$ docker run \
--rm \
--user="$(shell id -u):$(shell id -g)" \
--net="none" \
--volume="${PWD}:/workspace" volkerraschek/latex:latest-ubuntu-18.04 \
--volume="${PWD}:/workspace" git.cryptic.systems/volker.raschek/latex:latest-archlinux \
pdflatex \
-shell-escape \
-synctex=1 \

View File

@@ -1,16 +0,0 @@
#!/bin/bash
set -ex
OS=${1:-archlinux}
VERSION=${2:-latest}
TAG=latest-${OS}-${VERSION}
if [ "${OS}" = "archlinux" ]; then
TAG=latest-${OS}
fi
docker build --build-arg TAG=${VERSION} --file Dockerfile.${OS} --tag volkerraschek/latex:${TAG} .
echo ${CONTAINER_IMAGE_REGISTRY_PASSWORD} | docker login docker.io --username volkerraschek --password-stdin
docker push volkerraschek/latex:${TAG}
docker image rm volkerraschek/latex:${TAG}