Skip to content

Commit 1f3c282

Browse files
author
Pat
authored
packaging: build from source rather than tar (#5050)
Signed-off-by: Patrick Stephens <[email protected]>
1 parent f19daf1 commit 1f3c282

File tree

9 files changed

+35
-143
lines changed

9 files changed

+35
-143
lines changed

.github/workflows/build-master-packages.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ jobs:
4646
with:
4747
version: master
4848
ref: master
49-
branch: master
5049
build_matrix: ${{ needs.master-build-generate-matrix.outputs.build-matrix }}
5150
secrets:
5251
token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/call-build-packages.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ on:
2020
description: The Github environment to run this workflow on.
2121
type: string
2222
required: false
23-
branch:
24-
description: The optional source code branch to use for building against.
25-
type: string
26-
required: false
2723
unstable:
2824
description: Optionally add metadata to build to indicate an unstable build, set to the contents you want to add.
2925
type: string
@@ -81,10 +77,8 @@ jobs:
8177
run: |
8278
./build.sh
8379
env:
84-
FLB_VERSION: ${{ inputs.version }}
8580
FLB_DISTRO: ${{ matrix.distro }}
8681
FLB_OUT_DIR: staging
87-
FLB_BRANCH: ${{ inputs.branch }}
8882
FLB_TD: "Off"
8983
FLB_NIGHTLY_BUILD: ${{ inputs.unstable }}
9084
CMAKE_INSTALL_PREFIX: /opt/fluent-bit/
@@ -94,10 +88,8 @@ jobs:
9488
run: |
9589
./build.sh
9690
env:
97-
FLB_VERSION: ${{ inputs.version }}
9891
FLB_DISTRO: ${{ matrix.distro }}
9992
FLB_OUT_DIR: staging
100-
FLB_BRANCH: ${{ inputs.branch }}
10193
FLB_TD: "On"
10294
FLB_NIGHTLY_BUILD: ${{ inputs.unstable }}
10395
CMAKE_INSTALL_PREFIX: /opt/td-agent-bit/

packaging/build.sh

Lines changed: 12 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
#!/bin/bash
2-
set -eu
2+
set -eux
33

44
# Never rely on PWD so we can invoke from anywhere
55
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
66

77
# Allow us to specify in the caller or pass variables
8-
FLB_BRANCH=${FLB_BRANCH:-}
9-
FLB_PREFIX=${FLB_PREFIX:-}
10-
FLB_VERSION=${FLB_VERSION:-}
118
FLB_DISTRO=${FLB_DISTRO:-}
129
FLB_OUT_DIR=${FLB_OUT_DIR:-}
13-
FLB_TARGZ=${FLB_TARGZ:-}
1410
FLB_NIGHTLY_BUILD=${FLB_NIGHTLY_BUILD:-}
1511
FLB_JEMALLOC=${FLB_JEMALLOC:-On}
1612

@@ -21,48 +17,35 @@ while getopts "v:d:b:t:o:" option
2117
do
2218
case "${option}"
2319
in
24-
v) FLB_VERSION=${OPTARG};;
2520
d) FLB_DISTRO=${OPTARG};;
26-
b) FLB_BRANCH=${OPTARG};;
27-
t) FLB_TARGZ=${OPTARG};;
2821
o) FLB_OUT_DIR=${OPTARG};;
2922
*) echo "Unknown option";;
3023
esac
3124
done
3225

33-
if [ -z "$FLB_VERSION" ] || [ -z "$FLB_DISTRO" ]; then
26+
if [ -z "$FLB_DISTRO" ]; then
3427
echo "$@"
35-
echo "Usage: build.sh -v VERSION -d DISTRO"
36-
echo " ^ ^ "
37-
echo " | 1.9.0 | ubuntu/20.04"
28+
echo "Usage: build.sh -d DISTRO"
29+
echo " ^ "
30+
echo " | ubuntu/20.04"
3831
exit 1
3932
fi
4033

