mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
* Rejig the build process During a build, we check and rebuild any dependencies prior to potentially using them. Build: - DIND (this only produces a new docker image, no local code changes) - fnserver (built as part of the testing) On master, if everything works, then we release the built artifacts, if necessary: - DIND (this pushes a docker image and a tag) - fnserver (this builds the docker image and releases it, if necessary). Fnserver is dealt with last by the release script: all previous steps in CI use locally-run go tests rather than a docker file. When a commit happens, we need to know (a) if we need to rebuild a set of tools and artifacts (or whether we can continue to use published ones); and (b) if we need to release new versions of those tools, if all tests pass. We do this by identifying the previous release tag on origin/master (which is the release branch), then checking for changes between that point at the current one. Those changes may appear in various places in the tree: some simple boolean rules work out whether the change means we need to rebuild and rerelease. * Make the fnproject/fnserver build use the latest dind As docker bumps from 17.12.x, use whatever dind we just built. * Use bash
38 lines
929 B
Bash
Executable File
38 lines
929 B
Bash
Executable File
#!/bin/bash
|
|
set -exuo pipefail
|
|
|
|
user="fnproject"
|
|
image="fnserver"
|
|
image_deprecated="functions"
|
|
|
|
# ensure working dir is clean
|
|
git status
|
|
if [[ -z $(git status -s) ]]
|
|
then
|
|
echo "tree is clean"
|
|
else
|
|
echo "tree is dirty, please commit changes before running this"
|
|
exit 1
|
|
fi
|
|
|
|
version=$(grep -m1 -Eo "[0-9]+\.[0-9]+\.[0-9]+" $version_file)
|
|
echo "Version: $version"
|
|
|
|
# Push the version bump and tags laid down previously
|
|
gtag=$image-$version
|
|
git push
|
|
git push origin $version
|
|
|
|
# Finally, push docker images
|
|
docker push $user/$image:$version
|
|
docker push $user/$image:latest
|
|
|
|
# Deprecated images, should remove this sometime in near future
|
|
docker tag $user/$image:latest $user/$image_deprecated:$version
|
|
docker tag $user/$image:latest $user/$image_deprecated:latest
|
|
docker push $user/$image_deprecated:$version
|
|
docker push $user/$image_deprecated:latest
|
|
|
|
# release test utils docker image
|
|
(cd images/fn-test-utils && ./release.sh)
|