From 041aaac2b3ba384171629e0c942b60b5fccd1e00 Mon Sep 17 00:00:00 2001 From: Andrew Coleman Date: Fri, 26 Aug 2022 16:08:03 -0400 Subject: [PATCH] first script --- builder-build | 43 +++++++++++++++++++++++++++++++++++++++++++ builder-detect | 15 +++++++++++++++ builder-release | 23 +++++++++++++++++++++++ plugin.toml | 4 ++++ 4 files changed, 85 insertions(+) create mode 100755 builder-build create mode 100755 builder-detect create mode 100755 builder-release create mode 100644 plugin.toml diff --git a/builder-build b/builder-build new file mode 100755 index 0000000..76a0d81 --- /dev/null +++ b/builder-build @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_AVAILABLE_PATH/config/functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-builder-build() { + declare desc="builder-nixpacks builder-build plugin trigger" + declare trigger="builder-build" + declare BUILDER_TYPE="$1" APP="$2" SOURCECODE_WORK_DIR="$3" + + if [[ "$BUILDER_TYPE" != "nixpacks" ]]; then + return + fi + + dokku_log_info1 "Building $APP with nixpacks" + + if ! command -v "nixpacks" &>/dev/null; then + dokku_log_fail "Missing nixpacks, install it" + fi + + local IMAGE=$(get_app_image_name "$APP") + + pushd "$SOURCECODE_WORK_DIR" &>/dev/null + + ENV_ARGS=($(config_export app "$APP" --format nixpacks-keys --merged)) + eval "$(config_export app "$APP" --merged)" + + plugn trigger pre-build-nixpacks "$APP" "$SOURCECODE_WORK_DIR" + + if ! cd "$SOURCECODE_WORK_DIR" > /dev/null 2>&1; then + dokku_log_fail "Could not change to '$SOURCECODE_WORK_DIR'" + fi + + nixpacks build "$IMAGE" \ + --env "${ENV_ARGS[@]}" \ + --name "$IMAGE" + docker-image-labeler --label=dokku --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.image-stage=build --label=com.dokku.builder-type=pack --label=com.dokku.app-name=$APP "$IMAGE" + + plugn trigger post-build-nixpacks "$APP" "$SOURCECODE_WORK_DIR" +} + +trigger-builder-nixpacks-builder-build "$@" diff --git a/builder-detect b/builder-detect new file mode 100755 index 0000000..d9d608b --- /dev/null +++ b/builder-detect @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +source "$PLUGIN_AVAILABLE_PATH/config/functions" +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +trigger-builder-nixpacks-builder-detect() { + declare desc="builder-nixpacks builder-detect plugin trigger" + declare trigger="builder-detect" + declare APP="$1" SOURCECODE_WORK_DIR="$2" + + echo "nixpacks" + return +} + +trigger-builder-pack-builder-detect "$@" diff --git a/builder-release b/builder-release new file mode 100755 index 0000000..14b1683 --- /dev/null +++ b/builder-release @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" + +trigger-builder-nixpacks-builder-release() { + declare desc="builder-nixpacks builder-release plugin trigger" + declare trigger="builder-release" + declare BUILDER_TYPE="$1" APP="$2" IMAGE_TAG="$3" + + if [[ "$BUILDER_TYPE" != "nixpacks" ]]; then + return + fi + + plugn trigger pre-release-nixpacks "$APP" "$IMAGE_TAG" + + local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") + docker-image-labeler --label=com.dokku.image-stage=release --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku "$IMAGE" + plugn trigger post-release-nixpacks "$APP" "$IMAGE_TAG" + plugn trigger post-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE" +} + +trigger-builder-nixpacks-builder-release "$@" diff --git a/plugin.toml b/plugin.toml new file mode 100644 index 0000000..0fa6336 --- /dev/null +++ b/plugin.toml @@ -0,0 +1,4 @@ +[plugin] +description = "dokku community builder-nixpacks plugin" +version = "1.0.0" +[plugin.config]