41-
if [ -z "$FLB_BRANCH" ]; then
42-
# The standard tags have a v prefix but we may want to build others
43-
if curl -sL --output /dev/null --head --fail --retry 3 "http://github.com/fluent/fluent-bit/archive/v$FLB_VERSION.zip" ; then
44-
FLB_PREFIX="v"
45-
fi
46-
fi
47-
4834
# Prepare output directory
4935
if [ -n "$FLB_OUT_DIR" ]; then
5036
out_dir=$FLB_OUT_DIR
5137
else
5238
out_dir=$(date '+%Y-%m-%d-%H_%M_%S')
5339
fi
5440

55-
volume="$SCRIPT_DIR/packages/$FLB_DISTRO/$FLB_VERSION/$out_dir/"
41+
volume="$SCRIPT_DIR/packages/$FLB_DISTRO/$out_dir/"
5642
mkdir -p "$volume"
5743

5844
# Info
59-
echo "FLB_PREFIX => $FLB_PREFIX"
60-
echo "FLB_VERSION => $FLB_VERSION"
6145
echo "FLB_DISTRO => $FLB_DISTRO"
62-
echo "FLB_SRC => $FLB_TARGZ"
6346
echo "FLB_OUT_DIR => $FLB_OUT_DIR"
6447

65-
MAIN_IMAGE="flb-$FLB_VERSION-$FLB_DISTRO"
48+
MAIN_IMAGE="flb-$FLB_DISTRO"
6649

6750
# We either have a specific Dockerfile in the distro directory or we have a generic multi-stage one for all
6851
# of the same OS type:
@@ -82,39 +65,13 @@ if [[ ! -f "$IMAGE_CONTEXT_DIR/Dockerfile" ]]; then
8265
exit 1
8366
fi
8467

85-
echo "IMAGE_CONTEXT_DIR => $IMAGE_CONTEXT_DIR"
86-
87-
# Create sources directory if it does not exist
88-
mkdir -p "$IMAGE_CONTEXT_DIR/sources"
89-
90-
# Set tarball as an argument (./build.sh VERSION DISTRO/CODENAME -t something.tar.gz)
91-
if [ -n "$FLB_TARGZ" ]; then
92-
# Check if we have a local tarball
93-
if [[ ! -f "$FLB_TARGZ" ]]; then
94-
echo "Unable to find tarball: $FLB_TARGZ"
95-
exit 1
96-
fi
97-
98-
# Copy tarball
99-
cp "$FLB_TARGZ" "$IMAGE_CONTEXT_DIR/sources/"
100-
# Set build argument (ensure we strip off any path)
101-
FLB_ARG="$FLB_ARG --build-arg FLB_SRC=$(basename "$FLB_TARGZ")"
102-
else
103-
# Check we have a valid remote source URL
104-
FLB_SOURCE_URL="http://github.com/fluent/fluent-bit/archive/$FLB_PREFIX$FLB_VERSION.zip"
105-
if ! curl -sL --output /dev/null --head --fail --retry 3 "$FLB_SOURCE_URL" ; then
106-
echo "Unable to download source from URL:$FLB_SOURCE_URL "
107-
exit 1
108-
fi
109-
fi
110-
11168
# CMake configuration variables, override via environment rather than parameters
11269
CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX:-/opt/td-agent-bit/}
11370
FLB_TD=${FLB_TD:-On}
11471

72+
echo "IMAGE_CONTEXT_DIR => $IMAGE_CONTEXT_DIR"
11573
echo "CMAKE_INSTALL_PREFIX => $CMAKE_INSTALL_PREFIX"
11674
echo "FLB_TD => $FLB_TD"
117-
echo "FLB_ARG => $FLB_ARG"
11875
echo "FLB_NIGHTLY_BUILD => $FLB_NIGHTLY_BUILD"
11976
echo "FLB_JEMALLOC => $FLB_JEMALLOC"
12077

