mirror of
https://github.com/project-zot/zot.git
synced 2024-12-16 21:56:37 -05:00
375c35c5a1
* chore: update to go 1.22 Only go toolchain version is updated. We compile with go 1.22, but we allow others to compile using language version 1.21 if they wish to. If we also updated the go version in go.mod everyone would be forced to update, as that is enforced as a minimum allowed version. This comment explains the difference well enough https://news.ycombinator.com/item?id=36455759 Signed-off-by: Andrei Aaron <aaaron@luxoft.com> * chore: fix freeBSD AMD64 build Looks like they made some cleanup in the logic allowing buildmode pie on various platforms. Related to https://github.com/golang/go/issues/31544 See the code at: https://cs.opensource.google/go/go/+/master:src/internal/platform/supported.go;l=222-231;drc=d7fcb5cf80953f1d63246f1ae9defa60c5ce2d76;bpv=1;bpt=0 Signed-off-by: Andrei Aaron <aaaron@luxoft.com> --------- Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
225 lines
6.2 KiB
YAML
225 lines
6.2 KiB
YAML
name: "GC stress test"
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches: [main]
|
|
release:
|
|
types:
|
|
- published
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
gc-referrers-stress-local:
|
|
name: GC(with referrers) on filesystem with short interval
|
|
runs-on: ubuntu-latest-8-cores
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: 1.22.x
|
|
|
|
- name: Run zb
|
|
id: bench
|
|
run: |
|
|
make binary
|
|
make bench
|
|
./bin/zot-linux-amd64 serve test/gc-stress/config-gc-referrers-bench-local.json &
|
|
sleep 10
|
|
bin/zb-linux-amd64 -c 10 -n 100 -o ci-cd http://localhost:8080
|
|
|
|
killall -r zot-*
|
|
|
|
# clean zot storage
|
|
sudo rm -rf /tmp/zot
|
|
continue-on-error: true
|
|
|
|
- name: Check on failures
|
|
if: steps.bench.outcome != 'success'
|
|
run: |
|
|
cat /tmp/gc-referrers-bench-local.log
|
|
exit 1
|
|
|
|
gc-stress-local:
|
|
name: GC(without referrers) on filesystem with short interval
|
|
runs-on: ubuntu-latest-8-cores
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: 1.22.x
|
|
|
|
- name: Run zb
|
|
id: bench
|
|
run: |
|
|
make binary
|
|
make bench
|
|
./bin/zot-linux-amd64 serve test/gc-stress/config-gc-bench-local.json &
|
|
sleep 10
|
|
bin/zb-linux-amd64 -c 10 -n 100 -o ci-cd http://localhost:8080
|
|
|
|
killall -r zot-*
|
|
|
|
# clean zot storage
|
|
sudo rm -rf /tmp/zot
|
|
continue-on-error: true
|
|
|
|
- name: Check on failures
|
|
if: steps.bench.outcome != 'success'
|
|
run: |
|
|
cat /tmp/gc-bench-local.log
|
|
exit 1
|
|
|
|
gc-referrers-stress-s3:
|
|
name: GC(with referrers) on S3(minio) with short interval
|
|
runs-on: ubuntu-latest-8-cores
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: 1.22.x
|
|
- uses: ./.github/actions/setup-localstack
|
|
- name: Setup minio service
|
|
run: |
|
|
docker run -d -p 9000:9000 --name minio \
|
|
-e "MINIO_ACCESS_KEY=minioadmin" \
|
|
-e "MINIO_SECRET_KEY=minioadmin" \
|
|
-v /tmp/data:/data \
|
|
-v /tmp/config:/root/.minio \
|
|
--health-cmd "curl http://localhost:9000/minio/health/live" \
|
|
minio/minio:edge-cicd server /data
|
|
- name: Install py minio
|
|
run: pip3 install minio
|
|
|
|
- name: Wait for minio to come up
|
|
run: |
|
|
sleep 10
|
|
curl --connect-timeout 5 \
|
|
--max-time 120 \
|
|
--retry 12 \
|
|
--retry-max-time 120 \
|
|
'http://localhost:9000/minio/health/live'
|
|
|
|
- name: Create minio bucket
|
|
run: |
|
|
python3 - <<'EOF'
|
|
from minio import Minio
|
|
|
|
try:
|
|
minio = Minio(
|
|
'localhost:9000',
|
|
access_key='minioadmin',
|
|
secret_key='minioadmin',
|
|
secure=False
|
|
)
|
|
except Exception as ex:
|
|
raise
|
|
|
|
minio.make_bucket('zot-storage')
|
|
print(f'{minio.list_buckets()}')
|
|
EOF
|
|
|
|
- name: Run zb
|
|
id: bench
|
|
run: |
|
|
make binary
|
|
make bench
|
|
./bin/zot-linux-amd64 serve test/gc-stress/config-gc-referrers-bench-s3-minio.json &
|
|
sleep 10
|
|
bin/zb-linux-amd64 -c 10 -n 100 -o ci-cd http://localhost:8080
|
|
|
|
killall -r zot-*
|
|
|
|
# clean zot storage
|
|
sudo rm -rf /tmp/zot
|
|
env:
|
|
AWS_ACCESS_KEY_ID: fake
|
|
AWS_SECRET_ACCESS_KEY: fake
|
|
continue-on-error: true
|
|
|
|
- name: Check on failures
|
|
if: steps.bench.outcome != 'success'
|
|
run: |
|
|
cat /tmp/gc-referrers-bench-s3.log
|
|
exit 1
|
|
- uses: ./.github/actions/teardown-localstack
|
|
|
|
gc-stress-s3:
|
|
name: GC(without referrers) on S3(minio) with short interval
|
|
runs-on: ubuntu-latest-8-cores
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: 1.22.x
|
|
- uses: ./.github/actions/setup-localstack
|
|
- name: Setup minio service
|
|
run: |
|
|
docker run -d -p 9000:9000 --name minio \
|
|
-e "MINIO_ACCESS_KEY=minioadmin" \
|
|
-e "MINIO_SECRET_KEY=minioadmin" \
|
|
-v /tmp/data:/data \
|
|
-v /tmp/config:/root/.minio \
|
|
--health-cmd "curl http://localhost:9000/minio/health/live" \
|
|
minio/minio:edge-cicd server /data
|
|
- name: Install py minio
|
|
run: pip3 install minio
|
|
|
|
- name: Wait for minio to come up
|
|
run: |
|
|
sleep 10
|
|
curl --connect-timeout 5 \
|
|
--max-time 120 \
|
|
--retry 12 \
|
|
--retry-max-time 120 \
|
|
'http://localhost:9000/minio/health/live'
|
|
|
|
- name: Create minio bucket
|
|
run: |
|
|
python3 - <<'EOF'
|
|
from minio import Minio
|
|
|
|
try:
|
|
minio = Minio(
|
|
'localhost:9000',
|
|
access_key='minioadmin',
|
|
secret_key='minioadmin',
|
|
secure=False
|
|
)
|
|
except Exception as ex:
|
|
raise
|
|
|
|
minio.make_bucket('zot-storage')
|
|
print(f'{minio.list_buckets()}')
|
|
EOF
|
|
|
|
- name: Run zb
|
|
id: bench
|
|
run: |
|
|
make binary
|
|
make bench
|
|
./bin/zot-linux-amd64 serve test/gc-stress/config-gc-bench-s3-minio.json &
|
|
sleep 10
|
|
bin/zb-linux-amd64 -c 10 -n 100 -o ci-cd http://localhost:8080
|
|
|
|
killall -r zot-*
|
|
|
|
# clean zot storage
|
|
sudo rm -rf /tmp/zot
|
|
env:
|
|
AWS_ACCESS_KEY_ID: fake
|
|
AWS_SECRET_ACCESS_KEY: fake
|
|
continue-on-error: true
|
|
|
|
- name: Check on failures
|
|
if: steps.bench.outcome != 'success'
|
|
run: |
|
|
cat /tmp/gc-bench-s3.log
|
|
exit 1
|
|
- uses: ./.github/actions/teardown-localstack
|