mirror of
https://gitee.com/juicedata/JuiceFS.git
synced 2025-12-06 09:39:14 +08:00
176 lines
5.3 KiB
YAML
176 lines
5.3 KiB
YAML
name: "integrationtests"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
- 'release-*'
|
|
paths:
|
|
- '**.c'
|
|
- '**.go'
|
|
- 'Makefile'
|
|
- 'integrationtests.yml'
|
|
pull_request:
|
|
branches:
|
|
- 'main'
|
|
- 'release-*'
|
|
paths:
|
|
- '**.c'
|
|
- '**.go'
|
|
- 'Makefile'
|
|
- 'integrationtests.yml'
|
|
workflow_dispatch:
|
|
inputs:
|
|
debug:
|
|
type: boolean
|
|
description: "Run the build with tmate debugging enabled"
|
|
required: false
|
|
default: false
|
|
|
|
jobs:
|
|
build-matrix:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- id: set-matrix
|
|
run: |
|
|
echo "github.event_name is ${{github.event_name}}"
|
|
echo "GITHUB_REF_NAME is ${GITHUB_REF_NAME}"
|
|
if [[ "${{github.event_name}}" == "schedule" || "${{github.event_name}}" == "workflow_dispatch" ]]; then
|
|
echo 'meta_matrix=["sqlite3", "redis", "mysql", "tikv", "tidb", "postgres", "badger", "mariadb", "fdb"]' >> $GITHUB_OUTPUT
|
|
elif [[ "${{github.event_name}}" == "pull_request" || "${{github.event_name}}" == "push" ]]; then
|
|
echo 'meta_matrix=["redis", "mysql"]' >> $GITHUB_OUTPUT
|
|
else
|
|
echo "event_name is not supported" && exit 1
|
|
fi
|
|
outputs:
|
|
meta_matrix: ${{ steps.set-matrix.outputs.meta_matrix }}
|
|
|
|
integrationtests:
|
|
timeout-minutes: 120
|
|
runs-on: ubuntu-20.04
|
|
needs: build-matrix
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
meta: ${{ fromJson(needs.build-matrix.outputs.meta_matrix) }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 1
|
|
|
|
- name: Set Variable
|
|
id: vars
|
|
run: |
|
|
if [ "${{matrix.meta}}" == "fdb" ]; then
|
|
echo "target=juicefs.fdb" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "target=juicefs" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Build
|
|
uses: ./.github/actions/build
|
|
with:
|
|
target: ${{steps.vars.outputs.target}}
|
|
|
|
- name: Prepare meta db
|
|
run: |
|
|
chmod +x .github/scripts/start_meta_engine.sh
|
|
source .github/scripts/start_meta_engine.sh
|
|
start_meta_engine ${{matrix.meta}}
|
|
meta_url=$(get_meta_url ${{matrix.meta}})
|
|
create_database $meta_url
|
|
|
|
- name: Juicefs Format
|
|
run: |
|
|
source .github/scripts/start_meta_engine.sh
|
|
meta_url=$(get_meta_url ${{matrix.meta}})
|
|
sudo ./juicefs format $meta_url --trash-days 0 pics
|
|
|
|
- name: Juicefs Mount
|
|
run: |
|
|
source .github/scripts/start_meta_engine.sh
|
|
meta_url=$(get_meta_url ${{matrix.meta}})
|
|
sudo ./juicefs mount -d $meta_url /jfs --no-usage-report --enable-xattr
|
|
stat /jfs/.accesslog
|
|
|
|
- name: Fslock Test
|
|
timeout-minutes: 5
|
|
run: |
|
|
cd /jfs/
|
|
git clone https://github.com/danjacques/gofslock.git
|
|
cd gofslock && git checkout cc7f001fe0e7df1710adc8f0cd9e9d6d21fdb3a9
|
|
go test -v ./fslock/...
|
|
stat /jfs/
|
|
|
|
- name: flock test
|
|
timeout-minutes: 5
|
|
run: |
|
|
git clone https://github.com/gofrs/flock.git
|
|
mkdir /jfs/tmp
|
|
cd flock && go mod init github.com/gofrs/flock.git && go mod tidy && TMPDIR=/jfs/tmp go test .
|
|
|
|
- name: make secfs.test
|
|
run: |
|
|
sudo .github/scripts/apt_install.sh libacl1-dev
|
|
git clone https://github.com/billziss-gh/secfs.test.git
|
|
make -C secfs.test
|
|
|
|
- name: Fsx Test
|
|
timeout-minutes: 15
|
|
run: |
|
|
if [[ "${{github.event_name}}" == "schedule" || "${{github.event_name}}" == "workflow_dispatch" ]] ; then
|
|
duration=900
|
|
else
|
|
duration=300
|
|
fi
|
|
sudo touch /jfs/fsx.out
|
|
sudo rm -f /tmp/fsx.out
|
|
sudo ln -s /jfs/fsx.out /tmp/fsx.out
|
|
sudo secfs.test/tools/bin/fsx -d $duration -p 10000 -F 10000000 /tmp/fsx.out
|
|
# sudo secfs.test/tools/bin/fsx -d 180 -p 10000 -F 100000 /jfs/fsx.out
|
|
|
|
- name: Fsracer Test
|
|
timeout-minutes: 15
|
|
shell: 'script -q -e -c "bash {0}"'
|
|
run: |
|
|
if [[ "${{github.event_name}}" == "schedule" || "${{github.event_name}}" == "workflow_dispatch" ]] ; then
|
|
duration=900
|
|
else
|
|
duration=300
|
|
fi
|
|
sudo secfs.test/tools/bin/fsracer $duration /jfs
|
|
|
|
- name: log
|
|
if: always()
|
|
run: |
|
|
tail -300 /var/log/juicefs.log
|
|
grep "<FATAL>:" /var/log/juicefs.log && exit 1 || true
|
|
|
|
- name: Setup upterm session
|
|
if: failure() && (github.event.inputs.debug == 'true' || github.run_attempt != 1)
|
|
timeout-minutes: 60
|
|
uses: lhotari/action-upterm@v1
|
|
|
|
success-all-test:
|
|
runs-on: ubuntu-latest
|
|
needs: [integrationtests]
|
|
if: always()
|
|
steps:
|
|
- uses: technote-space/workflow-conclusion-action@v3
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Check Failure
|
|
if: env.WORKFLOW_CONCLUSION == 'failure'
|
|
run: exit 1
|
|
|
|
- name: Send Slack Notification
|
|
if: failure() && github.event_name != 'workflow_dispatch'
|
|
uses: juicedata/slack-notify-action@main
|
|
with:
|
|
channel-id: "${{ secrets.SLACK_CHANNEL_ID_FOR_PR_CHECK_NOTIFY }}"
|
|
slack_bot_token: "${{ secrets.SLACK_BOT_TOKEN }}"
|
|
|
|
- name: Success
|
|
if: success()
|
|
run: echo "All Done" |