From 02bf1874ef7a5d474dbf421cde3eda81e05807d5 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Tue, 12 Mar 2024 18:08:38 -0400 Subject: Set up a Debian-based builder, to make it easier to distribute this to AMIs. --- .envrc | 1 + Dockerfile.builder | 11 +++++++++++ tools/build-builder | 13 +++++++++++++ tools/build-debian | 17 +++++++++++++++++ tools/version | 11 +++++++++++ 5 files changed, 53 insertions(+) create mode 100644 Dockerfile.builder create mode 100755 tools/build-builder create mode 100755 tools/build-debian create mode 100755 tools/version diff --git a/.envrc b/.envrc index 5aa5cd3..63d6803 100644 --- a/.envrc +++ b/.envrc @@ -1,3 +1,4 @@ +PATH_add tools PATH_add target/debug source_env_if_exists .envrc.local diff --git a/Dockerfile.builder b/Dockerfile.builder new file mode 100644 index 0000000..c04abde --- /dev/null +++ b/Dockerfile.builder @@ -0,0 +1,11 @@ +FROM rust:1-slim-bookworm + +RUN apt-get update \ + && apt-get install -y \ + dpkg-dev \ + && true + +RUN cargo install cargo-deb + +RUN mkdir /app +WORKDIR /app diff --git a/tools/build-builder b/tools/build-builder new file mode 100755 index 0000000..702448f --- /dev/null +++ b/tools/build-builder @@ -0,0 +1,13 @@ +#!/bin/bash -e + +## tools/build-builder +## +## Builds a Docker image containing the Debian package builder. + +cd "$(dirname "$0")/.." + +docker build \ + --tag "aws-autoscaling-dns-builder:$(tools/version)" \ + --tag "aws-autoscaling-dns-builder:latest" \ + --file Dockerfile.builder \ + . diff --git a/tools/build-debian b/tools/build-debian new file mode 100755 index 0000000..e589fa4 --- /dev/null +++ b/tools/build-debian @@ -0,0 +1,17 @@ +#!/bin/bash -e + +## tools/build-builder +## +## Builds a Debian package for the current tree. Output in ./target/debian. +## +## Requires the Debian builder (see tools/build-builder). + +cd "$(dirname "$0")/.." + +docker run \ + --rm \ + --interactive \ + --tty \ + --volume "$PWD:/app" \ + "aws-autoscaling-dns-builder:$(tools/version)" \ + cargo deb diff --git a/tools/version b/tools/version new file mode 100755 index 0000000..cc7e679 --- /dev/null +++ b/tools/version @@ -0,0 +1,11 @@ +#!/bin/bash -e + +## tools/version +## +## Print the current version of the project to stdout. Data comes from Cargo. + +cd "$(dirname "$0")/.." + +cargo metadata \ + --format-version 1 | +jq -r '.packages[] | select(.name == "aws-autoscaling-dns") | .version' -- cgit v1.2.3