Skip to content

feat: add task to clean sandbox store #3503

feat: add task to clean sandbox store

feat: add task to clean sandbox store #3503

Workflow file for this run

name: Basic Tests
on:
push:
branches:
- main
paths-ignore:
- '**.md'
- 'docs/**'
- 'mkdocs.yml'
pull_request:
branches:
- main
paths-ignore:
- '**.md'
- 'docs/**'
- 'mkdocs.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
shellcheck:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
run-install: false
post-cleanup: false
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
cache: false
environments: shellcheck
- name: Run shellcheck
run: pixi run shellcheck
unittest:
name: Unit test - ${{ matrix.package }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
package:
- diracx-core
- diracx-db
- diracx-logic
- diracx-routers
- diracx-client
- diracx-api
- diracx-cli
- gubbins-core
- gubbins-db
- gubbins-logic
- gubbins-routers
- gubbins-client
- gubbins-api
- gubbins-cli
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
run-install: false
post-cleanup: false
- name: Apply workarounds
run: |
# Workaround for https://github.com/prefix-dev/pixi/issues/3762
sed -i.bak 's@editable = true@editable = false@g' pixi.toml
rm pixi.toml.bak
# Show any changes
git diff
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
cache: false
environments: ${{ matrix.package }}
- name: Run pytest
run: pixi run pytest-${{ matrix.package }} --cov-report=xml:coverage.xml --junitxml=report.xml
- name: Upload coverage report
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
pytest-integration:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
extension:
- diracx
- gubbins
steps:
- name: Free disk space
run: |
echo "Before cleanup:"
df -h
# remove .NET SDKs
sudo rm -rf /usr/share/dotnet || true
# remove Android SDK
sudo rm -rf usr/local/lib/android || true
# remove Haskell Compiler
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/.ghcup || true
sudo apt-get clean || echo "::warning::The command [sudo apt-get clean] failed to complete successfully. Proceeding..."
# prune docker
docker system prune -af || true
echo "After cleanup:"
df -h
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
run-install: false
post-cleanup: false
- name: Apply workarounds
run: |
# Workaround for https://github.com/prefix-dev/pixi/issues/3762
sed -i.bak 's@editable = true@editable = false@g' pixi.toml
rm pixi.toml.bak
# Show any changes
git diff
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
cache: false
environments: ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
- name: Build services image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7
with:
context: .
file: containers/Dockerfile
build-args: |
PIXI_ENV=${{ matrix.extension == 'diracx' && 'container-services' || 'gubbins-container-services' }}
tags: ghcr.io/${{ matrix.extension == 'diracx' && 'diracgrid/diracx' || 'gubbins' }}/services:dev
outputs: type=docker,dest=/tmp/services_image.tar
- name: Build client image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7
with:
context: .
file: containers/Dockerfile
build-args: |
PIXI_ENV=${{ matrix.extension == 'diracx' && 'container-client' || 'gubbins-container-client' }}
tags: ghcr.io/${{ matrix.extension == 'diracx' && 'diracgrid/diracx' || 'gubbins' }}/client:dev
outputs: type=docker,dest=/tmp/client_image.tar
- name: Load images
run: |
docker load --input /tmp/services_image.tar
rm -f /tmp/services_image.tar
docker load --input /tmp/client_image.tar
rm -f /tmp/client_image.tar
docker builder prune -af || true
docker image ls -a
- name: Start demo
run: |
git clone https://github.com/DIRACGrid/diracx-charts.git ../diracx-charts
declare -a demo_args=()
demo_args+=("--enable-open-telemetry")
demo_args+=("--enable-coverage")
demo_args+=("--exit-when-done")
demo_args+=("--ci-values" "../diracx-charts/demo/ci_values.yaml")
# Download helm/kubectl/kind first
../diracx-charts/run_demo.sh --only-download-deps
if [ ${{ matrix.extension }} == 'gubbins' ]; then
demo_args+=("--set-value" "diracx.developer.autoReload=false")
# Copy gubbins-charts to a temporary location and build dependencies
cp -r ./extensions/gubbins-charts /tmp/
../diracx-charts/.demo/helm dependency build /tmp/gubbins-charts
# Replace the downloaded subchart with the locally-cloned one to
# ensure we have the pixi-compatible ConfigMap entrypoint
rm -f /tmp/gubbins-charts/charts/diracx-*.tgz
../diracx-charts/.demo/helm package ../diracx-charts/diracx -d /tmp/gubbins-charts/charts/
demo_args+=("--extension-chart-path" "/tmp/gubbins-charts")
demo_args+=("--ci-values" "./extensions/gubbins_values.yaml")
demo_args+=("--load-docker-image" "ghcr.io/gubbins/services:dev")
demo_args+=("--load-docker-image" "ghcr.io/gubbins/client:dev")
demo_args+=("--prune-loaded-images")
elif [ ${{ matrix.extension }} != 'diracx' ]; then
echo "Unknown extension: ${{ matrix.extension }}"
exit 1
else
demo_args+=("--set-value" "developer.autoReload=false")
demo_args+=("--set-value" "global.imagePullPolicy=IfNotPresent")
demo_args+=("--load-docker-image" "ghcr.io/diracgrid/diracx/services:dev")
demo_args+=("--load-docker-image" "ghcr.io/diracgrid/diracx/client:dev")
demo_args+=("--prune-loaded-images")
fi
# Run the demo with the provided arguments
set -x
../diracx-charts/run_demo.sh "${demo_args[@]}"
- name: Debugging information
if: always()
run: .github/scripts/collect-k8s-debug-info.sh "$PWD/../diracx-charts/.demo" "${{ matrix.extension == 'gubbins' && 'gubbins' || 'diracx' }}"
- name: Run pytest
run: |
pixi run pytest-${{ matrix.extension }} --demo-dir="$PWD/../diracx-charts/" --cov-report=xml:coverage-pytest.xml --junitxml=report.xml
- name: Collect demo coverage
run: |
pixi run -e ${{ matrix.extension == 'diracx' && 'default' || 'default-gubbins' }} python -m diracx.testing coverage collect-demo --demo-dir=../diracx-charts/.demo
- name: Upload coverage report
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
with:
files: ./coverage-pytest.xml,./coverage-demo.xml
client-generation:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
package: [diracx, gubbins]
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
run-install: false
post-cleanup: false
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
cache: false
locked: false
environments: ${{ matrix.package }}-generate-client
- name: Run autorest
run: pixi run -e ${{ matrix.package }}-generate-client generate-client