fix ci #633
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: Test | |
| on: | |
| - push | |
| jobs: | |
| yml-lint: | |
| runs-on: ubuntu-latest | |
| name: 'YML lint' | |
| timeout-minutes: 3 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: docker pull cytopia/yamllint | |
| - run: docker run --rm -t -v $(pwd):/data cytopia/yamllint --config-file=tests/.yamllint . | |
| markdown-lint: | |
| runs-on: ubuntu-latest | |
| name: 'Markdown lint' | |
| timeout-minutes: 3 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: docker pull tmknom/markdownlint | |
| - run: docker run --rm -v $(pwd):/work tmknom/markdownlint '**/*.md' --config tests/.markdownlintrc --ignore vendor --ignore CHANGELOG.md --ignore var --ignore tmp | |
| build-docker-image: | |
| runs-on: gh-4vcpu-ubuntu-latest-amd | |
| name: 'Build Docker Image' | |
| timeout-minutes: 20 | |
| needs: | |
| - yml-lint | |
| - markdown-lint | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Expose GitHub Runtime | |
| uses: crazy-max/ghaction-github-runtime@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v4 | |
| with: | |
| version: latest | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v4 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Build Docker image - AMD dev | |
| run: | | |
| docker buildx build \ | |
| --target development \ | |
| --cache-from type=gha,scope=amd-dev \ | |
| --cache-to type=gha,mode=max,scope=amd-dev \ | |
| --load \ | |
| -t api:dev-amd \ | |
| -f ./docker/Dockerfile \ | |
| . | |
| docker save api:dev-amd | gzip > api-dev-amd.tar.gz | |
| - name: Build Docker image - AMD prod | |
| run: | | |
| docker buildx build \ | |
| --target production \ | |
| --cache-from type=gha,scope=amd-prod \ | |
| --cache-to type=gha,mode=max,scope=amd-prod \ | |
| --load \ | |
| --build-arg="VERSION=$( cat composer.json | jq -r .version )" \ | |
| -t api:prod-amd \ | |
| -f ./docker/Dockerfile \ | |
| . | |
| docker save api:prod-amd | gzip > api-prod-amd.tar.gz | |
| - uses: actions/upload-artifact@v6 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: api-dev-amd.tar.gz | |
| retention-days: 7 | |
| - uses: actions/upload-artifact@v6 | |
| with: | |
| name: docker-image-api-prod-amd | |
| path: api-prod-amd.tar.gz | |
| retention-days: 7 | |
| cs-lint: | |
| runs-on: ubuntu-latest | |
| name: 'CS Lint' | |
| timeout-minutes: 5 | |
| needs: | |
| - build-docker-image | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: CS Lint | |
| run: | | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker run -v $(pwd):/var/www/html --user "$(id -u):$(id -g)" api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && PHP_CS_FIXER_IGNORE_ENV=1 composer cs:list" | |
| psalm: | |
| runs-on: ubuntu-latest | |
| name: 'Psalm' | |
| timeout-minutes: 5 | |
| needs: | |
| - build-docker-image | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: Psalm | |
| run: | | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker run -v $(pwd):/var/www/html --user "$(id -u):$(id -g)" api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && composer psalm" | |
| phpstan: | |
| runs-on: ubuntu-latest | |
| name: 'Phpstan' | |
| timeout-minutes: 5 | |
| needs: | |
| - build-docker-image | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: Phpstan | |
| run: | | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker run -v $(pwd):/var/www/html --user "$(id -u):$(id -g)" api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && composer phpstan" | |
| test-unit: | |
| runs-on: ubuntu-latest | |
| name: 'Unit Test' | |
| timeout-minutes: 5 | |
| needs: | |
| - build-docker-image | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: Unit Test | |
| run: | | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker run -v $(pwd):/var/www/html --user "$(id -u):$(id -g)" api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && composer test:unit" | |
| test-mutant: | |
| runs-on: ubuntu-latest | |
| name: 'Mutant Test' | |
| timeout-minutes: 5 | |
| needs: | |
| - build-docker-image | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: Mutant Test | |
| run: | | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker run -v $(pwd):/var/www/html --user "$(id -u):$(id -g)" api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && composer test:mutant" | |
| test-mess-detector: | |
| runs-on: ubuntu-latest | |
| name: 'Mess Detector' | |
| timeout-minutes: 5 | |
| needs: | |
| - build-docker-image | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: Mess Detector | |
| run: | | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker run -v $(pwd):/var/www/html --user "$(id -u):$(id -g)" api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && composer mess" | |
| test-feature: | |
| runs-on: ubuntu-latest | |
| name: 'Feature Test' | |
| timeout-minutes: 15 | |
| needs: | |
| - test-unit | |
| - phpstan | |
| - psalm | |
| - cs-lint | |
| - test-mutant | |
| - test-mess-detector | |
| strategy: | |
| matrix: | |
| dockerCompose: | |
| - "neo4j-5.7" | |
| - "neo4j-5.20" | |
| - "neo4j-latest" | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-prod-amd | |
| path: /tmp/docker | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v4 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Setup | |
| run: | | |
| chmod 777 ./bin/test-feature-prepare | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker load < /tmp/docker/api-prod-amd.tar.gz | |
| docker compose -f ./tests/FeatureTests/docker-compose-${{ matrix.dockerCompose }}.yml up --quiet-pull -d | |
| echo "waiting for containers to star tup (10s)" | |
| sleep 10 | |
| echo "finished waiting" | |
| docker compose -f ./tests/FeatureTests/docker-compose-${{ matrix.dockerCompose }}.yml ps | |
| docker exec --user "$(id -u):$(id -g)" api-dev bash -c "composer install --ignore-platform-req=php --quiet" | |
| docker exec --user "$(id -u):$(id -g)" api-dev bash -c "php bin/console healthcheck" | |
| - name: Feature Test | |
| run: | | |
| docker exec --user "$(id -u):$(id -g)" api-dev bash -c "export API_DOMAIN=\"http://api-prod\" && echo \$API_DOMAIN && composer test:feature && composer test:feature:deprecated" | |
| test-example-generation-controller: | |
| runs-on: ubuntu-latest | |
| name: 'Controller Example Generation Test' | |
| timeout-minutes: 15 | |
| needs: | |
| - test-unit | |
| - phpstan | |
| - psalm | |
| - cs-lint | |
| - test-mutant | |
| - test-mess-detector | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-prod-amd | |
| path: /tmp/docker | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v4 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Setup | |
| run: | | |
| chmod 777 ./bin/test-feature-prepare | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker load < /tmp/docker/api-prod-amd.tar.gz | |
| docker compose -f ./tests/ExampleGenerationController/docker-compose.yml up --quiet-pull -d | |
| echo "waiting for containers to star tup (10s)" | |
| sleep 10 | |
| echo "finished waiting" | |
| docker compose -f ./tests/ExampleGenerationController/docker-compose.yml ps | |
| docker exec --user "$(id -u):$(id -g)" api-dev bash -c "composer install --ignore-platform-req=php --quiet" | |
| docker exec --user "$(id -u):$(id -g)" api-dev bash -c "php bin/console healthcheck" | |
| - name: Controller Example Generation Test | |
| run: | | |
| docker exec --user "$(id -u):$(id -g)" api-dev bash -c "export API_DOMAIN=\"http://api\" && echo \$API_DOMAIN && composer test:example-generation-controller && composer test:example-generation-controller:with-different-configuration && composer test:example-generation-controller:deprecated" | |
| test-example-generation-command: | |
| runs-on: ubuntu-latest | |
| name: 'Command Example Generation Test' | |
| timeout-minutes: 15 | |
| needs: | |
| - test-unit | |
| - phpstan | |
| - psalm | |
| - cs-lint | |
| - test-mutant | |
| - test-mess-detector | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - run: mkdir -p /tmp/docker | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: docker-image-api-dev-amd | |
| path: /tmp/docker | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v4 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Setup | |
| run: | | |
| chmod 777 ./bin/test-feature-command-prepare | |
| docker load < /tmp/docker/api-dev-amd.tar.gz | |
| docker compose -f ./tests/ExampleGenerationCommand/docker-compose.yml up --quiet-pull -d | |
| echo "waiting for containers to star tup (10s)" | |
| sleep 10 | |
| echo "finished waiting" | |
| docker compose -f ./tests/ExampleGenerationCommand/docker-compose.yml ps | |
| docker exec --user "$(id -u):$(id -g)" api bash -c "composer install --ignore-platform-req=php --quiet" | |
| docker exec --user "$(id -u):$(id -g)" api bash -c "php bin/console healthcheck" | |
| - name: Command Example Generation Test | |
| run: | | |
| docker exec --user "$(id -u):$(id -g)" api bash -c "BACKUP_FOLDER_CAN_BE_RESET=1 composer test:example-generation-command" |