loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request '[RELEASE] build test releases' (#2365) from earl-warren/forgejo:wip-test-release into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2365

+103 -54
+3 -2
.forgejo/testdata/build-release/Dockerfile
··· 1 - FROM public.ecr.aws/docker/library/alpine:3.18 1 + FROM code.forgejo.org/oci/alpine:3.19 2 + ARG RELEASE_VERSION=unkown 2 3 RUN mkdir -p /app/gitea 3 - RUN ( echo '#!/bin/sh' ; echo "echo forgejo v1.2.3" ) > /app/gitea/gitea ; chmod +x /app/gitea/gitea 4 + RUN ( echo '#!/bin/sh' ; echo "echo forgejo v$RELEASE_VERSION" ) > /app/gitea/gitea ; chmod +x /app/gitea/gitea
+60 -34
.forgejo/workflows/build-release-integration.yml
··· 34 34 lxc-ip-prefix: 10.0.9 35 35 36 36 - name: publish the forgejo release 37 + shell: bash 37 38 run: | 38 39 set -x 39 40 40 - version=1.2.3 41 41 cat > /etc/docker/daemon.json <<EOF 42 42 { 43 43 "insecure-registries" : ["${{ steps.forgejo.outputs.host-port }}"] ··· 53 53 url=http://root:admin1234@${{ steps.forgejo.outputs.host-port }} 54 54 export FORGEJO_RUNNER_LOGS="${{ steps.forgejo.outputs.runner-logs }}" 55 55 56 + function sanity_check() { 57 + local url=$1 version=$2 58 + # 59 + # Minimal sanity checks. Since the binary 60 + # is a script shell it does not test the sanity of the cross 61 + # build, only the sanity of the naming of the binaries. 62 + # 63 + for arch in amd64 arm64 arm-6 ; do 64 + local binary=forgejo-$version-linux-$arch 65 + for suffix in '' '.xz' ; do 66 + curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$binary$suffix > $binary$suffix 67 + if test "$suffix" = .xz ; then 68 + unxz --keep $binary$suffix 69 + fi 70 + chmod +x $binary 71 + ./$binary --version | grep $version 72 + curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$binary$suffix.sha256 > $binary$suffix.sha256 73 + shasum -a 256 --check $binary$suffix.sha256 74 + rm $binary$suffix 75 + done 76 + done 77 + 78 + local sources=forgejo-src-$version.tar.gz 79 + curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources > $sources 80 + curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources.sha256 > $sources.sha256 81 + shasum -a 256 --check $sources.sha256 82 + 83 + docker pull ${{ steps.forgejo.outputs.host-port }}/root/forgejo:$version 84 + docker pull ${{ steps.forgejo.outputs.host-port }}/root/forgejo:$version-rootless 85 + } 86 + 56 87 # 57 88 # Create a new project with a fake forgejo and the release workflow only 58 89 # ··· 62 93 cp $dir/Dockerfile $dir/Dockerfile.rootless 63 94 64 95 forgejo-test-helper.sh push $dir $url root forgejo 65 - sha=$(forgejo-test-helper.sh branch_tip $url root/forgejo main) 96 + 97 + forgejo-curl.sh api_json -X PUT --data-raw '{"data":"${{ steps.forgejo.outputs.token }}"}' $url/api/v1/repos/root/forgejo/actions/secrets/TOKEN 98 + forgejo-curl.sh api_json -X PUT --data-raw '{"data":"root"}' $url/api/v1/repos/root/forgejo/actions/secrets/DOER 99 + forgejo-curl.sh api_json -X PUT --data-raw '{"data":"true"}' $url/api/v1/repos/root/forgejo/actions/secrets/VERBOSE 66 100 67 101 # 68 102 # Push a tag to trigger the release workflow and wait for it to complete 69 103 # 104 + version=1.2.3 105 + sha=$(forgejo-test-helper.sh branch_tip $url root/forgejo main) 70 106 forgejo-curl.sh api_json --data-raw '{"tag_name": "v'$version'", "target": "'$sha'"}' $url/api/v1/repos/root/forgejo/tags 71 - forgejo-curl.sh api_json -X PUT --data-raw '{"data":"${{ steps.forgejo.outputs.token }}"}' $url/api/v1/repos/root/forgejo/actions/secrets/TOKEN 72 - forgejo-curl.sh api_json -X PUT --data-raw '{"data":"root"}' $url/api/v1/repos/root/forgejo/actions/secrets/DOER 73 107 LOOPS=180 forgejo-test-helper.sh wait_success "$url" root/forgejo $sha 74 - 75 - # 76 - # uncomment to see the logs even when everything is reported to be working ok 77 - # 78 - #cat $FORGEJO_RUNNER_LOGS 108 + sanity_check $url $version 79 109 80 110 # 81 - # Minimal sanity checks. e2e test is for the setup-forgejo 82 - # action and the infrastructure playbook. Since the binary 83 - # is a script shell it does not test the sanity of the cross 84 - # build, only the sanity of the naming of the binaries. 111 + # Push a commit to a branch that triggers the build of a test release 85 112 # 86 - for arch in amd64 arm64 arm-6 ; do 87 - binary=forgejo-$version-linux-$arch 88 - for suffix in '' '.xz' ; do 89 - curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$binary$suffix > $binary$suffix 90 - if test "$suffix" = .xz ; then 91 - unxz --keep $binary$suffix 92 - fi 93 - chmod +x $binary 94 - ./$binary --version | grep $version 95 - curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$binary$suffix.sha256 > $binary$suffix.sha256 96 - shasum -a 256 --check $binary$suffix.sha256 97 - rm $binary$suffix 98 - done 99 - done 113 + version=forgejo-test 114 + ( 115 + git clone $url/root/forgejo /tmp/forgejo 116 + cd /tmp/forgejo 117 + date > DATE 118 + git config user.email root@example.com 119 + git config user.name username 120 + git add . 121 + git commit -m 'update' 122 + git push $url/root/forgejo main:forgejo 123 + ) 124 + sha=$(forgejo-test-helper.sh branch_tip $url root/forgejo forgejo) 125 + LOOPS=180 forgejo-test-helper.sh wait_success "$url" root/forgejo $sha 126 + sanity_check $url $version 100 127 101 - sources=forgejo-src-$version.tar.gz 102 - curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources > $sources 103 - curl --fail -L -sS $url/root/forgejo/releases/download/v$version/$sources.sha256 > $sources.sha256 104 - shasum -a 256 --check $sources.sha256 105 - 106 - docker pull ${{ steps.forgejo.outputs.host-port }}/root/forgejo:$version 107 - docker pull ${{ steps.forgejo.outputs.host-port }}/root/forgejo:$version-rootless 128 + - name: full logs 129 + if: always() 130 + run: | 131 + sed -e 's/^/[RUNNER LOGS] /' ${{ steps.forgejo.outputs.runner-logs }} 132 + docker logs forgejo | sed -e 's/^/[FORGEJO LOGS]/' 133 + sleep 5 # hack to avoid mixing outputs in Forgejo v1.21
+38 -14
.forgejo/workflows/build-release.yml
··· 18 18 19 19 on: 20 20 push: 21 - tags: 'v*' 21 + tags: 'v[0-9]+.[0-9]+.*' 22 + branches: 23 + - 'forgejo' 24 + - 'v*/forgejo' 22 25 23 26 jobs: 24 27 release: ··· 43 46 go-version: "1.21" 44 47 check-latest: true 45 48 46 - - name: version from ref_name 47 - id: tag-version 49 + - name: version from ref 50 + id: release-info 51 + shell: bash 48 52 run: | 49 - version="${{ github.ref_name }}" 50 - version=${version##*v} 51 - echo "value=$version" >> "$GITHUB_OUTPUT" 53 + set -x 54 + ref="${{ github.ref }}" 55 + if [[ $ref =~ ^refs/heads/ ]] ; then 56 + version=${ref#refs/heads/} 57 + version=${version%/forgejo}-test 58 + override=true 59 + fi 60 + if [[ $ref =~ ^refs/tags/ ]] ; then 61 + version=${ref#refs/tags/} 62 + override=false 63 + fi 64 + if test -z "$version" ; then 65 + echo failed to figure out the release version from the reference=$ref 66 + exit 1 67 + fi 68 + version=${version#v} 69 + echo "sha=${{ github.sha }}" >> "$GITHUB_OUTPUT" 70 + echo "version=$version" >> "$GITHUB_OUTPUT" 71 + echo "override=$override" >> "$GITHUB_OUTPUT" 52 72 53 73 - name: release notes 54 74 id: release-notes 55 75 run: | 56 - anchor=${{ steps.tag-version.outputs.value }} 76 + anchor=${{ steps.release-info.outputs.version }} 57 77 anchor=${anchor//./-} 58 78 cat >> "$GITHUB_OUTPUT" <<EOF 59 79 value<<ENDVAR ··· 65 85 run: | 66 86 set -x 67 87 apt-get -qq install -y make 68 - version=${{ steps.tag-version.outputs.value }} 88 + version=${{ steps.release-info.outputs.version }} 69 89 # 70 90 # Make sure all files are owned by the current user. 71 91 # When run as root `npx webpack` will assume the identity ··· 122 142 123 143 - name: build container & release 124 144 if: ${{ secrets.TOKEN != '' }} 125 - uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v1 145 + uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v3 126 146 with: 127 147 forgejo: "${{ env.GITHUB_SERVER_URL }}" 128 148 owner: "${{ env.GITHUB_REPOSITORY_OWNER }}" 129 149 repository: "${{ steps.repository.outputs.value }}" 130 150 doer: "${{ secrets.DOER }}" 131 - tag-version: "${{ steps.tag-version.outputs.value }}" 151 + release-version: "${{ steps.release-info.outputs.version }}" 152 + sha: "${{ steps.release-info.outputs.sha }}" 132 153 token: "${{ secrets.TOKEN }}" 133 154 platforms: linux/amd64,linux/arm64,linux/arm/v6 134 155 release-notes: "${{ steps.release-notes.outputs.value }}" 135 156 binary-name: forgejo 136 157 binary-path: /app/gitea/gitea 137 - verbose: ${{ vars.VERBOSE || 'false' }} 158 + override: "${{ steps.release-info.outputs.override }}" 159 + verbose: ${{ vars.VERBOSE || secrets.VERBOSE || 'false' }} 138 160 139 161 - name: build rootless container 140 162 if: ${{ secrets.TOKEN != '' }} 141 - uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v1 163 + uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v3 142 164 with: 143 165 forgejo: "${{ env.GITHUB_SERVER_URL }}" 144 166 owner: "${{ env.GITHUB_REPOSITORY_OWNER }}" 145 167 repository: "${{ steps.repository.outputs.value }}" 146 168 doer: "${{ secrets.DOER }}" 147 - tag-version: "${{ steps.tag-version.outputs.value }}" 169 + release-version: "${{ steps.release-info.outputs.version }}" 170 + sha: "${{ steps.release-info.outputs.sha }}" 148 171 token: "${{ secrets.TOKEN }}" 149 172 platforms: linux/amd64,linux/arm64,linux/arm/v6 150 173 suffix: -rootless 151 174 dockerfile: Dockerfile.rootless 152 - verbose: ${{ vars.VERBOSE || 'false' }} 175 + override: "${{ steps.release-info.outputs.override }}" 176 + verbose: ${{ vars.VERBOSE || secrets.VERBOSE || 'false' }} 153 177 154 178 - name: end-to-end tests 155 179 if: ${{ secrets.TOKEN != '' && vars.ROLE == 'forgejo-integration' }}
+2 -4
.forgejo/workflows/mirror.yml
··· 1 1 name: mirror 2 2 3 3 on: 4 - push: 5 - branches: 6 - - 'forgejo' 7 - - 'v*/forgejo' 4 + schedule: 5 + - cron: '@daily' 8 6 9 7 jobs: 10 8 mirror: