-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Julius Knorr <[email protected]>
- Loading branch information
1 parent
2fa2368
commit 2ff67ff
Showing
1 changed file
with
183 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,183 @@ | ||
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors | ||
# SPDX-License-Identifier: MIT | ||
|
||
name: Behat | ||
|
||
on: pull_request | ||
|
||
permissions: | ||
contents: read | ||
|
||
concurrency: | ||
group: behat-mysql-${{ github.head_ref || github.run_id }} | ||
cancel-in-progress: true | ||
|
||
env: | ||
# Location of the behat.yml file | ||
BEHAT_CONFIG: ./tests/Integration/config/behat.yml | ||
|
||
jobs: | ||
changes: | ||
runs-on: ubuntu-latest-low | ||
|
||
outputs: | ||
src: ${{ steps.changes.outputs.src}} | ||
|
||
steps: | ||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 | ||
id: changes | ||
continue-on-error: true | ||
with: | ||
filters: | | ||
src: | ||
- '.github/workflows/**' | ||
- 'appinfo/**' | ||
- 'lib/**' | ||
- 'templates/**' | ||
- 'tests/**' | ||
- 'vendor/**' | ||
- 'vendor-bin/**' | ||
- '.php-cs-fixer.dist.php' | ||
- 'composer.json' | ||
- 'composer.lock' | ||
behat-mysql: | ||
runs-on: ubuntu-latest | ||
|
||
needs: changes | ||
if: needs.changes.outputs.src != 'false' | ||
|
||
strategy: | ||
matrix: | ||
php-versions: ['8.2'] | ||
server-versions: ['stable27', 'master'] | ||
mysql-versions: ['8.4'] | ||
|
||
services: | ||
mysql: | ||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest | ||
ports: | ||
- 4444:3306/tcp | ||
env: | ||
MYSQL_ROOT_PASSWORD: rootpassword | ||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 | ||
shard1: | ||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest | ||
ports: | ||
- 5001:3306/tcp | ||
env: | ||
MYSQL_ROOT_PASSWORD: rootpassword | ||
MYSQL_USER: oc_autotest | ||
MYSQL_PASSWORD: nextcloud | ||
MYSQL_DATABASE: nextcloud | ||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 | ||
shard2: | ||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest | ||
ports: | ||
- 5002:3306/tcp | ||
env: | ||
MYSQL_ROOT_PASSWORD: rootpassword | ||
MYSQL_USER: oc_autotest | ||
MYSQL_PASSWORD: nextcloud | ||
MYSQL_DATABASE: nextcloud | ||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 | ||
shard3: | ||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest | ||
ports: | ||
- 5003:3306/tcp | ||
env: | ||
MYSQL_ROOT_PASSWORD: rootpassword | ||
MYSQL_USER: oc_autotest | ||
MYSQL_PASSWORD: nextcloud | ||
MYSQL_DATABASE: nextcloud | ||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 | ||
shard4: | ||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest | ||
ports: | ||
- 5004:3306/tcp | ||
env: | ||
MYSQL_ROOT_PASSWORD: rootpassword | ||
MYSQL_USER: oc_autotest | ||
MYSQL_PASSWORD: nextcloud | ||
MYSQL_DATABASE: nextcloud | ||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10 | ||
|
||
|
||
steps: | ||
- name: Set app env | ||
run: | | ||
# Split and keep last | ||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV | ||
- name: Checkout server | ||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
with: | ||
submodules: true | ||
repository: nextcloud/server | ||
ref: ${{ matrix.server-versions }} | ||
|
||
- name: Checkout circles app | ||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
with: | ||
repository: nextcloud/circles | ||
path: apps/circles | ||
ref: ${{ matrix.server-versions }} | ||
|
||
- name: Checkout app | ||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
with: | ||
path: apps/${{ env.APP_NAME }} | ||
|
||
- name: Set up php ${{ matrix.php-versions }} | ||
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2 | ||
with: | ||
php-version: ${{ matrix.php-versions }} | ||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation | ||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql | ||
coverage: none | ||
ini-file: development | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Install composer dependencies | ||
working-directory: apps/${{ env.APP_NAME }} | ||
run: composer i | ||
|
||
- name: Set up Nextcloud | ||
env: | ||
DB_PORT: 4444 | ||
SHARDING: 1 | ||
run: | | ||
mkdir data | ||
cp tests/preseed-config.php config/config.php | ||
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin | ||
./occ config:system:set --value="http://localhost:8080" -- overwrite.cli.url | ||
./occ app:enable --force ${{ env.APP_NAME }} | ||
for user in alice bob jane john; do \ | ||
OC_PASS="$user" ./occ user:add --password-from-env "$user"; \ | ||
done | ||
./occ group:add "Bobs Group" | ||
for user in bob jane; do \ | ||
OC_PASS="$user" ./occ group:adduser "Bobs Group" "$user"; \ | ||
done | ||
- name: Run Nextcloud | ||
run: php -S localhost:8080 & | ||
|
||
- name: Behat integration | ||
working-directory: apps/${{ env.APP_NAME }} | ||
run: ./vendor/bin/behat --config=${{ env.BEHAT_CONFIG }} --profile ci | ||
|
||
summary: | ||
permissions: | ||
contents: none | ||
runs-on: ubuntu-latest-low | ||
needs: [changes, behat-mysql] | ||
|
||
if: always() | ||
|
||
name: behat-mysql-summary | ||
|
||
steps: | ||
- name: Summary status | ||
run: if ${{ needs.changes.outputs.src != 'false' && needs.behat-mysql.result != 'success' }}; then exit 1; fi |