@@ -125,12 +82,12 @@ export DOCKER_BUILDKIT=1
12582
if ! docker build \
12683
--build-arg CMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \
12784
--build-arg FLB_TD="$FLB_TD" \
128-
--build-arg FLB_VERSION="$FLB_VERSION" \
129-
--build-arg FLB_PREFIX="$FLB_PREFIX" \
13085
--build-arg FLB_NIGHTLY_BUILD="$FLB_NIGHTLY_BUILD" \
13186
--build-arg FLB_JEMALLOC="$FLB_JEMALLOC" \
13287
$FLB_ARG \
133-
-t "$MAIN_IMAGE" "$IMAGE_CONTEXT_DIR"
88+
-t "$MAIN_IMAGE" \
89+
-f "$IMAGE_CONTEXT_DIR/Dockerfile" \
90+
"$SCRIPT_DIR/.."
13491
then
13592
echo "Error building main docker image $MAIN_IMAGE"
13693
exit 1
@@ -141,15 +98,10 @@ if ! docker run \
14198
-v "$volume":/output \
14299
"$MAIN_IMAGE"
143100
then
144-
echo "Could not compile on image $MAIN_IMAGE"
101+
echo "Could not compile using image $MAIN_IMAGE"
145102
exit 1
146103
fi
147104

148-
# Delete image on success
149-
if [ -n "$(docker images -q "$MAIN_IMAGE")" ]; then
150-
docker rmi -f "$MAIN_IMAGE"
151-
fi
152-
153105
echo
154106
echo "Package(s) generated at: $volume"
155107
echo

packaging/distros/amazonlinux/Dockerfile

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,15 @@ RUN yum -y update && \
3838
# Common build for all distributions now
3939
# hadolint ignore=DL3006
4040
FROM $BASE_BUILDER as builder
41-
ARG FLB_PREFIX
42-
ARG FLB_VERSION
43-
ARG FLB_SRC
44-
45-
ENV FLB_PREFIX=$FLB_PREFIX
46-
ENV FLB_VERSION=$FLB_VERSION
47-
ENV FLB_SRC=$FLB_SRC
4841

4942
ARG FLB_NIGHTLY_BUILD
5043
ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD
5144

52-
ENV FLB_TARBALL http://github.com/fluent/fluent-bit/archive/$FLB_PREFIX$FLB_VERSION.zip
53-
COPY sources/$FLB_SRC /
54-
55-
WORKDIR /tmp
56-
RUN if [ -z "$FLB_SRC" ] ; then wget -q -O "/tmp/fluent-bit-${FLB_VERSION}.zip" ${FLB_TARBALL} && unzip "fluent-bit-$FLB_VERSION.zip" ; else tar zxfv "/$FLB_SRC" ; fi
45+
# Docker context must be the base of the repo
46+
WORKDIR /tmp/fluent-bit/
47+
COPY . ./
5748

49+
WORKDIR /tmp/fluent-bit/build/
5850
# CMake configuration variables
5951
# Unused
6052
ARG CFLAGS
@@ -69,7 +61,6 @@ ARG FLB_OUT_KAFKA=On
6961
ARG FLB_OUT_PGSQL=On
7062
ARG FLB_JEMALLOC=On
7163

72-
WORKDIR /tmp/fluent-bit-$FLB_VERSION/build/
7364
RUN cmake3 -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \
7465
-DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \
7566
-DFLB_RELEASE="$FLB_RELEASE" \

packaging/distros/centos/Dockerfile

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,23 +101,15 @@ ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS
101101
# Common build for all distributions now
102102
# hadolint ignore=DL3006
103103
FROM $BASE_BUILDER as builder
104-
ARG FLB_PREFIX
105-
ARG FLB_VERSION
106-
ARG FLB_SRC
107-
108-
ENV FLB_PREFIX=$FLB_PREFIX
109-
ENV FLB_VERSION=$FLB_VERSION
110-
ENV FLB_SRC=$FLB_SRC
111104

112105
ARG FLB_NIGHTLY_BUILD
113106
ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD
114107

115-
ENV FLB_TARBALL http://github.com/fluent/fluent-bit/archive/$FLB_PREFIX$FLB_VERSION.zip
116-
COPY sources/$FLB_SRC /
117-
118-
WORKDIR /tmp
119-
RUN if [ -z "$FLB_SRC" ] ; then wget -q -O "/tmp/fluent-bit-${FLB_VERSION}.zip" ${FLB_TARBALL} && unzip "fluent-bit-$FLB_VERSION.zip" ; else tar zxfv "/$FLB_SRC" ; fi
108+
# Docker context must be the base of the repo
109+
WORKDIR /tmp/fluent-bit/
110+
COPY . ./
120111

