diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7c63416 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +getpsrc \ No newline at end of file diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..06ffabd --- /dev/null +++ b/.drone.yml @@ -0,0 +1,670 @@ +--- +kind: pipeline +type: kubernetes +name: linter + +clone: + disable: true + +platform: + os: linux + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: markdown lint + commands: + - markdownlint *.md + image: git.cryptic.systems/volker.raschek/markdownlint:0.38.0 + 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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + resources: + limits: + cpu: 150 + memory: 150M + when: + status: + - changed + - failure + +trigger: + event: + exclude: + - tag + +--- +kind: pipeline +type: docker +name: dry-run-amd64 + +clone: + disable: true + +depends_on: +- linter + +platform: + os: linux + arch: amd64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build + image: docker.io/plugins/docker:20.17.2 + settings: + auto_tag: false + dockerfile: Dockerfile + dry_run: true + force_tag: true + no_cache: true + purge: true + mirror: + from_secret: docker_io_mirror + registry: git.cryptic.systems + repo: git.cryptic.systems/volker.raschek/getpsrc + tags: latest-amd64 + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + when: + status: + - changed + - failure + +trigger: + branch: + exclude: + - master + event: + - pull_request + - push + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: docker +name: dry-run-arm64-v8 + +clone: + disable: true + +depends_on: +- linter + +platform: + os: linux + arch: arm64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build + image: docker.io/plugins/docker:20.17.2 + settings: + auto_tag: false + dockerfile: Dockerfile + dry_run: true + force_tag: true + no_cache: true + purge: true + mirror: + from_secret: docker_io_mirror + registry: git.cryptic.systems + repo: git.cryptic.systems/volker.raschek/getpsrc + tags: latest-arm64-v8 + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + when: + status: + - changed + - failure + +trigger: + branch: + exclude: + - master + event: + - pull_request + - push + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: docker +name: latest-amd64 + +clone: + disable: true + +depends_on: +- linter + +platform: + os: linux + arch: amd64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build + image: docker.io/plugins/docker:20.17.2 + settings: + auto_tag: false + dockerfile: Dockerfile + force_tag: true + no_cache: true + purge: true + mirror: + from_secret: docker_io_mirror + registry: git.cryptic.systems + repo: git.cryptic.systems/volker.raschek/getpsrc + tags: latest-amd64 + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + when: + status: + - changed + - failure + +trigger: + branch: + - master + event: + - cron + - push + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: docker +name: latest-arm64-v8 + +clone: + disable: true + +depends_on: +- linter + +platform: + os: linux + arch: arm64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build + image: docker.io/plugins/docker:20.17.2 + settings: + auto_tag: false + dockerfile: Dockerfile + force_tag: true + no_cache: true + purge: true + mirror: + from_secret: docker_io_mirror + registry: git.cryptic.systems + repo: git.cryptic.systems/volker.raschek/getpsrc + tags: latest-arm64-v8 + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + when: + status: + - changed + - failure + +trigger: + branch: + - master + event: + - cron + - push + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: kubernetes +name: latest-manifest + +clone: + disable: true + +depends_on: +- latest-amd64 +- latest-arm64-v8 + +# docker.io/plugins/manifest only for amd64 architectures available +node_selector: + kubernetes.io/os: linux + kubernetes.io/arch: amd64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build-manifest + image: docker.io/plugins/manifest:1.4.0 + settings: + auto_tag: false + ignore_missing: true + spec: manifest.tmpl + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + resources: + limits: + cpu: 150 + memory: 150M + when: + status: + - changed + - failure + +trigger: + branch: + - master + event: + - cron + - push + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: kubernetes +name: latest-sync + +clone: + disable: true + +depends_on: +- latest-manifest + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: latest-sync + commands: + - skopeo sync --all --src=docker --src-creds=$SRC_CRED_USERNAME:$SRC_CRED_PASSWORD --dest=docker --dest-creds=$DEST_CRED_USERNAME:$DEST_CRED_PASSWORD git.cryptic.systems/volker.raschek/getpsrc docker.io/volkerraschek + environment: + SRC_CRED_USERNAME: + from_secret: git_cryptic_systems_container_registry_user + SRC_CRED_PASSWORD: + from_secret: git_cryptic_systems_container_registry_password + DEST_CRED_USERNAME: + from_secret: container_image_registry_user + DEST_CRED_PASSWORD: + from_secret: container_image_registry_password + image: quay.io/skopeo/stable:v1.14.0 + +- 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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + resources: + limits: + cpu: 150 + memory: 150M + when: + status: + - changed + - failure + +trigger: + branch: + - master + event: + - cron + - push + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: docker +name: tagged-amd64 + +clone: + disable: true + +platform: + os: linux + arch: amd64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build + image: docker.io/plugins/docker:20.17.2 + settings: + auto_tag: true + auto_tag_suffix: amd64 + dockerfile: Dockerfile + force_tag: true + no_cache: true + purge: true + mirror: + from_secret: docker_io_mirror + registry: git.cryptic.systems + repo: git.cryptic.systems/volker.raschek/getpsrc + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_registry_password + build_args: + - VERSION=${DRONE_TAG} + +- 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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + when: + status: + - changed + - failure + +trigger: + event: + - tag + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: docker +name: tagged-arm64-v8 + +clone: + disable: true + +platform: + os: linux + arch: arm64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build + image: docker.io/plugins/docker:20.17.2 + settings: + auto_tag: true + auto_tag_suffix: arm64-v8 + dockerfile: Dockerfile + force_tag: true + no_cache: true + purge: true + mirror: + from_secret: docker_io_mirror + registry: git.cryptic.systems + repo: git.cryptic.systems/volker.raschek/getpsrc + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_registry_password + build_args: + - VERSION=${DRONE_TAG} + +- 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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + when: + status: + - changed + - failure + +trigger: + event: + - tag + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: kubernetes +name: tagged-manifest + +clone: + disable: true + +depends_on: +- tagged-amd64 +- tagged-arm64-v8 + +# docker.io/plugins/manifest only for amd64 architectures available +node_selector: + kubernetes.io/os: linux + kubernetes.io/arch: amd64 + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: build-manifest + image: docker.io/plugins/manifest:1.4.0 + settings: + auto_tag: true + ignore_missing: true + spec: manifest.tmpl + username: + from_secret: git_cryptic_systems_container_registry_user + password: + from_secret: git_cryptic_systems_container_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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + resources: + limits: + cpu: 150 + memory: 150M + when: + status: + - changed + - failure + +trigger: + event: + - tag + repo: + - volker.raschek/getpsrc + +--- +kind: pipeline +type: kubernetes +name: tagged-sync + +clone: + disable: true + +depends_on: +- tagged-manifest + +steps: +- name: clone + image: git.cryptic.systems/volker.raschek/git:1.3.1 + +- name: tagged-sync + commands: + - skopeo sync --all --src=docker --src-creds=$SRC_CRED_USERNAME:$SRC_CRED_PASSWORD --dest=docker --dest-creds=$DEST_CRED_USERNAME:$DEST_CRED_PASSWORD git.cryptic.systems/volker.raschek/getpsrc docker.io/volkerraschek + environment: + SRC_CRED_USERNAME: + from_secret: git_cryptic_systems_container_registry_user + SRC_CRED_PASSWORD: + from_secret: git_cryptic_systems_container_registry_password + DEST_CRED_USERNAME: + from_secret: container_image_registry_user + DEST_CRED_PASSWORD: + from_secret: container_image_registry_password + image: quay.io/skopeo/stable:v1.14.0 + +- 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: git.cryptic.systems/volker.raschek/drone-email:0.1.5 + resources: + limits: + cpu: 150 + memory: 150M + when: + status: + - changed + - failure + +trigger: + event: + - tag + repo: + - volker.raschek/getpsrc diff --git a/.editorconfig b/.editorconfig index dd69de0..e79971c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,15 +1,13 @@ -# EditorConfig is awesome: https://EditorConfig.org - -# top-most EditorConfig file +# Editor configuration, see http://editorconfig.org root = true [*] -indent_style = space -indent_size = 2 -end_of_line = lf charset = utf-8 -trim_trailing_whitespace = true +end_of_line = lf +indent_size = 2 +indent_style = space insert_final_newline = false +trim_trailing_whitespace = true -[Makefile] +[{Makefile,*.go}] indent_style = tab \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..eb22dd6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +# checkout alls text files with end of line = line feed +* text eol=lf + +# Binary files should be checked in and out as binary +*.png binary +*.jpg binary +*.eot binary +*.ttf binary +*.pkcs8 binary +*.pkcs12 binary \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7c63416..5802e17 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,25 @@ -getpsrc \ No newline at end of file +**/*.iml +**/*.idea +**/target +**/.project +**/.settings +**/.classpath +**/npm-debug.log +**/node/* +**/nb-configuration.xml +**/*.war +**/*.class +**/*.DS_Store + +**/.vscode + +.repo +**/pom.xml.releaseBackup +**/release.properties +**/bindata.go +**/t1k.rpm +**/orbis-u-t1k.tar.gz +**/container.log +**/.env +**/coverage* +getpsrc* \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml index f7e2c3b..2720fb1 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,6 +1,4 @@ run: - skip-dirs: - - it timeout: 10m tests: true @@ -25,4 +23,5 @@ linters: - nilerr - rowserrcheck - sqlclosecheck - - unparam \ No newline at end of file + - unparam + - whitespace \ No newline at end of file diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..4e6e709 --- /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: + - oas-collector + # 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 9555c3e..e1eaea0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,28 @@ -ARG BASE_IMAGE -ARG BUILD_IMAGE +FROM docker.io/library/golang:1.21.6-alpine3.18 as build -# BUILD -# ===================================================================== -FROM ${BUILD_IMAGE} AS build - -ARG GONOPROXY -ARG GONOSUMDB -ARG GOPRIVATE -ARG GOPROXY -ARG GOSUMDB ARG VERSION COPY ./ /workspace -RUN cd /workspace && \ - GONOPROXY=${GONOPROXY} \ - GONOSUMDB=${GONOSUMDB} \ - GOPRIVATE=${GOPRIVATE} \ - GOPROXY=${GOPROXY} \ - GOSUMDB=${GOSUMDB} \ - VERSION=${VERSION} \ - make all +WORKDIR /workspace + +RUN set -ex && \ + apk update && \ + apk add git make && \ + make all VERSION=${VERSION} # TARGET # ===================================================================== -FROM ${BASE_IMAGE} +FROM docker.io/library/alpine:3.19 + +ARG VERSION=latest + +LABEL org.opencontainers.image.authors="Markus Pesch" \ + org.opencontainers.image.description="Return the ip address of the router to forward traffic to an external ip address" \ + org.opencontainers.image.documentation="https://git.cryptic.systems/volker.raschek/getpsrc#getpsrc" \ + org.opencontainers.image.title="getpsrc" \ + org.opencontainers.image.vendor="Markus Pesch" \ + org.opencontainers.image.version="${VERSION}" COPY --from=build /workspace/getpsrc /usr/bin/getpsrc diff --git a/Makefile b/Makefile index 740cf96..1503443 100644 --- a/Makefile +++ b/Makefile @@ -2,29 +2,13 @@ VERSION?=$(shell git describe --abbrev=0)+hash.$(shell git rev-parse --short HEAD) # CONTAINER_RUNTIME -CONTAINER_RUNTIME?=$(shell which docker) - -# BUILD_IMAGE -BUILD_IMAGE_REGISTRY_HOST?=docker.io -BUILD_IMAGE_NAMESPACE=library -BUILD_IMAGE_REPOSITORY=golang -BUILD_IMAGE_VERSION?=1.16 -BUILD_IMAGE_FULLY_QUALIFIED:=${BUILD_IMAGE_REGISTRY_HOST}/${BUILD_IMAGE_NAMESPACE}/${BUILD_IMAGE_REPOSITORY}:${BUILD_IMAGE_VERSION} - -# BASE_IMAGE -BASE_IMAGE_REGISTRY_HOST?=docker.io -BASE_IMAGE_NAMESPACE=library -BASE_IMAGE_REPOSITORY=busybox -BASE_IMAGE_VERSION?=latest -BASE_IMAGE_FULLY_QUALIFIED=${BASE_IMAGE_REGISTRY_HOST}/${BASE_IMAGE_NAMESPACE}/${BASE_IMAGE_REPOSITORY}:${BASE_IMAGE_VERSION} +CONTAINER_RUNTIME?=$(shell which podman) # CONTAINER_IMAGE -CONTAINER_IMAGE_REGISTRY_HOST?=docker.io -CONTAINER_IMAGE_NAMESPACE=volkerraschek -CONTAINER_IMAGE_REPOSITORY=getpsrc +CONTAINER_IMAGE_REGISTRY_HOST?=git.cryptic.systems +CONTAINER_IMAGE_REPOSITORY=volker.raschek/getpsrc CONTAINER_IMAGE_VERSION?=latest -CONTAINER_IMAGE_FULLY_QUALIFIED=${CONTAINER_IMAGE_REGISTRY_HOST}/${CONTAINER_IMAGE_NAMESPACE}/${CONTAINER_IMAGE_REPOSITORY}:${CONTAINER_IMAGE_VERSION} -CONTAINER_IMAGE_UNQUALIFIED=${CONTAINER_IMAGE_NAMESPACE}/${CONTAINER_IMAGE_REPOSITORY}:${CONTAINER_IMAGE_VERSION} +CONTAINER_IMAGE_FULLY_QUALIFIED=${CONTAINER_IMAGE_REGISTRY_HOST}/${CONTAINER_IMAGE_REPOSITORY}:${CONTAINER_IMAGE_VERSION} # EXECUTABLES # ============================================================================== @@ -34,18 +18,13 @@ PHONY=all all: clean ${EXECUTABLE_TARGETS} getpsrc: - GOPRIVATE=$(shell go env GOPRIVATE) \ - GOPROXY=$(shell go env GOPROXY) \ - GONOPROXY=$(shell go env GONOPROXY) \ - GONOSUMDB=$(shell go env GONOSUMDB) \ - GOSUMDB=$(shell go env GOSUMDB) \ - go build -tags netgo -ldflags "-X main.version=${VERSION}" -o ${@} main.go + go build -tags netgo -ldflags "-X main.version=${VERSION}" -o ${@} main.go # CLEAN # ============================================================================== PHONY+=clean clean: - rm --force --recursive $(shell pwd)/getpsrc* + rm -f -r $(shell pwd)/getpsrc* # GOLANGCI-LINT # ============================================================================== @@ -64,17 +43,9 @@ gosec: PHONY+=container-image/build container-image/build: ${CONTAINER_RUNTIME} build \ - --build-arg BASE_IMAGE=${BASE_IMAGE_FULLY_QUALIFIED} \ - --build-arg BUILD_IMAGE=${BUILD_IMAGE_FULLY_QUALIFIED} \ - --build-arg GOPRIVATE=$(shell go env GOPRIVATE) \ - --build-arg GOPROXY=$(shell go env GOPROXY) \ - --build-arg GONOPROXY=$(shell go env GONOPROXY) \ - --build-arg GONOSUMDB=$(shell go env GONOSUMDB) \ - --build-arg GOSUMDB=$(shell go env GOSUMDB) \ --build-arg VERSION=${VERSION} \ --file ./Dockerfile \ --no-cache \ - --tag ${CONTAINER_IMAGE_UNQUALIFIED} \ --tag ${CONTAINER_IMAGE_FULLY_QUALIFIED} \ . @@ -104,18 +75,13 @@ PHONY+=container-run container-run: ${CONTAINER_RUNTIME} run \ --env CONTAINER_IMAGE_VERSION=${CONTAINER_IMAGE_VERSION} \ - --env GONOPROXY=$(shell go env GONOPROXY) \ - --env GONOSUMDB=$(shell go env GONOSUMDB) \ - --env GOPRIVATE=$(shell go env GOPRIVATE) \ - --env GOPROXY=$(shell go env GOPROXY) \ - --env GOSUMDB=$(shell go env GOSUMDB) \ --env VERSION=${VERSION} \ --net=host \ --rm \ --volume /tmp:/tmp \ - --volume ${HOME}/go:/root/go \ - --volume $(shell pwd):/workspace \ - --workdir /workspace \ + --volume "${HOME}/go:/root/go" \ + --volume "$(shell pwd):$(shell pwd)" \ + --workdir "$(shell pwd)" \ ${BUILD_IMAGE_FULLY_QUALIFIED} \ make ${COMMAND} diff --git a/README.md b/README.md index 0ec1a27..a5e1b47 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ # getpsrc +[![Build Status](https://drone.cryptic.systems/api/badges/volker.raschek/getpsrc/status.svg)](https://drone.cryptic.systems/volker.raschek/getpsrc) +[![Docker Pulls](https://img.shields.io/docker/pulls/volkerraschek/getpsrc)](https://hub.docker.com/r/volkerraschek/getpsrc) + `getpsrc` is a small programme to determine the src routing ip for an external ip. -`getpsrc` serves as an alternative to `ip route get | awk ... ` because `ip +`getpsrc` serves as an alternative to `ip route get | awk ...` because `ip route get` can return different output depending on the environment and therefore the construct is unsafe. + +`getpsrc` is also as container image available: `docker.io/volkerraschek/getpsrc`. diff --git a/manifest.tmpl b/manifest.tmpl new file mode 100644 index 0000000..5c7313c --- /dev/null +++ b/manifest.tmpl @@ -0,0 +1,20 @@ +image: git.cryptic.systems/volker.raschek/db-wait:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +{{#if build.tags}} +tags: +{{#each build.tags}} + - {{this}} +{{/each}} + - "latest" +{{/if}} +manifests: + - + image: git.cryptic.systems/volker.raschek/db-wait:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{else}}latest{{/if}}-amd64 + platform: + architecture: amd64 + os: linux + - + image: git.cryptic.systems/volker.raschek/db-wait:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm64-v8 + platform: + architecture: arm64 + os: linux + variant: v8 \ No newline at end of file diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..87a661e --- /dev/null +++ b/renovate.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "assigneesFromCodeOwners": true, + "labels": [ "renovate" ], + "packageRules": [ + { + "description": "Automatically update minor and patch versions of container images", + "addLabels": [ "renovate/container-images", "renovate/automerge" ], + "automerge": true, + "matchDatasources":[ "docker" ], + "matchUpdateTypes": [ "minor", "patch"] + }, + { + "description": "Prepare MR for major update of container images", + "addLabels": [ "renovate/container-images", "renovate/automerge" ], + "automerge": false, + "matchDatasources":[ "docker" ], + "matchUpdateTypes": [ "major"] + }, + { + "description": "Automatically update minor and patch versions of used drone-ci images", + "addLabels": [ "renovate/droneci", "renovate/automerge" ], + "automerge": true, + "matchManagers": "droneci", + "matchUpdateTypes": [ "minor", "patch"] + }, + { + "description": "Prepare MR for major update of used drone-ci images", + "addLabels": [ "renovate/droneci", "renovate/automerge" ], + "automerge": false, + "matchManagers": "droneci", + "matchUpdateTypes": [ "major"] + }, + { + "description": "Automatically update minor and patch versions of go modules", + "addLabels": [ "renovate/gomod", "renovate/automerge" ], + "automerge": true, + "matchBaseBranches": [ "master" ], + "matchManagers": [ "gomod" ], + "matchUpdateTypes": [ "minor", "patch" ] + }, + { + "description": "Prepare MR for major update of go modules", + "addLabels": [ "renovate/gomod" ], + "automerge": false, + "matchBaseBranches": [ "master" ], + "matchManagers": [ "gomod" ], + "matchUpdateTypes": [ "major" ] + } + ], + "postUpdateOptions": [ + "gomodTidy" + ], + "rebaseLabel": "renovate/rebase", + "rebaseWhen": "behind-base-branch" +}