46 lines
1.2 KiB
Bash
Executable file
46 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -ex
|
|
|
|
forgejo=$1
|
|
forgejo_pr=$2
|
|
runner=$3
|
|
runner_pr_or_ref=$4
|
|
|
|
#
|
|
# Get information from the runner
|
|
#
|
|
cd $runner
|
|
#
|
|
# code.forgejo.org/forgejo/runner/vN may be
|
|
# upgraded to code.forgejo.org/forgejo/runner/vN+1
|
|
#
|
|
module=$(cat go.mod | head -1 | cut -d' ' -f2)
|
|
test "$module"
|
|
sha=$(git -C $runner show --no-patch --format=%H)
|
|
test "$sha"
|
|
|
|
#
|
|
# Update Forgejo to use the runner at $runner_pr_or_ref
|
|
#
|
|
cd $forgejo
|
|
#
|
|
# Update the runner major version if needed
|
|
#
|
|
find * -name '*.go' -o -name 'go.mod' | xargs sed -i -E -e "s|code.forgejo.org/forgejo/runner/v[0-9]+|$module|"
|
|
#
|
|
# If it is a pull request, change the module to reference the forked repository so
|
|
# go mod tidy can find the SHA from a known branch or tag
|
|
#
|
|
if test -f "$runner_pr_or_ref"; then
|
|
repository=$(jq --raw-output .head.repo.full_name <$runner_pr_or_ref)
|
|
test "$repository"
|
|
module=$(echo $module | sed -e "s|code.forgejo.org/forgejo/runner|code.forgejo.org/$repository|")
|
|
fi
|
|
#
|
|
# add a "replace code.forgejo.org/forgejo/runner/v?? $sha" line to the forgejo go.mod
|
|
# so that it uses the branch or pull request from which the cascade is run.
|
|
#
|
|
sed -i -e "\|replace $module|d" go.mod
|
|
echo "replace $module => $module $sha" >>go.mod
|
|
go mod tidy
|