Initial Commit
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
Markus Pesch 2022-08-21 18:28:39 +02:00
commit d4d2191284
Signed by: volker.raschek
GPG Key ID: 852BCC170D81A982
13 changed files with 852 additions and 0 deletions

0
.dockerignore Normal file
View File

513
.drone.yml Normal file
View File

@ -0,0 +1,513 @@
---
kind: pipeline
type: kubernetes
name: linter
platform:
os: linux
steps:
- name: markdown lint
commands:
- markdownlint *.md
image: docker.io/volkerraschek/markdownlint:0.32.1
resources:
limits:
cpu: 150
memory: 150M
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
trigger:
event:
exclude:
- tag
---
kind: pipeline
type: docker
name: dry-run-amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
auto_tag: false
dockerfile: Dockerfile
dry_run: true
force_tag: true
no_cache: true
purge: true
repo: volkerraschek/mkisofs
tags: latest-amd64
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: docker
name: dry-run-arm64-v8
platform:
os: linux
arch: arm64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
auto_tag: false
dockerfile: Dockerfile
dry_run: true
force_tag: true
no_cache: true
purge: true
repo: volkerraschek/mkisofs
tags: latest-arm64-v8
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
exclude:
- master
event:
- pull_request
- push
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: docker
name: latest-amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
auto_tag: false
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
repo: volkerraschek/mkisofs
tags: latest-amd64
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: docker
name: latest-arm64-v8
platform:
os: linux
arch: arm64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
auto_tag: false
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
repo: volkerraschek/mkisofs
tags: latest-arm64-v8
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
depends_on:
- linter
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: kubernetes
name: latest-manifest
steps:
- name: build-manifest
image: docker.io/plugins/manifest:latest
settings:
auto_tag: false
ignore_missing: true
spec: manifest.tmpl
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
depends_on:
- latest-amd64
- latest-arm64-v8
trigger:
branch:
- master
event:
- cron
- push
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: docker
name: tagged-amd64
platform:
os: linux
arch: amd64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
auto_tag_suffix: amd64
auto_tag: true
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
repo: volkerraschek/mkisofs
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
build_args:
- CEATEREPO_VERSION=${DRONE_TAG}
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
trigger:
event:
- tag
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: docker
name: tagged-arm64-v8
platform:
os: linux
arch: arm64
steps:
- name: build
image: docker.io/plugins/docker:latest
settings:
auto_tag_suffix: arm64-v8
auto_tag: true
dockerfile: Dockerfile
force_tag: true
no_cache: true
purge: true
repo: volkerraschek/mkisofs
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
build_args:
- CEATEREPO_VERSION=${DRONE_TAG}
volumes:
- name: docker_socket
path: /var/run/docker.sock
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
when:
status:
- changed
- failure
volumes:
- name: docker_socket
host:
path: /var/run/docker.sock
trigger:
event:
- tag
repo:
- volker.raschek/mkisofs-docker
---
kind: pipeline
type: kubernetes
name: tagged-manifest
steps:
- name: build-manifest
image: docker.io/plugins/manifest:latest
settings:
auto_tag: true
ignore_missing: true
spec: manifest.tmpl
username:
from_secret: container_image_registry_user
password:
from_secret: container_image_registry_password
- name: email-notification
environment:
SMTP_FROM_ADDRESS:
from_secret: smtp_from_address
SMTP_FROM_NAME:
from_secret: smtp_from_name
SMTP_HOST:
from_secret: smtp_host
SMTP_USERNAME:
from_secret: smtp_username
SMTP_PASSWORD:
from_secret: smtp_password
image: docker.io/volkerraschek/drone-email:0.1.1
resources:
limits:
cpu: 150
memory: 150M
when:
status:
- changed
- failure
depends_on:
- tagged-amd64
- tagged-arm64-v8
trigger:
event:
- tag
repo:
- volker.raschek/mkisofs-docker

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false
[Makefile]
indent_style = tab

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
Makefile eol=lf

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# IntelliJ
.idea/

144
.markdownlint.yaml Normal file
View File

