Merge pull request #346 from ember-nexus/github-issue/345 #445
This file contains 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@v4 | |
- 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@v4 | |
- 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: buildjet-4vcpu-ubuntu-2204 | |
name: 'Build Docker Image' | |
timeout-minutes: 20 | |
needs: | |
- yml-lint | |
- markdown-lint | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Build Docker image - AMD dev | |
run: | | |
docker build \ | |
--target development \ | |
--no-cache \ | |
-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 build \ | |
--target production \ | |
--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@v4 | |
with: | |
name: docker-image-api-dev-amd | |
path: api-dev-amd.tar.gz | |
retention-days: 7 | |
- uses: actions/upload-artifact@v4 | |
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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
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 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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
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 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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
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 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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
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 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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
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 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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
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 api:dev-amd sh -c "composer install --ignore-platform-req=php --quiet && composer mess" | |
test-feature: | |
runs-on: buildjet-4vcpu-ubuntu-2204 | |
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@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
with: | |
name: docker-image-api-dev-amd | |
path: /tmp/docker | |
- uses: actions/download-artifact@v4 | |
with: | |
name: docker-image-api-prod-amd | |
path: /tmp/docker | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Feature Test | |
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 exec ember-nexus-api-dev bash -c "export API_DOMAIN=\"http://ember-nexus-api-prod\" && echo \$API_DOMAIN && composer install --ignore-platform-req=php --quiet && composer test:feature && composer test:feature:deprecated" | |
test-example-generation-controller: | |
runs-on: buildjet-2vcpu-ubuntu-2204 | |
name: 'Controller Example Generation Test' | |
timeout-minutes: 15 | |
needs: | |
- test-unit | |
- phpstan | |
- psalm | |
- cs-lint | |
- test-mutant | |
- test-mess-detector | |
steps: | |
- uses: actions/checkout@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
with: | |
name: docker-image-api-dev-amd | |
path: /tmp/docker | |
- uses: actions/download-artifact@v4 | |
with: | |
name: docker-image-api-prod-amd | |
path: /tmp/docker | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Controller Example Generation Test | |
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 exec ember-nexus-api-dev bash -c "export API_DOMAIN=\"http://ember-nexus-api\" && echo \$API_DOMAIN && composer install --ignore-platform-req=php --quiet && composer test:example-generation-controller && composer test:example-generation-controller:deprecated" | |
test-example-generation-command: | |
runs-on: buildjet-2vcpu-ubuntu-2204 | |
name: 'Command Example Generation Test' | |
timeout-minutes: 15 | |
needs: | |
- test-unit | |
- phpstan | |
- psalm | |
- cs-lint | |
- test-mutant | |
- test-mess-detector | |
steps: | |
- uses: actions/checkout@v4 | |
- run: mkdir -p /tmp/docker | |
- uses: actions/download-artifact@v4 | |
with: | |
name: docker-image-api-dev-amd | |
path: /tmp/docker | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Command Example Generation Test | |
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 exec ember-nexus-api bash -c "composer install --ignore-platform-req=php --quiet && BACKUP_FOLDER_CAN_BE_RESET=1 composer test:example-generation-command" |