mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-06-13 23:36:45 +03:00
40ffc73aa8
* ci(pjdfstest): cache docker layers via GHA to avoid apt mirror flakes Replace the local buildx cache + manual fallback with docker/setup-buildx-action and docker/build-push-action using type=gha cache. The e2e and pjdfstest Dockerfile layers now persist across runs in GitHub's own cache backend, so apt-get update only hits Ubuntu mirrors when the Dockerfiles change. Also add Acquire::Retries and Timeout so first-run cache-miss builds survive transient mirror sync errors. * ci(pjdfstest): use local registry to share e2e image across buildx builds The docker-container buildx driver cannot see images loaded into the host Docker daemon, so the second build's FROM chrislusf/seaweedfs:e2e failed with "not found" on registry-1.docker.io. Run a local registry:2 on the runner, push both images to localhost:5000, remap the FROM via build-contexts so the Dockerfile stays unchanged, then tag the pulled images locally for docker compose to consume.
119 lines
3.2 KiB
YAML
119 lines
3.2 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@v6
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
|
|
- name: Start local Docker registry
|
|
run: docker run -d --restart=always -p 5000:5000 --name registry registry:2
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v4
|
|
with:
|
|
driver-opts: network=host
|
|
|
|
- name: Build weed race binary
|
|
run: |
|
|
cd docker
|
|
make binary_race
|
|
|
|
- name: Build SeaweedFS e2e image
|
|
uses: docker/build-push-action@v6
|
|
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@v6
|
|
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
|