Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,11 @@ jobs:
AssemblySemVer: ${{ steps.version.outputs.AssemblySemVer }}
AssemblySemFileVer: ${{ steps.version.outputs.AssemblySemFileVer }}
InformationalVersion: ${{ steps.version.outputs.InformationalVersion }}
run: docker run --mount type=bind,source="$(pwd)",target=/home/builder/packages/lfmerge --env "BUILD_NUMBER=${BUILD_NUMBER}" --env "DebPackageVersion=${DebPackageVersion}" --env "Version=${MsBuildVersion}" --env "MajorMinorPatch=${MajorMinorPatch}" --env "AssemblyVersion=${AssemblySemVer}" --env "FileVersion=${AssemblySemFileVer}" --env "InformationalVersion=${InformationalVersion}" --name tmp-lfmerge-build-${{matrix.dbversion}} lfmerge-build-${{matrix.dbversion}}
run: docker run --mount type=bind,source="$(pwd)",target=/home/builder/repo --env "BUILD_NUMBER=${BUILD_NUMBER}" --env "DebPackageVersion=${DebPackageVersion}" --env "Version=${MsBuildVersion}" --env "MajorMinorPatch=${MajorMinorPatch}" --env "AssemblyVersion=${AssemblySemVer}" --env "FileVersion=${AssemblySemFileVer}" --env "InformationalVersion=${InformationalVersion}" --name tmp-lfmerge-build-${{matrix.dbversion}} lfmerge-build-${{matrix.dbversion}}

- name: Collect Debian images
if: steps.should_run.outcome == 'success'
run: docker container cp tmp-lfmerge-build-${{matrix.dbversion}}:/home/builder/packages/lfmerge/finalresults ./

# actions/upload-artifact@v2.2.4 is commit 27121b0bdffd731efa15d66772be8dc71245d074
- uses: actions/upload-artifact@27121b0bdffd731efa15d66772be8dc71245d074
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ USER builder

# Git repo should be mounted under ${HOME}/packages/lfmerge when run
# E.g., `docker run --mount type=bind,source="$(pwd)",target=/home/builder/packages/lfmerge`
RUN mkdir -p /home/builder/packages/lfmerge
CMD /home/builder/packages/lfmerge/docker/scripts/build-and-test.sh ${DbVersion}
RUN mkdir -p /home/builder/repo /home/builder/packages/lfmerge
CMD /home/builder/repo/docker/scripts/build-and-test.sh ${DbVersion}
# CMD doesn't actually run the script, it just gives `docker run` a default.
# So it's okay for the Git repo to not be mounted yet.
14 changes: 9 additions & 5 deletions docker/scripts/build-and-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@ export DbVersion="${1-7000072}"
echo "Building for ${DbVersion}"
sudo mkdir -p /usr/lib/lfmerge/${DbVersion}

# Assumptions:
# - Git repo is mounted under ${HOME}/packages/lfmerge
# - Scripts live in ${HOME}/packages/lfmerge/docker/scripts
cd /home/builder/packages/lfmerge
# Assuming script is being run from inside the repo, find the repo root and use that as the working directory from now on
echo "Script dir is ${SCRIPT_DIR}"
cd "${SCRIPT_DIR}"
REPO_ROOT="$(git rev-parse --show-toplevel)"
echo "Repo root is ${REPO_ROOT}"
cd "${REPO_ROOT}"

"$SCRIPT_DIR"/setup-workspace.sh ${DBVersion}
"$SCRIPT_DIR"/setup-workspace.sh "${HOME}/packages/lfmerge"

echo After setup-workspace.sh, pwd is $(pwd)

"$SCRIPT_DIR"/gitversion-combined.sh ${DbVersion}

Expand Down
3 changes: 0 additions & 3 deletions docker/scripts/build-debpackages-combined.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,9 @@ cd ${HOME}/packages/lfmerge
mkdir -p finalresults
rm -f finalresults/*
rm -f lfmerge-*

export MONO_PREFIX=/opt/mono5-sil
RUNMODE="PACKAGEBUILD" BUILD=Release . environ

cd -

# for ((curDbVersion=7000068; curDbVersion<=7000070; curDbVersion++)); do
echo -e "\033[0;34mBuilding package for database version ${curDbVersion}\033[0m"

Expand Down
30 changes: 14 additions & 16 deletions docker/scripts/setup-workspace.sh
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
#!/bin/bash

# Assumptions:
# - Git repo is mounted under ${HOME}/packages/lfmerge
# - fw8-flexbridge.tar.xz dependency is mounted under ${HOME}/dependencies
DEST="${1:-${HOME}/packages/lfmerge}"

export MONO_PREFIX=/opt/mono5-sil

mkdir -p ${HOME}/.gnupg ${HOME}/ci-builder-scripts/bash ${HOME}/packages/lfmerge
mkdir -p "${HOME}/.gnupg" "${HOME}/ci-builder-scripts/bash" "${DEST}"

sudo chown -R builder:users ${HOME}/packages/lfmerge
REPO_ROOT="$(git rev-parse --show-toplevel)"

cd ${HOME}/packages/lfmerge
# cp -a "${REPO_ROOT}" "${DEST}" creates ${DEST}/repo and then everything is under there. That's not actually what we want. So...
sudo cp -a "${REPO_ROOT}"/* "${REPO_ROOT}"/.[a-zA-Z0-9]* "${DEST}"
sudo chown -R builder:users "${DEST}"
# The make-source shell script (and its common.sh helper) expects to live under ${HOME}/ci-builder-scripts/bash, so make sure that's the case
mkdir -p "${HOME}/ci-builder-scripts/bash"
cp "${DEST}/docker/common.sh" "${HOME}/ci-builder-scripts/bash/"
cp "${DEST}/docker/make-source" "${HOME}/ci-builder-scripts/bash/"

cd "${DEST}"
git clean -dxf --exclude=packages/
git reset --hard

# Instead of downloading FLExBridge DLLs which have vanished from TeamCity, store them in the Docker image
# FLExBridge dependencies from FW 8 builds have vanished from TeamCity, so we stored them in the Docker image under ${REPO_ROOT}/docker
mkdir -p lib
cp ${HOME}/dependencies/fw8-flexbridge.tar.xz lib/

# TODO: Consider running a package restore here so that it's cached in the build image instead of having to run in the container each time
# E.g., call download-dependencies-combined.sh at this point

# The make-source shell script (and its common.sh helper) expects to live under ${HOME}/ci-builder-scripts/bash, so make sure that's the case
mkdir -p ${HOME}/ci-builder-scripts/bash
cp ${HOME}/packages/lfmerge/docker/common.sh ${HOME}/ci-builder-scripts/bash/
cp ${HOME}/packages/lfmerge/docker/make-source ${HOME}/ci-builder-scripts/bash/
(cd lib && xz -dc "${REPO_ROOT}/docker/fw8-flexbridge.tar.xz" | tar xf -)