mirror of
https://github.com/akuker/RASCSI.git
synced 2024-12-01 13:51:43 +00:00
74eef6f9cc
* Update revision for release
* Create sonarcloud.yml
* Update sonarcloud.yml
* Update sonarcloud.yml
* Update sonarcloud.yml
* Update sonarcloud.yml
* Delete sonarcloud.yml
* Update revision number for release
* Remove SonarCloud cache setup as it is now offered by default (#1135)
No need to configure the cache anymore, SonarCloud now has an automatic analysis caching. See https://docs.sonarcloud.io/advanced-setup/languages/c-c-objective-c/#analysis-cache.
* Revert "Remove SonarCloud cache setup as it is now offered by default (#1135)" (#1144)
This reverts commit 3ad668cfd1
.
* Update web.yml
* Update cpp.yml
* Update web.yml
* Update build_code.yml
* Update build_code.yml
* Update cpp.yml
* Update web.yml
---------
Co-authored-by: Tony Kuker <akuker@gmail.com>
Co-authored-by: Massimo Paladin <massimo.paladin@gmail.com>
149 lines
4.2 KiB
YAML
149 lines
4.2 KiB
YAML
name: Web Tests/Analysis
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
paths:
|
|
- 'python/web/**'
|
|
- 'python/common/**'
|
|
- '.github/workflows/web.yml'
|
|
- 'easyinstall.sh'
|
|
pull_request:
|
|
paths:
|
|
- 'python/web/**'
|
|
- 'python/common/**'
|
|
- '.github/workflows/web.yml'
|
|
- 'easyinstall.sh'
|
|
types:
|
|
- assigned
|
|
- opened
|
|
- synchronize
|
|
- reopened
|
|
branches:
|
|
- 'develop'
|
|
- 'main'
|
|
|
|
jobs:
|
|
backend_checks:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: 3.7.15
|
|
cache: 'pip'
|
|
|
|
- run: pip install -r web/requirements-dev.txt
|
|
id: pip
|
|
|
|
- run: black --check .
|
|
|
|
- run: flake8 .
|
|
if: success() || failure() && steps.pip.outcome == 'success'
|
|
|
|
backend_tests:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: docker
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Check DockerHub for existing backend image
|
|
run: |
|
|
export DOCKER_BACKEND_IMAGE="piscsi/backend-standalone:`git ls-files -s python .github/workflows/web.yml | git hash-object --stdin`"
|
|
echo "DOCKER_BACKEND_IMAGE=${DOCKER_BACKEND_IMAGE}" >> $GITHUB_ENV
|
|
docker pull --quiet ${DOCKER_BACKEND_IMAGE} || echo "DOCKER_BACKEND_NEEDS_PUSH=1" >> $GITHUB_ENV
|
|
|
|
- name: Build and launch containers
|
|
run: docker compose -f docker-compose.ci.yml up -d
|
|
|
|
- name: Run test suite
|
|
run: docker compose -f docker-compose.ci.yml run pytest -v
|
|
|
|
- name: Check if DockerHub secrets defined
|
|
run: if [[ $DOCKERHUB_USERNAME && $DOCKERHUB_TOKEN ]]; then echo "DOCKERHUB_SECRETS_DEFINED=1" >> $GITHUB_ENV; fi
|
|
env:
|
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Login to DockerHub
|
|
uses: docker/login-action@v2
|
|
if: env.DOCKERHUB_SECRETS_DEFINED && env.DOCKER_BACKEND_NEEDS_PUSH
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Push backend image to DockerHub
|
|
if: (success() || failure()) && env.DOCKERHUB_SECRETS_DEFINED && env.DOCKER_BACKEND_NEEDS_PUSH
|
|
run: docker compose -f docker-compose.ci.yml push backend
|
|
|
|
- name: Upload test artifacts
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: pytest-output.zip
|
|
path: |
|
|
docker/volumes/pytest/report.xml
|
|
docker/volumes/pytest/pytest.log
|
|
|
|
- name: Output container logs
|
|
if: success() || failure()
|
|
run: |
|
|
docker compose -f docker-compose.ci.yml logs backend > backend.log
|
|
docker compose -f docker-compose.ci.yml logs web > web.log
|
|
docker compose -f docker-compose.ci.yml logs -t | sort -u -k 3 > combined.log
|
|
|
|
- name: Upload backend log
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: backend.log
|
|
path: docker/backend.log
|
|
|
|
- name: Upload web log
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: web.log
|
|
path: docker/web.log
|
|
|
|
- name: Upload combined log
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: combined.log
|
|
path: docker/combined.log
|
|
|
|
frontend_checks:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: python/web
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
cache: 'npm'
|
|
cache-dependency-path: python/web/package-lock.json
|
|
|
|
- run: npm ci
|
|
id: npm
|
|
|
|
- name: Stylelint
|
|
run: |
|
|
npx stylelint src/static/themes/modern/style.css
|
|
npx stylelint src/static/themes/classic/style.css
|
|
|
|
- name: Prettier
|
|
run: |
|
|
npx prettier --check src/static/themes/modern/style.css
|
|
npx prettier --check src/static/themes/classic/style.css
|
|
if: success() || failure() && steps.npm.outcome == 'success'
|