build separate x86_64/aarch64 packages and explicitly define images

This commit is contained in:
2024-03-05 15:12:55 -08:00
parent 7c528766b0
commit 3c3af11360
4 changed files with 60 additions and 39 deletions
+1
View File
@@ -0,0 +1 @@
streamline-emr:2.0=registry.gitlab.com/signalytic/client-external/streamline/streamline-emr/arm64:2.0
+1
View File
@@ -0,0 +1 @@
streamline-emr:2.0=registry.gitlab.com/signalytic/client-external/streamline/streamline-emr/amd64:2.0
+62 -43
View File
@@ -41,51 +41,70 @@ else
VERSION_NAME="unknown" VERSION_NAME="unknown"
fi fi
OUTPUT_NAME="$PACKAGE_NAME-$VERSION_NAME-$(arch)" # build for each relevant platform
OUTPUT_FILE="$OUTPUT_NAME.tar.bz2" for platform in "linux/amd64" "linux/arm64"; do
OUTPUT_PATH="$OUTPUT_DIR/$OUTPUT_FILE" echo "preparing package for platform $platform"
if [ "$platform" == "linux/amd64" ];then
# create a new temp directory to stage files pkg_arch="x86_64"
for i in {1..9999};do elif [ "$platform" == "linux/arm64" ];then
STAGING_DIR="tmp-staging-$i" pkg_arch="aarch64"
if [ ! -d $STAGING_DIR ]; then else
break echo "unexpected platform '$platform'"
exit 1
fi fi
OUTPUT_NAME="$PACKAGE_NAME-$VERSION_NAME-${pkg_arch}"
OUTPUT_FILE="$OUTPUT_NAME.tar.bz2"
OUTPUT_PATH="$OUTPUT_DIR/$OUTPUT_FILE"
# create a new temp directory to stage files
for i in {1..9999};do
STAGING_DIR="tmp-staging-$i"
if [ ! -d $STAGING_DIR ]; then
break
fi
done
if [ -d $STAGING_DIR ]; then
echo "Failed to generate temp staging dir"
exit 1
fi
# add files
mkdir ${STAGING_DIR}
cp ${PROJECT_ROOT}/install.sh ${STAGING_DIR}/
cp -a ${PROJECT_ROOT}/root ${STAGING_DIR}/
# add images
IMAGES_DIR=${STAGING_DIR}/images
mkdir -p ${IMAGES_DIR}
i=0
# read image list from file (e.g. 'images-aarch64')
# images are listed as SAVED_TAG=SOURCE_IMAGE
for image in $(cat ${PROJECT_ROOT}/images-${pkg_arch});do
i=$((i+1))
name="image${i}.img"
path="${IMAGES_DIR}/${name}"
IFS=\= read -r dest source <<< "${image}"
echo "pulling image '${source}' (${platform})"
docker pull --platform ${platform} ${source}
echo "tagging image as '${dest}'"
docker tag ${source} ${dest}
echo "saving to '${path}'"
docker save -o ${path} $dest
done
# setup output directory and cleanup old files if necessary
mkdir -p $OUTPUT_DIR
rm -rf $OUTPUT_PATH
pushd $STAGING_DIR > /dev/null
tar -cjf $OUTPUT_PATH *
popd > /dev/null
# cleanup staging files
rm -r $STAGING_DIR
echo "output: $OUTPUT_PATH"
done done
if [ -d $STAGING_DIR ]; then
echo "Failed to generate temp staging dir"
exit 1
fi
# add files
mkdir ${STAGING_DIR}
cp ${PROJECT_ROOT}/install.sh ${STAGING_DIR}/
cp -a ${PROJECT_ROOT}/root ${STAGING_DIR}/
# add images
IMAGES_DIR=${STAGING_DIR}/images
mkdir -p ${IMAGES_DIR}
i=0
for image in $(find root/ -name docker-compose.yml | xargs grep 'image:.*' | awk '{print $2}');do
i=$((i+1))
name="image${i}.img"
echo "addding '$name' -> '$image'"
docker pull $image
docker save -o ${IMAGES_DIR}/$name $image
done
# setup output directory and cleanup old files if necessary
mkdir -p $OUTPUT_DIR
rm -rf $OUTPUT_PATH
pushd $STAGING_DIR > /dev/null
tar -cjf $OUTPUT_PATH *
popd > /dev/null
# cleanup staging files
rm -r $STAGING_DIR
echo "output: $OUTPUT_PATH"
popd > /dev/null popd > /dev/null
@@ -1,7 +1,7 @@
version: '3.9' version: '3.9'
services: services:
streamline-emr: streamline-emr:
image: registry.gitlab.com/signalytic/client-external/streamline/streamline-emr:2.0 image: streamline-emr:2.0
container_name: ${CONTAINER_NAME:-streamline-emr} container_name: ${CONTAINER_NAME:-streamline-emr}
volumes: volumes:
- "${DATA_DIR:-/var/signalytic/clientapps/streamline/streamline-emr/data}:/var/lib/mysql" - "${DATA_DIR:-/var/signalytic/clientapps/streamline/streamline-emr/data}:/var/lib/mysql"