Compare commits

...

15 Commits

Author SHA1 Message Date
62ee2fe065 Merge branch 'tool_bandwhich' 2022-11-23 19:24:44 +01:00
03622eaa69 Merge branch 'dev' 2022-11-23 19:22:53 +01:00
7e2a97bf0d Change example to interactive 2022-11-23 19:16:07 +01:00
0354046e3c Add Instructions on how to use project 2022-11-23 19:09:11 +01:00
dfb6fc6870 Ignore build-folder 2022-11-23 19:01:36 +01:00
019a6d3f63 Move tag to build.sh 2022-11-23 18:57:24 +01:00
6e1e63cad1 Add example command 2022-11-23 18:42:34 +01:00
637bb11fdd Switch to entrypoint 2022-11-23 18:41:59 +01:00
14e9f7ee35 Combine update and make 2022-11-23 18:41:36 +01:00
85a3dbfb96 Use Workdir-variable from arg 2022-11-23 18:38:52 +01:00
b6c8457bc3 Move args-declaration to build 2022-11-23 18:37:17 +01:00
d32f36dd29 Add latest-tag to image creation 2022-11-23 13:38:51 +01:00
ace27f7868 Fix default checkout 2022-11-23 13:20:52 +01:00
471d42618d Add files for bandwhich 2022-11-23 13:20:11 +01:00
250819c08d Add build-scripts 2022-11-23 12:45:20 +01:00
8 changed files with 172 additions and 3 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.build/

View File

@ -6,11 +6,54 @@ Collection of Dockerfiles created to build & pack various tools.
<br>
<!-- TOC -->
- [1. Tools](#1-tools)
- [1. How to use](#1-how-to-use)
- [1.1. CLI](#11-cli)
- [2. Tools](#2-tools)
- [2.1. Bandwhich](#21-bandwhich)
<!-- /TOC -->
<br>
# 1. Tools
# 1. How to use
Nothing yet
Run the build-script `script/build.sh` with the path to the tool you want to build.
<br>
The docker-image will be tagged with `default` and the detected version/commit-hash.
You can add more tags or change the existing tag-naming-scheme using the environment-variable `TAG`.
<br>
## 1.1. CLI
`script/build.sh <toolPath> [extra-args for docker build ..]`
<br>
### 1.1.1. Environment-Variables
Variable | Description | Default
-|-|-
`TAG` | Tag for Docker-building | `TAGPREFIX` + `NAME`
`TAGPREFIX` | Set a prefix to the default-tag | -
`NAME` | Change the name used in the tag | *FolderName*
<br>
# 2. Tools
## 2.1. Bandwhich
### 2.1.1. Source
>This is a CLI utility for displaying current network utilization by process, connection and remote IP/hostname
https://github.com/imsnif/bandwhich
<br>
### 2.1.2. Example
```
docker run -it --net host bandwhich -i eth0
```

31
scripts/build.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
scriptPath_file=$(dirname "${BASH_SOURCE[0]}")
scriptPath_folder=$(realpath "${scriptPath_file}")
utils_path="${scriptPath_folder}/utils"
WORKDIR=${1:-$PWD}
WORKDIR=$(realpath "$WORKDIR")
# -- VARIABLES --
# Store original path
ORIGINALDIR=$PWD
# Get args without path
EXTRA_ARGS="${@:2}"
TAG=${TAG:-"${TAG_PREFIX}${NAME}"}
# Call prepare
printf "# PREPARE\n"
source ${utils_path}/prepare.sh
# Call build
printf "# BUILD\n"
build_type=${BUILD:-"ownarch"}
source ${utils_path}/build-${build_type}.sh
# Switch back to original path
cd $ORIGINALDIR

View File

@ -0,0 +1,9 @@
#!/bin/bash
PLATFORM=${PLATFORM:-"linux/amd64,linux/arm64/v8,linux/arm/v7"}
docker buildx build \
--platform $PLATFORM \
--tag $TAG:latest \
--tag "${TAG}:${VERSION}" \
$EXTRA_ARGS \
$WORKDIR

7
scripts/utils/build-ownarch.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
docker build \
--tag $TAG:latest \
--tag $TAG:$VERSION \
$EXTRA_ARGS \
"$WORKDIR"

55
scripts/utils/prepare.sh Executable file
View File

@ -0,0 +1,55 @@
#!/bin/sh
# --- VARIABLES ---
# Load variables
source $WORKDIR/info.env
# Check if certain vars are overwritten, set them if missing
if [ "${NAME}" = "" ]; then
NAME="$(basename $WORKDIR)"
fi
export NAME
printf "Name: ${NAME}\n"
repositoryFolder="$WORKDIR/.build/repository"
# --- SOURCES ---
# Get sources locally
if ! [ -d "$repositoryFolder" ]; then
git clone "${GIT_REPOSITORY}" .
cloned=True
fi
# Change into repository
cd "$repositoryFolder"
if [ "$cloned" != True ]; then
# Checkout default-branch in case GIT_CHECKOUT was different
defaultBranch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
git checkout "${defaultBranch}"
git pull # Get changes
fi
# Checkout when set
if [ "$GIT_CHECKOUT" != "" ]; then
# Handle special directives
if [ "$GIT_CHECKOUT" = "latest-tag" ]; then
GIT_CHECKOUT=$(git describe --tags `git rev-list --tags --max-count=1`) # Get latest tag
fi
git checkout $GIT_CHECKOUT
fi
# --- VERSION ---
# Get current version to build
VERSION=$(git describe --tags --long)
if [ $? -ne 0 ]; then
VERSION=$(git rev-parse HEAD)
fi
export VERSION
printf "Version: ${VERSION}\n"
TAG=${TAG:-"${TAG_PREFIX}${NAME}"}
printf "> ${TAG}\n"

View File

@ -0,0 +1,22 @@
# ---- Base ----
FROM alpine:3 AS base
WORKDIR /app
# ---- Build ----
FROM rust:alpine AS build
WORKDIR /build
# Install packages
RUN apk add --no-cache make libc-dev build-base
# Copy sources
ADD .build/repository/ .
# Update dependencies and Compile
RUN cargo update && TARGET="release" make
# ---- Release ----
FROM base AS release
# Copy build-target
COPY --from=build /build/target/release/bandwhich .
ENTRYPOINT ["./bandwhich"]

1
tools/bandwhich/info.env Normal file
View File

@ -0,0 +1 @@
GIT_REPOSITORY=https://github.com/imsnif/bandwhich