@ -0,0 +1,144 @@
# markdownlint YAML configuration
# https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml
# Default state for all rules
default: true
# Path to configuration file to extend
extends: null
# MD003/heading-style/header-style - Heading style
MD003:
# Heading style
style: "atx"
# MD004/ul-style - Unordered list style
MD004:
style: "dash"
# MD007/ul-indent - Unordered list indentation
MD007:
# Spaces for indent
indent: 2
# Whether to indent the first level of the list
start_indented: false
# MD009/no-trailing-spaces - Trailing spaces
MD009:
# Spaces for line break
br_spaces: 2
# Allow spaces for empty lines in list items
list_item_empty_lines: false
# Include unnecessary breaks
strict: false
# MD010/no-hard-tabs - Hard tabs
MD010:
# Include code blocks
code_blocks: true
# MD012/no-multiple-blanks - Multiple consecutive blank lines
MD012:
# Consecutive blank lines
maximum: 1
# MD013/line-length - Line length
MD013:
# Number of characters
line_length: 80
# Number of characters for headings
heading_line_length: 80
# Number of characters for code blocks
code_block_line_length: 80
# 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
stern: false
# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
MD022:
# Blank lines above heading
lines_above: 1
# 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
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD026/no-trailing-punctuation - Trailing punctuation in heading
MD026:
# Punctuation characters
punctuation: ".,;:!。,;:!"
# MD029/ol-prefix - Ordered list item prefix
MD029:
# List style
style: "one_or_ordered"
# MD030/list-marker-space - Spaces after list markers
MD030:
# Spaces for single-line unordered list items
ul_single: 1
# Spaces for single-line ordered list items
ol_single: 1
# Spaces for multi-line unordered list items
ul_multi: 1
# Spaces for multi-line ordered list items
ol_multi: 1
# MD033/no-inline-html - Inline HTML
MD033:
# Allowed elements
allowed_elements: []
# MD035/hr-style - Horizontal rule style
MD035:
# Horizontal rule style
style: "---"
# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
MD036:
# Punctuation characters
punctuation: ".,;:!?。,;:!?"
# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
MD041:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD044/proper-names - Proper names should have the correct capitalization
MD044:
# List of proper names
names:
- create-repo
# Include code blocks
code_blocks: false
# MD046/code-block-style - Code block style
MD046:
# Block style
style: "fenced"
# MD048/code-fence-style - Code fence style
MD048:
# Code fence syle
style: "backtick"

14
Dockerfile Normal file
View File

@ -0,0 +1,14 @@
FROM docker.io/library/rockylinux:9.0
ARG MKISOFS_VERSION
RUN yum update --assumeyes && \
yum install --assumeyes bash curl
RUN if [ -z ${MKISOFS_VERSION+x} ]; then \
yum install --assumeyes xorriso; \
else \
yum install --assumeyes xorriso-${MKISOFS_VERSION}; \
fi
ENTRYPOINT [ "/usr/bin/xorriso" ]

13
LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright 2022 Markus Pesch
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

52
Makefile Normal file
View File

