mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-24 23:10:41 +02:00
The registry container is started with --restart=always but never removed during teardown, so once a machine runs the job, every later run on that machine fails with a container name conflict. Reuse the running container when it exists and recreate it only when missing or broken. Some self-hosted runners (e.g. seaweedfs-server03) also lack the Docker Compose plugin, so install it via docker/setup-compose-action, which is a no-op where compose is already available.
127 lines
3.5 KiB
YAML
127 lines
3.5 KiB
YAML
name: "pjdfstest POSIX Compliance"
|
|
|
|
on:
|
|
push:
|
|
branches: [ master, main ]
|
|
paths:
|
|
- 'weed/mount/**'
|
|
- 'weed/filer/**'
|
|
- 'test/pjdfstest/**'
|
|
- '.github/workflows/pjdfstest.yml'
|
|
pull_request:
|
|
branches: [ master, main ]
|
|
paths:
|
|
- 'weed/mount/**'
|
|
- 'weed/filer/**'
|
|
- 'test/pjdfstest/**'
|
|
- '.github/workflows/pjdfstest.yml'
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: pjdfstest/${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
pjdfstest:
|
|
name: pjdfstest
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 60
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v7
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
cache: ${{ runner.environment == 'github-hosted' }}
|
|
|
|
- name: Start local Docker registry
|
|
run: |
|
|
if ! docker start registry 2>/dev/null; then
|
|
docker rm -f registry >/dev/null 2>&1 || true
|
|
docker run -d --restart=always -p 5000:5000 --name registry registry:2
|
|
fi
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v4
|
|
with:
|
|
driver-opts: network=host
|
|
|
|
- name: Set up Docker Compose
|
|
uses: docker/setup-compose-action@v2
|
|
|
|
- name: Build weed race binary
|
|
run: |
|
|
cd docker
|
|
make binary_race
|
|
|
|
- name: Build SeaweedFS e2e image
|
|
uses: docker/build-push-action@v7
|
|
with:
|
|
context: docker
|
|
file: docker/Dockerfile.e2e
|
|
tags: localhost:5000/chrislusf/seaweedfs:e2e
|
|
push: true
|
|
cache-from: type=gha,scope=pjdfstest-e2e
|
|
cache-to: type=gha,mode=max,scope=pjdfstest-e2e
|
|
|
|
- name: Tag e2e image for docker compose
|
|
run: |
|
|
docker pull localhost:5000/chrislusf/seaweedfs:e2e
|
|
docker tag localhost:5000/chrislusf/seaweedfs:e2e chrislusf/seaweedfs:e2e
|
|
|
|
- name: Build pjdfstest image
|
|
uses: docker/build-push-action@v7
|
|
with:
|
|
context: test/pjdfstest
|
|
build-contexts: |
|
|
chrislusf/seaweedfs:e2e=docker-image://localhost:5000/chrislusf/seaweedfs:e2e
|
|
tags: localhost:5000/chrislusf/seaweedfs:pjdfstest
|
|
push: true
|
|
cache-from: type=gha,scope=pjdfstest-harness
|
|
cache-to: type=gha,mode=max,scope=pjdfstest-harness
|
|
|
|
- name: Tag pjdfstest image for docker compose
|
|
run: |
|
|
docker pull localhost:5000/chrislusf/seaweedfs:pjdfstest
|
|
docker tag localhost:5000/chrislusf/seaweedfs:pjdfstest chrislusf/seaweedfs:pjdfstest
|
|
|
|
- name: Start SeaweedFS cluster
|
|
run: |
|
|
docker compose -f test/pjdfstest/docker-compose.yml up --wait
|
|
|
|
- name: Run pjdfstest
|
|
run: |
|
|
set -o pipefail
|
|
docker compose -f test/pjdfstest/docker-compose.yml exec -T mount \
|
|
/run.sh 2>&1 | tee /tmp/pjdfstest-output.log
|
|
|
|
- name: Collect logs
|
|
if: always()
|
|
run: |
|
|
mkdir -p /tmp/pjdfstest-docker-logs
|
|
for svc in master volume filer mount; do
|
|
docker compose -f test/pjdfstest/docker-compose.yml logs "$svc" \
|
|
> "/tmp/pjdfstest-docker-logs/${svc}.log" 2>&1 || true
|
|
done
|
|
|
|
- name: Tear down
|
|
if: always()
|
|
run: |
|
|
docker compose -f test/pjdfstest/docker-compose.yml down -v
|
|
|
|
- name: Upload logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: pjdfstest-results
|
|
path: |
|
|
/tmp/pjdfstest-output.log
|
|
/tmp/pjdfstest-docker-logs/
|
|
retention-days: 7
|