mirror of
https://code.forgejo.org/actions/forgejo-release.git
synced 2024-11-28 12:54:46 +01:00
recursive tests
This commit is contained in:
parent
245db64a1e
commit
d37076a4e9
3 changed files with 113 additions and 1 deletions
|
@ -8,8 +8,14 @@ jobs:
|
||||||
uses: https://code.forgejo.org/actions/setup-forgejo@v1
|
uses: https://code.forgejo.org/actions/setup-forgejo@v1
|
||||||
with:
|
with:
|
||||||
user: testuser
|
user: testuser
|
||||||
|
password: admin1234
|
||||||
image-version: 1.19
|
image-version: 1.19
|
||||||
- run: |
|
- name: 001
|
||||||
|
run: |
|
||||||
|
testdata/run.sh push_self http://testuser:admin1234@${{ steps.forgejo.outputs.host-port }} testuser setup-forgejo-release
|
||||||
|
testdata/run.sh workflow http://testuser:admin1234@${{ steps.forgejo.outputs.host-port }} testuser try-setup-forgejo-release
|
||||||
|
- name: 002
|
||||||
|
run: |
|
||||||
set -ex
|
set -ex
|
||||||
curl -sS ${{ steps.forgejo.outputs.url }}/api/forgejo/v1/version | grep 1.19
|
curl -sS ${{ steps.forgejo.outputs.url }}/api/forgejo/v1/version | grep 1.19
|
||||||
export FORGEJO="${{ steps.forgejo.outputs.url }}"
|
export FORGEJO="${{ steps.forgejo.outputs.url }}"
|
||||||
|
|
95
testdata/run.sh
vendored
Executable file
95
testdata/run.sh
vendored
Executable file
|
@ -0,0 +1,95 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
DATA=$(dirname $0)
|
||||||
|
DIR=$(mktemp -d)
|
||||||
|
|
||||||
|
trap "rm -fr $DIR" EXIT
|
||||||
|
|
||||||
|
function check_status() {
|
||||||
|
local forgejo="$1"
|
||||||
|
local repo="$2"
|
||||||
|
local sha="$3"
|
||||||
|
|
||||||
|
if ! which jq > /dev/null ; then
|
||||||
|
apt-get install -y -qq jq
|
||||||
|
fi
|
||||||
|
local state=$(curl --fail -sS "$forgejo/api/v1/repos/$repo/commits/$sha/status" | jq --raw-output .state)
|
||||||
|
echo $state
|
||||||
|
test "$state" != "" -a "$state" != "pending" -a "$state" != "running" -a "$state" != "null"
|
||||||
|
}
|
||||||
|
|
||||||
|
function wait_success() {
|
||||||
|
local forgejo="$1"
|
||||||
|
local repo="$2"
|
||||||
|
local sha="$3"
|
||||||
|
|
||||||
|
for i in $(seq 40); do
|
||||||
|
if check_status "$forgejo" "$repo" "$sha"; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
if ! test "$(check_status "$forgejo" "$repo" "$sha")" = "success" ; then
|
||||||
|
cat forgejo-runner.log
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function push() {
|
||||||
|
local forgejo="$1"
|
||||||
|
local owner="$2"
|
||||||
|
local workflow="$3"
|
||||||
|
|
||||||
|
local dir="$DIR/$workflow"
|
||||||
|
mkdir -p $dir/.forgejo/workflows
|
||||||
|
sed -e "s|SELF|$forgejo/$owner|" \
|
||||||
|
< $DATA/$workflow.yml > $dir/.forgejo/workflows/$workflow.yml
|
||||||
|
(
|
||||||
|
cd $dir
|
||||||
|
git init
|
||||||
|
git checkout -b main
|
||||||
|
git config user.email root@example.com
|
||||||
|
git config user.name username
|
||||||
|
git add .
|
||||||
|
git commit -m 'initial commit'
|
||||||
|
git remote add origin $forgejo/$owner/$workflow
|
||||||
|
git push --force -u origin main
|
||||||
|
git rev-parse HEAD > SHA
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function workflow() {
|
||||||
|
local forgejo="${1}"
|
||||||
|
local owner="${2}"
|
||||||
|
local workflow="${3}"
|
||||||
|
|
||||||
|
push "$forgejo" "$owner" "$workflow"
|
||||||
|
wait_success "$forgejo" "$owner/$workflow" $(cat $DIR/$workflow/SHA)
|
||||||
|
}
|
||||||
|
|
||||||
|
function push_self() {
|
||||||
|
local forgejo="$1"
|
||||||
|
local owner="$2"
|
||||||
|
local self="$3"
|
||||||
|
|
||||||
|
local dir="$DIR/self"
|
||||||
|
git clone . $dir
|
||||||
|
(
|
||||||
|
cd $dir
|
||||||
|
rm -fr .forgejo .git
|
||||||
|
git init
|
||||||
|
git checkout -b main
|
||||||
|
git remote add origin $forgejo/$owner/$self
|
||||||
|
git config user.email root@example.com
|
||||||
|
git config user.name username
|
||||||
|
git add .
|
||||||
|
git commit -m 'initial commit'
|
||||||
|
git push --force origin main
|
||||||
|
git tag --force vTest HEAD
|
||||||
|
git push --force origin vTest
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
"$@"
|
11
testdata/try-setup-forgejo-release.yml
vendored
Normal file
11
testdata/try-setup-forgejo-release.yml
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
name: Setup Forgejo Release
|
||||||
|
run-name: ${{ github.actor }} is setting up Forgejo Release
|
||||||
|
on: [push]
|
||||||
|
jobs:
|
||||||
|
setup-forgejo:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: SELF/setup-forgejo-release@vTest
|
||||||
|
- run: |
|
||||||
|
type forgejo-release.sh
|
Loading…
Reference in a new issue