Files
DocumentServer-v-9.2.0/server/.github/workflows/s3storageTests.yml
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

131 lines
4.0 KiB
YAML

name: s3 Storage Tests
on:
push:
branches:
- '**'
paths:
- 'tests/integration/withServerInstance/storage.tests.js'
- 'Common/sources/storage/**'
- 'DocService/sources/routes/static.js'
- '.github/workflows/s3storageTests.yml'
jobs:
storage-tests:
name: Storage Tests
runs-on: ubuntu-latest
env:
MINIO_CONTAINER: minio-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Pre-run cleanup
run: |
docker rm -f "$MINIO_CONTAINER" 2>/dev/null || true
# Remove legacy container name if it exists (for self-hosted runners or retries)
docker rm -f minio 2>/dev/null || true
- name: Setup and start MinIO
run: |
# Detect network and set network arguments
JOB_NET=$(docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{printf "%s\n" $k}}{{end}}' "$(hostname)" 2>/dev/null | head -n1 || true)
if [ -n "$JOB_NET" ]; then
NETWORK_ARGS="--network $JOB_NET"
else
NETWORK_ARGS=""
fi
# Start MinIO container
docker run --name "$MINIO_CONTAINER" \
$NETWORK_ARGS \
-p 9000:9000 \
-p 9001:9001 \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-d minio/minio server /data --console-address ":9001"
# Set host based on network configuration
if [ -n "$JOB_NET" ]; then
HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$MINIO_CONTAINER")
else
HOST=127.0.0.1
fi
# Wait for MinIO to be ready
echo "Waiting for MinIO at $HOST:9000..."
for i in $(seq 1 15); do
if curl -sS "http://$HOST:9000/minio/health/ready" >/dev/null 2>&1; then
echo "MinIO ready"
break
fi
sleep 1
done
# Verify MinIO is running
if ! curl -sS "http://$HOST:9000/minio/health/ready" >/dev/null 2>&1; then
echo "MinIO failed to start"
docker logs "$MINIO_CONTAINER" || true
exit 1
fi
# Export host for subsequent steps
echo "MINIO_HOST=$HOST" >> "$GITHUB_ENV"
- name: Check out repository code
uses: actions/checkout@v3
- name: Caching dependencies
uses: actions/setup-node@v3
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: |
./npm-shrinkwrap.json
./Common/npm-shrinkwrap.json
./DocService/npm-shrinkwrap.json
- name: Install modules
run: |
npm ci
npm --prefix Common ci
npm --prefix DocService ci
- name: Creating storage configuration
run: |
cat > Common/config/local.json << EOF
{
"storage": {
"name": "storage-s3",
"region": "us-east-1",
"endpoint": "http://${MINIO_HOST:-127.0.0.1}:9000",
"bucketName": "cache",
"storageFolderName": "files",
"commandOptions": {
"putObject": {
"ServerSideEncryption": "AES256"
},
"copyObject": {
"ServerSideEncryption": "AES256"
}
},
"accessKeyId": "minioadmin",
"secretAccessKey": "minioadmin",
"forcePathStyle": true
},
"persistentStorage": {
"storageFolderName": "files/persistent"
}
}
EOF
- name: Create MinIO buckets
run: |
docker exec "$MINIO_CONTAINER" mc alias set myminio http://localhost:9000 minioadmin minioadmin
docker exec "$MINIO_CONTAINER" mc mb myminio/cache
- name: Run storage tests
run: npm run storage-tests
- name: Final cleanup
if: always()
run: docker rm -f "$MINIO_CONTAINER" || true