@ -0,0 +1,52 @@
# MKISOFS_VERSION
# Only required to install a specifiy version
MKISOFS_VERSION?=1.5.4
# 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)
# MKISOFS_IMAGE_REGISTRY_NAME
# Defines the name of the new container to be built using several variables.
MKISOFS_IMAGE_REGISTRY_NAME:=docker.io
MKISOFS_IMAGE_REGISTRY_USER:=volkerraschek
MKISOFS_IMAGE_NAMESPACE?=${MKISOFS_IMAGE_REGISTRY_USER}
MKISOFS_IMAGE_NAME:=mkisofs
MKISOFS_IMAGE_VERSION?=latest
MKISOFS_IMAGE_FULLY_QUALIFIED=${MKISOFS_IMAGE_REGISTRY_NAME}/${MKISOFS_IMAGE_NAMESPACE}/${MKISOFS_IMAGE_NAME}:${MKISOFS_IMAGE_VERSION}
MKISOFS_IMAGE_UNQUALIFIED=${MKISOFS_IMAGE_NAMESPACE}/${MKISOFS_IMAGE_NAME}:${MKISOFS_IMAGE_VERSION}
# BUILD CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/build
container-image/build:
${CONTAINER_RUNTIME} build \
--build-arg MKISOFS_VERSION=${MKISOFS_VERSION} \
--file Dockerfile \
--no-cache \
--pull \
--tag ${MKISOFS_IMAGE_FULLY_QUALIFIED} \
--tag ${MKISOFS_IMAGE_UNQUALIFIED} \
.
# DELETE CONTAINER IMAGE
# ==============================================================================
PHONY:=container-image/delete
container-image/delete:
- ${CONTAINER_RUNTIME} image rm ${MKISOFS_IMAGE_FULLY_QUALIFIED} ${MKISOFS_IMAGE_UNQUALIFIED}
- ${CONTAINER_RUNTIME} image rm ${BASE_IMAGE_FULL}
# PUSH CONTAINER IMAGE
# ==============================================================================
PHONY+=container-image/push
container-image/push:
echo ${MKISOFS_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${MKISOFS_IMAGE_REGISTRY_NAME} --username ${MKISOFS_IMAGE_REGISTRY_USER} --password-stdin
${CONTAINER_RUNTIME} push ${MKISOFS_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}

31
README.md Normal file
View File

@ -0,0 +1,31 @@
# mkisofs-docker
[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/mkisofs-docker/status.svg)](https://drone.cryptic.systems/volker.raschek/mkisofs-docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/mkisofs)](https://hub.docker.com/r/volkerraschek/mkisofs)
This project contains all sources to build the container image
`docker.io/volkerraschek/mkisofs` and the shell script `mkisofs.sh`.
The primary goal of this project is to package the binary `mkisofs` and
dependencies as container image to provide the functionally for CI/CD workflows
or for systems which does contains the binary.
## mkisofs.sh
The shell script `mkisofs.sh` is a wrapper for the binary `mkisofs`, which
is not available depending on the distribution. It starts the container image
`docker.io/volkerraschek/mkisofs` in the background to call the binary. For
this reason, a container runtime like `docker` or `podman` is necessary.
### Installation
The script can be installed via the following command:
```bash
curl https://git.cryptic.systems/volker.raschek/mkisofs-docker/raw/branch/master/mkisofs.sh --output - | sudo tee /usr/local/bin/mkisofs.sh && sudo chmod +x /usr/local/bin/mkisofs.sh
```
### Usage
The script forwards all arguments directly to the binary running inside the
container. For this reason, all arguments from the original binary can be used.

20
manifest.tmpl Normal file
View File

@ -0,0 +1,20 @@
image: volkerraschek/mkisofs:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
{{#if build.tags}}
tags:
{{#each build.tags}}
- {{this}}
{{/each}}
- "latest"
{{/if}}
manifests:
-
image: volkerraschek/mkisofs:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-amd64
platform:
architecture: amd64
os: linux
-
image: volkerraschek/mkisofs:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm64-v8
platform:
architecture: arm64
os: linux
variant: v8

20
mkisofs.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
set -e
CONTAINER_RUNTIME=$(which podman)
MKISOFS_IMAGE_FULLY_QUALIFIED=docker.io/volkerraschek/mkisofs:latest
CUSTOM_UID=$(getent passwd ${USER} | cut -d ':' -f 3)
CUSTOM_GID=$(getent passwd ${USER} | cut -d ':' -f 4)
# Extract last element of passed arguments
REPO_DIR=${@: -1}
${CONTAINER_RUNTIME} run \
--rm \
--volume ${REPO_DIR}:${REPO_DIR} \
--workdir ${REPO_DIR} \
--user ${CUSTOM_UID}:${CUSTOM_GID} \
${MKISOFS_IMAGE_FULLY_QUALIFIED} ${@}

30
renovate.json Normal file
View File

@ -0,0 +1,30 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"assignees": [ "volker.raschek" ],
"automergeStrategy": "merge-commit",
"automergeType": "pr",
"labels": [ "renovate" ],
"packageRules": [
{
"addLabels": [ "renovate/droneci", "renovate/automerge" ],
"automerge": true,
"matchManagers": "droneci",
"matchUpdateTypes": [ "minor", "patch"]
}
],
"rebaseLabel": "renovate/rebase",
"rebaseWhen": "behind-base-branch",
"regexManagers": [
{
"description": "Update container images of mkisofs.sh",
"fileMatch": [
"^mkisofs.sh$"
],
"matchStrings": [
"^CREATEREPO_IMAGE_FULLY_QUALIFIED=(?<depName>.*):(?<currentValue>.*)$",
"^MKISOFS_IMAGE_FULLY_QUALIFIED=(?<depName>.*):(?<currentValue>.*)$"
],
"datasourceTemplate": "docker"
}
]
}