diff --git a/Dockerfile b/Dockerfile index d3de0ae..e8c6ced 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,10 @@ FROM docker.io/library/bash:5.2.37@sha256:01a15c6f48f6a3c08431cd77e11567823530b18159889dca3b7309b707beef91 SHELL ["/usr/local/bin/bash", "-u", "-e", "-o", "pipefail", "-c"] +# workaround until we have a env `CI_COMMIT_TIMESTAMP` +# see https://github.com/woodpecker-ci/woodpecker/issues/5245 +RUN apk add git~=2 --no-cache + RUN ARCH=$(uname -m) && \ [[ $ARCH == x86_64 ]] && export SUFFIX=amd64; \ [[ $ARCH == aarch64 ]] && export SUFFIX=arm64; \ diff --git a/README.md b/README.md index f042d9e..9711196 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,21 @@ docker run --rm --user=$(id -u) --volume=$HOME:$HOME:ro --workdir=$PWD --env=PLU ## Settings -| Settings Name | Environment | Default | Description | -| ------------------- | ------------------------ | ---------------- | ----------------------------------------------------------------------------------------------- | -| `addr` | PLUGIN_ADDR | `$BUILDKIT_HOST` | Buildkit host to use. | -| `frontend` | PLUGIN_FRONTEND | `dockerfile.v0` | Only dockerfile frontend supported right now | -| `context` | PLUGIN_CONTEXT | `$PWD` | Context directory to use for build | -| `dockerfile` | PLUGIN_DOCKERFILE | `Dockerfile` | Dockerfile to use. | -| `target` | PLUGIN_TARGET | `none` | Dockerfile target | -| `build-args` | PLUGIN_BUILD_ARGS | `none` | Build args to pass to build | -| `platform` | PLUGIN_PLATFORM | `none` | Target platform for container image. | -| `source-epoch-date` | PLUGIN_SOURCE_DATE_EPOCH | `0` | Timestamp to use for reproduceable builds. | -| `name` | PLUGIN_NAME | `none` | Images names where to push the image. | -| `annotation` | PLUGIN_ANNOTATION | `none` | Annotations (also known as labels) to add to image | -| `push` | PLUGIN_PUSH | `true` | Push images if output names are set. | -| `auth` | PLUGIN_AUTH | `none` | Auth for private registries | -| `env-file` | PLUGIN_ENV_FILE | `none` | Source environment values from given file | +| Settings Name | Environment | Default | Description | +| ------------------- | ------------------------ | --------------------------- | -------------------------------------------------- | +| `addr` | PLUGIN_ADDR | `$BUILDKIT_HOST` | Buildkit host to use. | +| `frontend` | PLUGIN_FRONTEND | `dockerfile.v0` | Only dockerfile frontend supported right now | +| `context` | PLUGIN_CONTEXT | `$PWD` | Context directory to use for build | +| `dockerfile` | PLUGIN_DOCKERFILE | `Dockerfile` | Dockerfile to use. | +| `target` | PLUGIN_TARGET | `none` | Dockerfile target | +| `build-args` | PLUGIN_BUILD_ARGS | `none` | Build args to pass to build | +| `platform` | PLUGIN_PLATFORM | `none` | Target platform for container image. | +| `source-epoch-date` | PLUGIN_SOURCE_DATE_EPOCH | `git log -1 --format="%at"` | Timestamp to use for reproduceable builds. | +| `name` | PLUGIN_NAME | `none` | Images names where to push the image. | +| `annotation` | PLUGIN_ANNOTATION | `none` | Annotations (also known as labels) to add to image | +| `push` | PLUGIN_PUSH | `true` | Push images if output names are set. | +| `auth` | PLUGIN_AUTH | `none` | Auth for private registries | +| `env-file` | PLUGIN_ENV_FILE | `none` | Source environment values from given file | ## Alternatives diff --git a/entrypoint.sh b/entrypoint.sh index 8a2a378..c1b39e4 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,6 +1,16 @@ #!/usr/bin/env bash set -eu; +## +## workaround until we have a env `CI_COMMIT_TIMESTAMP` +## see https://github.com/woodpecker-ci/woodpecker/issues/5245 +## + +if [[ -z "${CI_COMMIT_TIMESTAMP:-}" ]]; then + git config --global --add safe.directory "$PWD" + CI_COMMIT_TIMESTAMP=$(git log -1 --format="%at") +fi + ## ## check input ## @@ -27,7 +37,7 @@ if [[ "$BUILDCTL_FRONTEND" != "dockerfile.v0" ]]; then exit 1 fi -SOURCE_DATE_EPOCH=${PLUGIN_SOURCE_DATE_EPOCH:-0} +SOURCE_DATE_EPOCH=${PLUGIN_SOURCE_DATE_EPOCH:-${CI_COMMIT_TIMESTAMP:-0}} if [[ -n "${PLUGIN_AUTH:-}" ]]; then echo "$PLUGIN_AUTH" | jq -r 'to_entries|map({(.key):{"auth":(.value.username+":"+.value.password)|@base64}})|add|{"auths":.}' > "$HOME/.docker/config.json"