112+
WORKDIR /tmp/fluent-bit/build/
121113
# CMake configuration variables
122114
# Unused
123115
ARG CFLAGS
@@ -131,7 +123,6 @@ ARG FLB_HTTP_SERVER=On
131123
ARG FLB_OUT_KAFKA=On
132124
ARG FLB_JEMALLOC=On
133125

134-
WORKDIR /tmp/fluent-bit-$FLB_VERSION/build/
135126
# cmake3 exists in every image - cmake references the older cmake2 in centos 7
136127
RUN cmake3 -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \
137128
-DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \

packaging/distros/debian/Dockerfile

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,23 +69,14 @@ RUN apt-get -qq update && \
6969
# hadolint ignore=DL3006
7070
FROM $BASE_BUILDER as builder
7171

72-
ARG FLB_PREFIX
73-
ARG FLB_VERSION
74-
ARG FLB_SRC
75-
76-
ENV FLB_PREFIX=$FLB_PREFIX
77-
ENV FLB_VERSION=$FLB_VERSION
78-
ENV FLB_SRC=$FLB_SRC
79-
8072
ARG FLB_NIGHTLY_BUILD
8173
ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD
8274

83-
ENV FLB_TARBALL http://github.com/fluent/fluent-bit/archive/$FLB_PREFIX$FLB_VERSION.zip
84-
COPY sources/$FLB_SRC /
85-
86-
WORKDIR /tmp
87-
RUN if [ -z "$FLB_SRC" ] ; then wget -q -O "/tmp/fluent-bit-${FLB_VERSION}.zip" ${FLB_TARBALL} && unzip "fluent-bit-$FLB_VERSION.zip" ; else tar zxfv "/$FLB_SRC" ; fi
75+
# Docker context must be the base of the repo
76+
WORKDIR /tmp/fluent-bit/
77+
COPY . ./
8878

79+
WORKDIR /tmp/fluent-bit/build/
8980
# CMake configuration variables
9081
ARG CFLAGS="-std=gnu99"
9182
ARG CMAKE_INSTALL_PREFIX=/opt/td-agent-bit/
@@ -99,7 +90,6 @@ ARG FLB_OUT_KAFKA=On
9990
ARG FLB_OUT_PGSQL=On
10091
ARG FLB_JEMALLOC=On
10192

102-
WORKDIR /tmp/fluent-bit-$FLB_VERSION/build/
10393
ENV CFLAGS=$CFLAGS
10494
RUN cmake -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \
10595
-DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \

packaging/distros/raspbian/Dockerfile

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,14 @@ RUN apt-get -qq update && \
3939
# hadolint ignore=DL3006
4040
FROM $BASE_BUILDER as builder
4141

42-
ARG FLB_PREFIX
43-
ARG FLB_VERSION
44-
ARG FLB_SRC
45-
46-
ENV FLB_PREFIX=$FLB_PREFIX
47-
ENV FLB_VERSION=$FLB_VERSION
48-
ENV FLB_SRC=$FLB_SRC
49-
5042
ARG FLB_NIGHTLY_BUILD
5143
ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD
5244

53-
ENV FLB_TARBALL http://github.com/fluent/fluent-bit/archive/$FLB_PREFIX$FLB_VERSION.zip
54-
COPY sources/$FLB_SRC /
55-
56-
WORKDIR /tmp
57-
RUN if [ -z "$FLB_SRC" ] ; then wget -q -O "/tmp/fluent-bit-${FLB_VERSION}.zip" ${FLB_TARBALL} && unzip "fluent-bit-$FLB_VERSION.zip" ; else tar zxfv "/$FLB_SRC" ; fi
45+
# Docker context must be the base of the repo
46+
WORKDIR /tmp/fluent-bit/
47+
COPY . ./
5848

49+
WORKDIR /tmp/fluent-bit/build/
5950
# CMake configuration variables
6051
ARG CFLAGS="-std=gnu99"
6152
ARG CMAKE_INSTALL_PREFIX=/opt/td-agent-bit/
@@ -69,7 +60,6 @@ ARG FLB_OUT_KAFKA=On
6960
ARG FLB_OUT_PGSQL=On
7061
ARG FLB_JEMALLOC=On
7162

