mirror of
https://code.forgejo.org/actions/cascading-pr.git
synced 2025-04-25 01:52:15 +00:00
96 lines
3.4 KiB
YAML
96 lines
3.4 KiB
YAML
name: integration
|
|
|
|
on: [push, pull_request_target]
|
|
|
|
jobs:
|
|
integration:
|
|
runs-on: self-hosted
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- id: forgejo
|
|
uses: https://code.forgejo.org/actions/setup-forgejo@v1
|
|
with:
|
|
user: root
|
|
password: admin1234
|
|
image: codeberg.org/forgejo-integration/forgejo
|
|
image-version: 1.21.0-3-rc0
|
|
lxc-ip-prefix: 10.1.15
|
|
|
|
- name: tests
|
|
run: |
|
|
.forgejo/run-test.sh
|
|
forgejo-test-helper.sh push_self_action http://root:admin1234@${{ steps.forgejo.outputs.host-port }} root forgejo-release vTest
|
|
|
|
- name: admin user create --username testuser
|
|
run: |
|
|
forgejo='docker exec --user 1000 forgejo forgejo'
|
|
user=testuser
|
|
if ! $forgejo admin user list | grep -q "$user" ; then
|
|
$forgejo admin user create --username "$user" --password "admin1324" --email "$user@example.com"
|
|
fi
|
|
|
|
- name: build & publish
|
|
run: |
|
|
set -x
|
|
|
|
version=1.2.3
|
|
cat > /etc/docker/daemon.json <<EOF
|
|
{
|
|
"insecure-registries" : ["${{ steps.forgejo.outputs.host-port }}"]
|
|
}
|
|
EOF
|
|
systemctl restart docker
|
|
|
|
apt-get install -qq -y xz-utils
|
|
|
|
dir=$(mktemp -d)
|
|
trap "rm -fr $dir" EXIT
|
|
|
|
url=http://root:admin1234@${{ steps.forgejo.outputs.host-port }}
|
|
export FORGEJO_RUNNER_LOGS="${{ steps.forgejo.outputs.runner-logs }}"
|
|
|
|
cp -a testdata/.forgejo testdata/* $dir
|
|
|
|
#
|
|
# root/forgejo: owner & repository in which the release will be built
|
|
#
|
|
forgejo-test-helper.sh push $dir $url root forgejo forgejo-release ${{ steps.forgejo.outputs.token }} |& tee $dir/pushed
|
|
eval $(grep '^sha=' < $dir/pushed)
|
|
#
|
|
# testuser/forgejo: owner & repository in which the release will be published
|
|
#
|
|
(
|
|
git clone $url/root/forgejo tmp-forgejo
|
|
cd tmp-forgejo
|
|
git push $url/testuser/forgejo main
|
|
)
|
|
|
|
#
|
|
# Push a tag to trigger the build workflow and wait for it to complete
|
|
#
|
|
forgejo-test-helper.sh api POST $url repos/root/forgejo/tags ${{ steps.forgejo.outputs.token }} --data-raw '{"tag_name": "v'$version'", "target": "'$sha'"}'
|
|
LOOPS=180 forgejo-test-helper.sh wait_success "$url" root/forgejo $sha
|
|
|
|
#
|
|
# uncomment to see the logs even when everything is reported to be working ok
|
|
#
|
|
#cat $FORGEJO_RUNNER_LOGS
|
|
|
|
for user in root testuser ; do
|
|
for arch in amd64 arm64 ; do
|
|
binary=software-$version-linux-$arch
|
|
for suffix in '' '.xz' ; do
|
|
curl --fail -L -sS $url/$user/forgejo/releases/download/v$version/$binary$suffix > $binary$suffix
|
|
if test "$suffix" = .xz ; then
|
|
unxz --keep $binary$suffix
|
|
fi
|
|
chmod +x $binary
|
|
./$binary --version | grep $version
|
|
curl --fail -L -sS $url/$user/forgejo/releases/download/v$version/$binary$suffix.sha256 > $binary$suffix.sha256
|
|
shasum -a 256 --check $binary$suffix.sha256
|
|
rm $binary$suffix
|
|
done
|
|
done
|
|
docker pull ${{ steps.forgejo.outputs.host-port }}/$user/forgejo:$version
|
|
done
|