refactor: reorganize project structure with src directory and conftes… #25
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: CI | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| # Allow manual trigger | |
| workflow_dispatch: | |
| jobs: | |
| frontend: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./chatbot-ui | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: '18' | |
| cache: 'yarn' | |
| cache-dependency-path: './chatbot-ui/yarn.lock' | |
| - name: Install dependencies | |
| run: yarn install --frozen-lockfile | |
| - name: Check for yarn.lock changes | |
| run: | | |
| if git diff --name-only | grep -q "yarn.lock"; then | |
| echo "⚠️ yarn.lock has changed. Please commit these changes." | |
| exit 1 | |
| fi | |
| - name: Run linter | |
| run: yarn lint || (echo "::warning::Linting failed but continuing..." && true) | |
| - name: Run type check | |
| run: yarn tsc --noEmit || (echo "::warning::Type checking failed but continuing..." && true) | |
| - name: Run tests | |
| run: yarn test --passWithNoTests --ci --coverage | |
| - name: Build | |
| run: yarn build | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: frontend-build | |
| path: chatbot-ui/build/ | |
| retention-days: 7 | |
| backend: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./chatbot-api | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.9' | |
| cache: 'pip' | |
| cache-dependency-path: './chatbot-api/requirements.txt' | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| pip install pytest pytest-cov flake8 black | |
| - name: Check code formatting | |
| run: black --check . || (echo "::warning::Code formatting check failed but continuing..." && true) | |
| - name: Run linter | |
| run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics || (echo "::warning::Linting failed but continuing..." && true) | |
| - name: Run tests with coverage | |
| run: | | |
| pytest --cov=./ --cov-report=xml | |
| - name: Upload coverage reports | |
| uses: codecov/codecov-action@v3 | |
| with: | |
| file: ./chatbot-api/coverage.xml | |
| flags: backend | |
| name: backend-coverage | |
| fail_ci_if_error: false | |
| security: | |
| needs: [frontend, backend] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Run security scan | |
| uses: snyk/actions/node@master | |
| continue-on-error: true | |
| env: | |
| SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} | |
| with: | |
| args: --severity-threshold=high | |
| notify: | |
| needs: [frontend, backend, security] | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - uses: technote-space/workflow-conclusion-action@v3 | |
| - name: Send notification | |
| if: env.WORKFLOW_CONCLUSION == 'failure' | |
| run: | | |
| echo "::warning::Workflow failed! Please check the logs for details." |