Skip to content

Merge pull request #346 from ember-nexus/github-issue/345 #445

Merge pull request #346 from ember-nexus/github-issue/345

Merge pull request #346 from ember-nexus/github-issue/345 #445

Workflow file for this run

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"