Incorporates these changes: - When `forgejo/build-from-sources` is present, Actions & Packages tests are run only against the built versions. Otherwise, they are run against the versions defined in `$RELEASE_NUMBERS` - Updates Packages tests which are testing Alpine publishing to use currently supported Alpine releases - Actions & Packages tests are run in a matrix, allowing parallel execution Only the Actions & Packages tests take a significant amount of time (>10 minutes), so changes have been limited to those test suites -- every test suite that is moved into a matrix adds additional overhead in the 1 minute `prepare-end-to-end` step. Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/1367 Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net> Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>
166 lines
5.1 KiB
YAML
166 lines
5.1 KiB
YAML
#
|
|
#
|
|
# https://code.forgejo.org/forgejo/end-to-end/settings/actions
|
|
#
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
|
|
enable-email-notifications: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: docker
|
|
container:
|
|
image: 'data.forgejo.org/oci/node:20-bookworm'
|
|
outputs:
|
|
built: "${{ steps.build.outputs.built }}"
|
|
forgejo_versions_json: "${{ steps.build.outputs.forgejo_versions_json }}"
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
- uses: https://data.forgejo.org/actions/setup-go@v5
|
|
with:
|
|
go-version: "1.22"
|
|
- name: lib/build.sh
|
|
id: build
|
|
run: |
|
|
mkdir $d /tmp/forgejo-upload
|
|
touch /tmp/forgejo-upload/PLACEHOLDER
|
|
|
|
if ! test -f forgejo/build-from-sources; then
|
|
echo forgejo/build-from-sources is not present, do not build any version from source
|
|
source lib/lib.sh
|
|
echo "forgejo_versions_json=$(node -p "JSON.stringify(process.argv[1].split(' '))" "$RELEASE_NUMBERS")" >> $FORGEJO_OUTPUT
|
|
echo "built=no" >> $FORGEJO_OUTPUT
|
|
exit 0
|
|
fi
|
|
|
|
set -x
|
|
#
|
|
# SQLite needs gcc to be compiled
|
|
#
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update -qq
|
|
apt-get -q install -y -qq build-essential
|
|
|
|
d=/tmp/forgejo-binaries
|
|
|
|
for version in $(cat forgejo/build-from-sources) ; do
|
|
lib/build.sh $version $d
|
|
forgejo=$d/forgejo-$version-dev
|
|
$forgejo --version
|
|
mv $forgejo /tmp/forgejo-upload/forgejo-$version
|
|
done
|
|
|
|
echo "forgejo_versions_json=$(node -p "JSON.stringify(process.argv[1].split(' '))" "$(cat forgejo/build-from-sources)")" >> $FORGEJO_OUTPUT
|
|
echo "built=yes" >> $FORGEJO_OUTPUT
|
|
|
|
- name: steps context dump for debug
|
|
run: |
|
|
set -x
|
|
cat <<EOF
|
|
${{ toJSON(steps) }}
|
|
EOF
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
if: ${{ steps.build.outputs.built == 'yes' }}
|
|
with:
|
|
name: forgejo-dev
|
|
path: /tmp/forgejo-upload
|
|
|
|
packages:
|
|
needs: [build]
|
|
runs-on: lxc-trixie
|
|
strategy:
|
|
matrix:
|
|
forgejo_version: ${{ fromJSON(needs.build.outputs.forgejo_versions_json) }}
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
- uses: ./.forgejo/prepare-end-to-end
|
|
with:
|
|
built: ${{ needs.build.outputs.built }}
|
|
- run: su forgejo -c "./end-to-end.sh test_packages ${{ matrix.forgejo_version }}"
|
|
- if: ${{ needs.build.outputs.built == 'yes' }}
|
|
uses: ./.forgejo/upload-coverage
|
|
with:
|
|
scope: packages
|
|
- name: full logs
|
|
if: always()
|
|
run: su forgejo -c "./end-to-end.sh show_logs"
|
|
|
|
actions:
|
|
needs: [build]
|
|
runs-on: lxc-trixie
|
|
strategy:
|
|
matrix:
|
|
forgejo_version: ${{ fromJSON(needs.build.outputs.forgejo_versions_json) }}
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
- uses: ./.forgejo/prepare-end-to-end
|
|
with:
|
|
built: ${{ needs.build.outputs.built }}
|
|
- run: ./end-to-end.sh prepare_dockerd
|
|
- run: su forgejo -c "./end-to-end.sh test_actions ${{ matrix.forgejo_version }}"
|
|
- if: ${{ needs.build.outputs.built == 'yes' }}
|
|
uses: ./.forgejo/upload-coverage
|
|
with:
|
|
scope: actions
|
|
- name: full logs
|
|
if: always()
|
|
run: su forgejo -c "./end-to-end.sh show_logs"
|
|
|
|
federation:
|
|
needs: [build]
|
|
runs-on: lxc-trixie
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
- uses: ./.forgejo/prepare-end-to-end
|
|
with:
|
|
built: ${{ needs.build.outputs.built }}
|
|
- name: install zstd
|
|
run: |
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get -q install -y -qq zstd
|
|
- name: cache GitLab OCI image
|
|
uses: https://data.forgejo.org/actions/cache@v4
|
|
with:
|
|
path: |
|
|
/srv/forgejo-binaries/gitlab
|
|
key: gitlab
|
|
- name: setup dbus
|
|
run: |
|
|
apt-get -q install -y -qq dbus
|
|
systemctl enable --now dbus
|
|
- name: run test_federation
|
|
run: |
|
|
chown -R forgejo:forgejo .
|
|
su forgejo -c "./end-to-end.sh test_federation"
|
|
- if: ${{ needs.build.outputs.built == 'yes' }}
|
|
uses: ./.forgejo/upload-coverage
|
|
with:
|
|
scope: federation
|
|
- name: full logs
|
|
if: always()
|
|
run: su forgejo -c "./end-to-end.sh show_logs"
|
|
|
|
upgrade:
|
|
name: upgrade and storage
|
|
needs: [build]
|
|
runs-on: lxc-trixie
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
- uses: ./.forgejo/prepare-end-to-end
|
|
with:
|
|
built: ${{ needs.build.outputs.built }}
|
|
- run: su forgejo -c "./end-to-end.sh test_upgrades"
|
|
- run: su forgejo -c "./end-to-end.sh test_storage"
|
|
- if: ${{ needs.build.outputs.built == 'yes' }}
|
|
uses: ./.forgejo/upload-coverage
|
|
with:
|
|
scope: upgrade
|
|
- name: full logs
|
|
if: always()
|
|
run: su forgejo -c "./end-to-end.sh show_logs"
|