From 0104e01dcc26944f6677259adc08855d40f920dd Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Mon, 30 Aug 2021 20:13:06 +0200 Subject: [PATCH] fix: drone, docker-compose, Dockerfile and Makefile --- .drone.yml | 129 +++++++++++++++++++++++++++++++++------- .markdownlint.yaml | 144 +++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 6 +- Makefile | 44 ++++---------- README.md | 9 ++- docker-compose.yml | 4 ++ network-tools.yml | 8 ++- 7 files changed, 284 insertions(+), 60 deletions(-) create mode 100644 .markdownlint.yaml create mode 100644 docker-compose.yml diff --git a/.drone.yml b/.drone.yml index 8af5ba4..786665f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,9 +1,57 @@ +--- kind: pipeline -type: docker -name: build-image-x86_64 +type: kubernetes +name: linter + +platform: + os: linux + arch: amd64 steps: -- name: build-image-latest +- name: markdown lint + commands: + - markdownlint *.md + image: docker.io/tmknom/markdownlint:0.23.1 + 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: build + +platform: + os: linux + arch: amd64 + +steps: +- name: build image: docker.io/volkerraschek/build-image:latest commands: - make container-image/build @@ -14,12 +62,12 @@ steps: branch: - master -- name: push-image-latest +- name: push image: docker.io/volkerraschek/build-image:latest commands: - make container-image/push environment: - CONTAINER_IMAGE_REGISTRY_PASSWORD: + NETWORKTOOLS_IMAGE_REGISTRY_PASSWORD: from_secret: container_image_registry_password volumes: - name: docker_socket @@ -27,8 +75,10 @@ steps: when: branch: - master + repo: + - volker.raschek/network-tools -- name: delete-image-latest +- name: delete image: docker.io/volkerraschek/build-image:latest commands: - make container-image/delete @@ -39,20 +89,6 @@ steps: branch: - master -- name: push-readme - image: docker.io/volkerraschek/build-image:latest - commands: - - make push/README - environment: - CONTAINER_IMAGE_REGISTRY_PASSWORD: - from_secret: container_image_registry_password - volumes: - - name: docker_socket - path: /var/run/docker.sock - when: - branch: - - master - - name: notify image: drillster/drone-email environment: @@ -73,3 +109,56 @@ volumes: - name: docker_socket host: path: /var/run/docker.sock + +trigger: + event: + exclude: + - tag +--- +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/network-tools.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/network-tools diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..47882c7 --- /dev/null +++ b/.markdownlint.yaml @@ -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: + - network-tools + # 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" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 096a4b9..f62c5b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -ARG BASE_IMAGE +FROM docker.io/library/alpine:3.14.2 -FROM ${BASE_IMAGE} +RUN apk add bind-tools curl iputils -RUN apk add bind-tools curl iputils \ No newline at end of file +ENTRYPOINT [ "sleep", "3600" ] \ No newline at end of file diff --git a/Makefile b/Makefile index a5e9be0..569d157 100644 --- a/Makefile +++ b/Makefile @@ -3,60 +3,42 @@ # container runtime. This is needed to start and run a container image. CONTAINER_RUNTIME?=$(shell which docker) -# BASE_IMAGE -# Defines the name of the container base image on which should be built the new -# CONTAINER_IMAGE. -BASE_IMAGE_REGISTRY_NAME:=docker.io -BASE_IMAGE_NAMESPACE:=library -BASE_IMAGE_NAME:=alpine -BASE_IMAGE_VERSION:=3.11.2 -BASE_IMAGE_FULL=${BASE_IMAGE_REGISTRY_NAME}/${BASE_IMAGE_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_IMAGE_VERSION} -BASE_IMAGE_SHORT=${BASE_IMAGE_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_IMAGE_VERSION} - -# CONTAINER_IMAGE_REGISTRY_NAME +# NETWORKTOOLS_IMAGE_REGISTRY_NAME # Defines the name of the new container to be built using several variables. -CONTAINER_IMAGE_REGISTRY_NAME:=docker.io -CONTAINER_IMAGE_REGISTRY_USER:=volkerraschek +NETWORKTOOLS_IMAGE_REGISTRY_NAME:=docker.io +NETWORKTOOLS_IMAGE_REGISTRY_USER:=volkerraschek -CONTAINER_IMAGE_NAMESPACE?=${CONTAINER_IMAGE_REGISTRY_USER} -CONTAINER_IMAGE_NAME:=network-tools -CONTAINER_IMAGE_VERSION?=latest -CONTAINER_IMAGE_FULL=${CONTAINER_IMAGE_REGISTRY_NAME}/${CONTAINER_IMAGE_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_VERSION} -CONTAINER_IMAGE_SHORT=${CONTAINER_IMAGE_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_VERSION} +NETWORKTOOLS_IMAGE_NAMESPACE?=${NETWORKTOOLS_IMAGE_REGISTRY_USER} +NETWORKTOOLS_IMAGE_NAME:=network-tools +NETWORKTOOLS_IMAGE_VERSION?=latest +NETWORKTOOLS_IMAGE_FULLY_QUALIFIED=${NETWORKTOOLS_IMAGE_REGISTRY_NAME}/${NETWORKTOOLS_IMAGE_NAMESPACE}/${NETWORKTOOLS_IMAGE_NAME}:${NETWORKTOOLS_IMAGE_VERSION} +NETWORKTOOLS_IMAGE_UNQUALIFIED=${NETWORKTOOLS_IMAGE_NAMESPACE}/${NETWORKTOOLS_IMAGE_NAME}:${NETWORKTOOLS_IMAGE_VERSION} # BUILD CONTAINER IMAGE # ============================================================================== PHONY:=container-image/build container-image/build: ${CONTAINER_RUNTIME} build \ - --build-arg BASE_IMAGE=${BASE_IMAGE_FULL} \ --file Dockerfile \ --no-cache \ --pull \ - --tag ${CONTAINER_IMAGE_FULL} \ - --tag ${CONTAINER_IMAGE_SHORT} \ + --tag ${NETWORKTOOLS_IMAGE_FULLY_QUALIFIED} \ + --tag ${NETWORKTOOLS_IMAGE_UNQUALIFIED} \ . # DELETE CONTAINER IMAGE # ============================================================================== PHONY:=container-image/delete container-image/delete: - - ${CONTAINER_RUNTIME} image rm ${CONTAINER_IMAGE_FULL} ${CONTAINER_IMAGE_SHORT} + - ${CONTAINER_RUNTIME} image rm ${NETWORKTOOLS_IMAGE_FULLY_QUALIFIED} ${NETWORKTOOLS_IMAGE_UNQUALIFIED} - ${CONTAINER_RUNTIME} image rm ${BASE_IMAGE_FULL} # PUSH CONTAINER IMAGE # ============================================================================== PHONY+=container-image/push container-image/push: - echo ${CONTAINER_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${CONTAINER_IMAGE_REGISTRY_NAME} --username ${CONTAINER_IMAGE_REGISTRY_USER} --password-stdin - ${CONTAINER_RUNTIME} push ${CONTAINER_IMAGE_FULL} - -# PUSH README -# ============================================================================== -PHONY+=push/README -push/README: - echo ${CONTAINER_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${CONTAINER_IMAGE_REGISTRY_NAME} --username ${CONTAINER_IMAGE_REGISTRY_USER} --password-stdin - docker pushrm ${CONTAINER_IMAGE_FULL} + echo ${NETWORKTOOLS_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${NETWORKTOOLS_IMAGE_REGISTRY_NAME} --username ${NETWORKTOOLS_IMAGE_REGISTRY_USER} --password-stdin + ${CONTAINER_RUNTIME} push ${NETWORKTOOLS_IMAGE_FULLY_QUALIFIED} # PHONY # ============================================================================== diff --git a/README.md b/README.md index 7d967ac..2fbc808 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,10 @@ [![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/network-tools/status.svg)](https://drone.cryptic.systems/volker.raschek/network-tools) [![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/network-tools)](https://hub.docker.com/r/volkerraschek/network-tools) -This project, hosted on -[git.cryptic.systems](https://git.cryptic.systems/volker.raschek/network-tools), -contains only files to build the container image. The container image contains -network tools to analyse or monitor network communication. This can be helpful -in a containerized environment. +This project contains all sources to build the container image +`docker.io/volkerraschek/network-tools`. The primary goal of the image is only +to contain some network tools to debug container based environments like docker +or kubernetes. ## Usage diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..789868c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,4 @@ +version: "3" +services: + network-tools: + image: volkerraschek/network-tools:latest \ No newline at end of file diff --git a/network-tools.yml b/network-tools.yml index 3e335e5..fdf3759 100644 --- a/network-tools.yml +++ b/network-tools.yml @@ -6,8 +6,14 @@ spec: containers: - name: network-tools image: docker.io/volkerraschek/network-tools:latest - command: [ "sleep", "3600" ] imagePullPolicy: Always + resources: + limits: + cpu: 250m + memory: 250Mi + requests: + cpu: 100m + memory: 125Mi securityContext: capabilities : add: