feat: add task to clean sandbox store #3503
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |