diff options
Diffstat (limited to '.ci-make.sh')
| -rwxr-xr-x | .ci-make.sh | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/.ci-make.sh b/.ci-make.sh index 7141acf..5e471ab 100755 --- a/.ci-make.sh +++ b/.ci-make.sh @@ -19,6 +19,40 @@ case "$1" in make "$@" exit $? ;; + "actions-prep") + case "$2" in + "build-forgejo-deb") + APREP_APT_EXTRAS="debhelper devscripts sudo" + ;; + "installtest") + APREP_APT_EXTRAS="sudo" + ;; + "") + APREP_APT_EXTRAS= + ;; + *) + echo "Invalid argument: $2" + exit 98 + ;; + esac + EXIT_TOTAL=0 + apt update + EXIT_TOTAL=$(($EXIT_TOTAL+$?)) + apt upgrade -y + EXIT_TOTAL=$(($EXIT_TOTAL+$?)) + if [ "$APREP_APT_EXTRAS" ] ; then + apt install $APREP_APT_EXTRAS -y + EXIT_TOTAL=$(($EXIT_TOTAL+$?)) + fi + ACTIONS_FORGEJOSHA="$(git rev-parse --short=10 HEAD)" + if [ "$GITHUB_REF_TYPE" = "tag" ] ; then + echo "::set-output name=artifactlabel::$GITHUB_REF_NAME-$ACTIONS_FORGEJOSHA" + else + echo "::set-output name=artifactlabel::$ACTIONS_FORGEJOSHA" + fi + echo "::set-output name=forgejosha::$ACTIONS_FORGEJOSHA" + exit $EXIT_TOTAL + ;; "ci-verify") RETRY_LOOPS=0 while [ $RETRY_LOOPS -le $CI_VERIFY_RETRY_COUNT ] ; do @@ -43,6 +77,40 @@ case "$1" in exit 255 ;; "download-binary") + if [ "$GITHUB_BASE_REF" ] ; then + echo "forgejo actions pull request mode" + echo "making sure you didn't break binary builds..." + PR_MODE=true + fi + if [ "$GITHUB_REF_TYPE" = "tag" ] ; then + echo "INFO: Forgejo Actions mode!" + CI_COMMIT_TAG="$GITHUB_REF_NAME" + elif [ "$GITHUB_REF_TYPE" = "branch" ] || [ $PR_MODE ] ; then + echo "WARNING: Not building a tag! Simulating it..." + echo "(forgejo actions mode)" + echo "(this will test the binary packaging without cutting a tag in the package)" + echo "Resolving tag..." + cd forgejo + CI_COMMIT_TAG_RESOLVE=$(git tag --points-at HEAD) + if [ ! $CI_COMMIT_TAG_RESOLVE ] ; then + echo "Failed to resolve exact tag! Getting as close as we can..." + git describe --tags HEAD + CI_COMMIT_TAG_RESOLVE=$(git describe --tags HEAD --abbrev=0) + echo "Closest existing tag: $CI_COMMIT_TAG_RESOLVE" + if [ "$CI_COMMIT_TAG_RESOLVE" != "${CI_COMMIT_TAG_RESOLVE%"-dev"}" ] || [ ! "$CI_COMMIT_TAG_RESOLVE" ] ; then + if [ $PR_MODE ] ; then + echo "I can't figure out which release version of Forgejo to build your PR against." + echo "Whatever you're trying to do is not yet implemented." + exit 97 + fi + echo "err! unable to resolve tag or building dev version- skipping binary dl" + CI_COMMIT_TAG_RESOLVE= + fi + fi + cd .. + echo "Proceeding with resolved tag: $CI_COMMIT_TAG_RESOLVE" + CI_COMMIT_TAG="$CI_COMMIT_TAG_RESOLVE" + fi if [ $CI_COMMIT_TAG ] ; then CI_RELEASE_ASSETS=$(curl $CI_VERIFY_API/api/v1/repos/$CI_VERIFY_REPO/releases/tags/$CI_COMMIT_TAG | jq -c '.assets[]' | grep linux-amd64) CI_RELEASE_BINARY_URL=$(echo "$CI_RELEASE_ASSETS" | grep linux-amd64\" | jq -r --jsonargs .browser_download_url) @@ -77,9 +145,17 @@ case "$1" in cat deb/.forgejo-bin.control >> deb/debian/control fi ;; + "package-build-deps") + cd deb + mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" --remove + exit $? + ;; "package-build") cd deb - dpkg-buildpackage -b + if [ "$2" = "actions" ] ; then + PACKAGE_BUILD_EXTRA_ARGS="--no-sign" + fi + dpkg-buildpackage -b $PACKAGE_BUILD_EXTRA_ARGS exit $? ;; "package-clean") |
