mirror of
https://github.com/project-zot/zot.git
synced 2026-06-18 05:28:07 +08:00
063014a942
ci: blackbox test impromentts A mutated zli config could be the cause of https://github.com/project-zot/zot/actions/runs/21560982825/job/62141227950 1. show zli configuration after cve.basts finishes running 2. ensure the zli config is removed in between test files 3. ensure teh zli configs use different names, not "main" Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com>
181 lines
6.8 KiB
YAML
181 lines
6.8 KiB
YAML
name: "Ecosystem client tools"
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches: [main]
|
|
release:
|
|
types:
|
|
- published
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
client-tools:
|
|
name: Check client tools
|
|
runs-on: oracle-vm-16cpu-64gb-x86-64
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
cache: false
|
|
go-version: 1.25.x
|
|
- name: Install dependencies
|
|
run: |
|
|
cd $GITHUB_WORKSPACE
|
|
go install github.com/swaggo/swag/cmd/swag@v1.16.2
|
|
go mod download
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgpgme-dev libassuan-dev libbtrfs-dev \
|
|
libdevmapper-dev pkg-config rpm uidmap haproxy jq valkey-tools whois \
|
|
npm
|
|
# install skopeo
|
|
git clone -b v1.12.0 https://github.com/containers/skopeo.git
|
|
cd skopeo
|
|
make bin/skopeo
|
|
sudo cp bin/skopeo /usr/bin
|
|
skopeo -v
|
|
# install cri-o (for crictl)
|
|
OS=xUbuntu_22.04
|
|
CRIO_VERSION=1.26
|
|
curl -fsSL https://download.opensuse.org/repositories/isv:/kubernetes:/addons:/cri-o:/prerelease:/main:/build/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
|
|
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://download.opensuse.org/repositories/isv:/kubernetes:/addons:/cri-o:/prerelease:/main:/build/deb/ /" | sudo tee /etc/apt/sources.list.d/cri-o.list
|
|
sudo apt update
|
|
sudo apt install -y cri-o runc
|
|
sudo systemctl enable crio.service
|
|
sudo systemctl start crio.service
|
|
sudo chmod 0777 /var/run/crio/crio.sock
|
|
# install docker
|
|
# Add Docker's official GPG key:
|
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
|
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
sudo apt update
|
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
# install nodejs deps (for oidc claim mapping support)
|
|
sudo npm install -g oidc-provider express
|
|
# install dex
|
|
git clone https://github.com/dexidp/dex.git
|
|
cd dex/
|
|
git checkout v2.39.1
|
|
make bin/dex
|
|
./bin/dex serve $GITHUB_WORKSPACE/test/dex/config-dev.yaml &
|
|
# Prepare for stacker run on Ubuntu 24
|
|
cd $GITHUB_WORKSPACE
|
|
sudo ./scripts/enable_userns.sh
|
|
- name: Run CI tests
|
|
run: |
|
|
make run-blackbox-ci
|
|
- name: Log in to GitHub Docker Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ github.token }}
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Install localstack
|
|
run: |
|
|
pip install --upgrade pyopenssl
|
|
pip install localstack==3.3.0 awscli-local[ver1] # install LocalStack cli and awslocal
|
|
docker pull ghcr.io/project-zot/ci-images/localstack:3.3.0 # Make sure to pull a working version of the image
|
|
localstack start -d # Start LocalStack in the background
|
|
|
|
echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container
|
|
localstack wait -t 30 # to become ready before timing out
|
|
echo "Startup complete"
|
|
- name: Run cloud-only tests
|
|
run: |
|
|
make run-blackbox-cloud-ci
|
|
env:
|
|
AWS_ACCESS_KEY_ID: fake
|
|
AWS_SECRET_ACCESS_KEY: fake
|
|
|
|
# DynamoDB scale-out tests
|
|
- name: Run cloud scale-out DynamoDB tests
|
|
id: dynamodb_scale
|
|
run: |
|
|
make run-cloud-scale-out-tests
|
|
env:
|
|
AWS_ACCESS_KEY_ID: fake
|
|
AWS_SECRET_ACCESS_KEY: fake
|
|
continue-on-error: true
|
|
- name: Print service logs for DynamoDB scale-out
|
|
run: |
|
|
find /tmp/zot-ft-logs -name '*.log' -print0 | xargs -0 cat
|
|
- name: Upload DynamoDB zot logs as build artifact
|
|
uses: actions/upload-artifact@v6
|
|
if: always()
|
|
with:
|
|
name: zot-scale-out-dynamodb-logs
|
|
path: /tmp/zot-ft-logs
|
|
if-no-files-found: ignore
|
|
- name: DynamoDB multi-hop detection
|
|
id: dynamodb_multihop
|
|
run: |
|
|
if find /tmp/zot-ft-logs -name '*.log' -print0 | xargs -0 cat | grep 'cannot proxy an already proxied request'; then
|
|
echo "detected multi-hop in DynamoDB tests"
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|
|
continue-on-error: true
|
|
- name: Clean up DynamoDB scale-out logs
|
|
run: |
|
|
rm -r /tmp/zot-ft-logs
|
|
- name: Fail job if DynamoDB error
|
|
if: ${{ steps.dynamodb_scale.outcome != 'success' || steps.dynamodb_multihop.outcome != 'success' }}
|
|
run: |
|
|
echo "DynamoDB scale-out tests failed"
|
|
exit 1
|
|
|
|
# Redis scale-out tests
|
|
- name: Run cloud scale-out Redis tests
|
|
id: redis_scale
|
|
run: |
|
|
make run-cloud-scale-out-redis-tests
|
|
env:
|
|
AWS_ACCESS_KEY_ID: fake
|
|
AWS_SECRET_ACCESS_KEY: fake
|
|
continue-on-error: true
|
|
- name: Print service logs for Redis scale-out
|
|
run: |
|
|
find /tmp/zot-ft-logs/redis -name '*.log' -print0 | xargs -0 cat
|
|
- name: Upload Redis zot logs as build artifact
|
|
uses: actions/upload-artifact@v6
|
|
if: always()
|
|
with:
|
|
name: zot-scale-out-redis-logs
|
|
path: /tmp/zot-ft-logs
|
|
if-no-files-found: ignore
|
|
- name: Redis multi-hop detection
|
|
id: redis_multihop
|
|
run: |
|
|
if find /tmp/zot-ft-logs/redis -name '*.log' -print0 | xargs -0 cat | grep 'cannot proxy an already proxied request'; then
|
|
echo "detected multi-hop in Redis tests"
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|
|
continue-on-error: true
|
|
- name: Clean up Redis scale-out logs
|
|
run: |
|
|
rm -rf /tmp/zot-ft-logs/redis
|
|
- name: Fail job if Redis error
|
|
if: ${{ steps.redis_scale.outcome != 'success' || steps.redis_multihop.outcome != 'success' }}
|
|
run: |
|
|
echo "Redis scale-out tests failed"
|
|
exit 1
|
|
- name: Upload zb test results zip as build artifact
|
|
uses: actions/upload-artifact@v6
|
|
if: always()
|
|
with:
|
|
name: zb-cloud-scale-out-functional-results-${{ github.sha }}
|
|
path: ./zb-results/
|
|
- uses: ./.github/actions/teardown-localstack
|