72-
WORKDIR /tmp/fluent-bit-$FLB_VERSION/build/
7363
ENV CFLAGS=$CFLAGS
7464
RUN cmake -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \
7565
-DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \

packaging/distros/ubuntu/Dockerfile

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,14 @@ RUN apt-get -qq update && \
9696
# hadolint ignore=DL3006
9797
FROM $BASE_BUILDER as builder
9898

99-
ARG FLB_PREFIX
100-
ARG FLB_VERSION
101-
ARG FLB_SRC
102-
103-
ENV FLB_PREFIX=$FLB_PREFIX
104-
ENV FLB_VERSION=$FLB_VERSION
105-
ENV FLB_SRC=$FLB_SRC
106-
10799
ARG FLB_NIGHTLY_BUILD
108100
ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD
109101

110-
ENV FLB_TARBALL http://github.com/fluent/fluent-bit/archive/$FLB_PREFIX$FLB_VERSION.zip
111-
COPY sources/$FLB_SRC /
112-
113-
WORKDIR /tmp
114-
RUN if [ -z "$FLB_SRC" ] ; then wget -q -O "/tmp/fluent-bit-${FLB_VERSION}.zip" ${FLB_TARBALL} && unzip "fluent-bit-$FLB_VERSION.zip" ; else tar zxfv "/$FLB_SRC" ; fi
102+
# Docker context must be the base of the repo
103+
WORKDIR /tmp/fluent-bit/
104+
COPY . ./
115105

106+
WORKDIR /tmp/fluent-bit/build/
116107
# CMake configuration variables
117108
ARG CFLAGS="-std=gnu99"
118109
ARG CMAKE_INSTALL_PREFIX=/opt/td-agent-bit/
@@ -126,7 +117,6 @@ ARG FLB_OUT_KAFKA=On
126117
ARG FLB_OUT_PGSQL=On
127118
ARG FLB_JEMALLOC=On
128119

129-
WORKDIR /tmp/fluent-bit-$FLB_VERSION/build/
130120
ENV CFLAGS=$CFLAGS
131121
RUN cmake -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \
132122
-DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \

packaging/local-build-all.sh

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,14 @@ PACKAGING_OUTPUT_DIR=${PACKAGING_OUTPUT_DIR:-test}
2626
echo "Cleaning any existing output"
2727
rm -rf "${PACKAGING_OUTPUT_DIR:?}/*"
2828

29-
# We need a version of the source code to build
30-
FLB_VERSION=${FLB_VERSION:-1.8.12}
31-
3229
# Iterate over each target and attempt to build it.
3330
# Verify that an RPM or DEB is created.
3431
for DISTRO in "${TARGETS[@]}"
3532
do
3633
echo "$DISTRO"
37-
FLB_OUT_DIR="$PACKAGING_OUTPUT_DIR" /bin/bash "$SCRIPT_DIR"/build.sh -d "$DISTRO" -v "$FLB_VERSION" "$@"
38-
if [[ -z $(find "${SCRIPT_DIR}/packages/$DISTRO/$FLB_VERSION/$PACKAGING_OUTPUT_DIR/" -type f \( -iname "*-bit-*.rpm" -o -iname "*-bit-*.deb" \) | head -n1) ]]; then
39-
echo "Unable to find any $FLB_VERSION binary packages in: ${SCRIPT_DIR}/packages/$DISTRO/$FLB_VERSION/$PACKAGING_OUTPUT_DIR"
34+
FLB_OUT_DIR="$PACKAGING_OUTPUT_DIR" /bin/bash "$SCRIPT_DIR"/build.sh -d "$DISTRO" "$@"
35+
if [[ -z $(find "${SCRIPT_DIR}/packages/$DISTRO/$PACKAGING_OUTPUT_DIR/" -type f \( -iname "*-bit-*.rpm" -o -iname "*-bit-*.deb" \) | head -n1) ]]; then
36+
echo "Unable to find any binary packages in: ${SCRIPT_DIR}/packages/$DISTRO/$PACKAGING_OUTPUT_DIR"
4037
exit 1
4138
fi
4239
done

0 commit comments

Comments
 (0)