Skip to content

Don't load filtered-out parents eagerly on every Object.access #3277

Don't load filtered-out parents eagerly on every Object.access

Don't load filtered-out parents eagerly on every Object.access #3277

Workflow file for this run

name: "Build and test mwdb-core"
on:
push:
branches:
- master
- v[23456789].*.*
pull_request:
branches:
- master
- v[23456789].*.*
jobs:
lint_core:
runs-on: ubuntu-latest
steps:
- uses: CERT-Polska/lint-python-action@v2
with:
install-requirements: false
lint_web:
name: Lint mwdb-core web sources
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install dependencies
working-directory: mwdb/web
run: npm install
- name: Check if code was prettified
working-directory: mwdb/web
run: npx prettier --check src
- name: Check types
working-directory: mwdb/web
run: npx tsc
build_core:
needs: [lint_core]
name: Build mwdb-core core image
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mwdb-core image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile
tags: |
certpl/mwdb:${{ github.sha }}
certpl/mwdb:master
cache-from: |
type=registry,ref=certpl/mwdb:buildcache
outputs: type=docker,dest=./mwdb-image
- name: Upload mwdb-core image
uses: actions/upload-artifact@v4
with:
name: mwdb-image
path: mwdb-image
build_frontend:
needs: [lint_web]
name: Build mwdb-core web image
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mwdb-core web image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile-web
tags: |
certpl/mwdb-web:${{ github.sha }}
certpl/mwdb-web:master
cache-from: |
type=registry,ref=certpl/mwdb-web:buildcache
outputs: type=docker,dest=./mwdb-web-image
- name: Upload mwdb-core web image
uses: actions/upload-artifact@v4
with:
name: mwdb-web-image
path: mwdb-web-image
build_backend_e2e:
name: Build backend e2e test image
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mwdb-tests image
uses: docker/build-push-action@v6
with:
file: ./tests/backend/Dockerfile
context: tests/backend
tags: |
certpl/mwdb-tests:${{ github.sha }}
cache-from: |
type=registry,ref=certpl/mwdb-tests:buildcache
outputs: type=docker,dest=./mwdb-tests-image
- name: Upload test image
uses: actions/upload-artifact@v4
with:
name: mwdb-tests-image
path: mwdb-tests-image
build_frontend_e2e:
name: Build frontend e2e test image
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mwdb-web-tests image
uses: docker/build-push-action@v6
with:
file: ./tests/frontend/Dockerfile
context: tests/frontend
tags: |
certpl/mwdb-web-tests:${{ github.sha }}
cache-from: |
type=registry,ref=certpl/mwdb-web-tests:buildcache
outputs: type=docker,dest=./mwdb-web-tests-image
- name: Upload test image
uses: actions/upload-artifact@v4
with:
name: mwdb-web-tests-image
path: mwdb-web-tests-image
build_frontend_unit_test:
name: Build frontend unit test image
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push mwdb-web-unit-tests image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile-web-unit-test
tags: |
certpl/mwdb-web-unit-tests:${{ github.sha }}
cache-from: |
type=registry,ref=certpl/mwdb-web-unit-tests:buildcache
outputs: type=docker,dest=./mwdb-web-unit-tests-image
- name: Upload unit test image
uses: actions/upload-artifact@v4
with:
name: mwdb-web-unit-tests-image
path: mwdb-web-unit-tests-image
test_backend_e2e:
needs: [build_core, build_frontend, build_backend_e2e]
name: Perform backend e2e tests
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: mwdb-*
- name: Import images
run: |
docker load --input ./mwdb-image/mwdb-image
docker load --input ./mwdb-web-image/mwdb-web-image
docker load --input ./mwdb-tests-image/mwdb-tests-image
docker tag certpl/mwdb:$GITHUB_SHA certpl/mwdb:latest
docker tag certpl/mwdb-web:$GITHUB_SHA certpl/mwdb-web:latest
docker tag certpl/mwdb-tests:$GITHUB_SHA certpl/mwdb-tests:latest
- name: Setup configuration
run: |
chmod +x gen_vars.sh
./gen_vars.sh test
- name: Perform tests
run: |
docker compose -f docker-compose-e2e.yml up -d mwdb-tests
docker compose -f docker-compose-e2e.yml logs -f -t mwdb-tests
([ $(docker wait mwdb_core_e2e_tests) == 0 ])
- name: Job failed - storing application logs
if: ${{ failure() }}
run: |
docker compose -f docker-compose-e2e.yml logs --no-color -t mwdb > ./mwdb-e2e-logs
- name: Job failed - upload application logs
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: mwdb-e2e-logs
path: mwdb-e2e-logs
test_frontend_e2e:
needs: [build_core, build_frontend, build_frontend_e2e]
name: Perform frontend e2e tests
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: mwdb-*
- name: Import images
run: |
docker load --input ./mwdb-image/mwdb-image
docker load --input ./mwdb-web-image/mwdb-web-image
docker load --input ./mwdb-web-tests-image/mwdb-web-tests-image
docker tag certpl/mwdb:$GITHUB_SHA certpl/mwdb:latest
docker tag certpl/mwdb-web:$GITHUB_SHA certpl/mwdb-web:latest
docker tag certpl/mwdb-web-tests:$GITHUB_SHA certpl/mwdb-web-tests:latest
- name: Setup configuration
run: |
chmod +x gen_vars.sh
./gen_vars.sh test
- name: Perform tests
run: |
docker compose -f docker-compose-e2e.yml up -d web-tests
docker compose -f docker-compose-e2e.yml logs -f -t web-tests
([ $(docker wait mwdb_core_e2e_web_tests) == 0 ])
- name: Job failed - storing videos from e2e tests
if: ${{ failure() }}
run: |
docker cp mwdb_core_e2e_web_tests:/app/cypress/videos ./artifacts
- name: Job failed - upload application logs
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: mwdb-e2e-web-videos
path: artifacts
test_frontend_unit:
needs: [ build_frontend_unit_test ]
name: Perform frontend unit tests
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: mwdb-*
- name: Import images
run: |
docker load --input ./mwdb-web-unit-tests-image/mwdb-web-unit-tests-image
docker tag certpl/mwdb-web-unit-tests:$GITHUB_SHA certpl/mwdb-web-unit-tests:latest
- name: Setup configuration
run: |
chmod +x gen_vars.sh
./gen_vars.sh test
- name: Perform tests
run: |
docker compose -f docker-compose-unit-test.yml up -d
docker compose -f docker-compose-unit-test.yml logs -f -t
push_images:
needs: [test_backend_e2e, test_frontend_e2e, test_frontend_unit]
name: Push images on Docker Hub
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push mwdb-core image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile
tags: |
certpl/mwdb:${{ github.sha }}
certpl/mwdb:master
cache-from: |
type=registry,ref=certpl/mwdb:buildcache
cache-to: |
type=registry,ref=certpl/mwdb:buildcache,mode=max
push: true
- name: Build and push mwdb-core web-source image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile-web
target: build
tags: |
certpl/mwdb-web-source:${{ github.sha }}
certpl/mwdb-web-source:master
cache-from: |
type=registry,ref=certpl/mwdb-web-source:buildcache
cache-to: |
type=registry,ref=certpl/mwdb-web-source:buildcache,mode=max
push: true
- name: Build and push mwdb-core web image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile-web
tags: |
certpl/mwdb-web:${{ github.sha }}
certpl/mwdb-web:master
cache-from: |
type=registry,ref=certpl/mwdb-web:buildcache
cache-to: |
type=registry,ref=certpl/mwdb-web:buildcache,mode=max
push: true
push_test_images:
needs: [test_backend_e2e, test_frontend_e2e, test_frontend_unit]
name: Push test images on Docker Hub
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push mwdb-tests image
uses: docker/build-push-action@v6
with:
file: ./tests/backend/Dockerfile
context: tests/backend
tags: |
certpl/mwdb-tests:${{ github.sha }}
certpl/mwdb-tests:master
cache-from: |
type=registry,ref=certpl/mwdb-tests:buildcache
cache-to: |
type=registry,ref=certpl/mwdb-tests:buildcache,mode=max
push: true
- name: Build and push mwdb-web-tests image
uses: docker/build-push-action@v6
with:
file: ./tests/frontend/Dockerfile
context: tests/frontend
tags: |
certpl/mwdb-web-tests:${{ github.sha }}
certpl/mwdb-web-tests:master
cache-from: |
type=registry,ref=certpl/mwdb-web-tests:buildcache
cache-to: |
type=registry,ref=certpl/mwdb-web-tests:buildcache,mode=max
push: true
- name: Build and push mwdb-web-unit-tests image
uses: docker/build-push-action@v6
with:
file: ./deploy/docker/Dockerfile-web-unit-test
tags: |
certpl/mwdb-web-unit-tests:${{ github.sha }}
certpl/mwdb-web-unit-tests:master
cache-from: |
type=registry,ref=certpl/mwdb-web-unit-tests:buildcache
cache-to: |
type=registry,ref=certpl/mwdb-web-unit-tests:buildcache,mode=max
push: true