diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 69192db0c4c6..a8819af6c436 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,38 +1,71 @@ -name: "build" +name: "Build CI/CD Pipeline" on: - pull_request: - schedule: - - cron: "0 0 * * *" # Run everyday + push: + branches: [main, develop] + paths-ignore: + - "*.md" + - "docs/**" + + pull_request: + branches: [main] + types: [opened, synchronize, reopened] + paths-ignore: + - "*.md" + - "docs/**" + schedule: + - cron: "0 0 * * *" + + workflow_dispatch: jobs: build: + name: Build and Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 + - name: Checkout Repository + uses: actions/checkout@v5 + + - name: Set up uv + uses: astral-sh/setup-uv@v3 with: enable-cache: true - cache-dependency-glob: uv.lock - - uses: actions/setup-python@v5 + cache-dependency-glob: | + **/uv.lock + **/pyproject.toml + - name: Set up Python + uses: actions/setup-python@v5 with: - python-version: 3.x + python-version: "3.11" allow-prereleases: true - - run: uv sync --group=test + - name: Install dependencies + run: | + uv sync --all-extras + uv pip list + - name: Lint code + run: uv run ruff check . --output-format=github - name: Run tests # TODO: #8818 Re-enable quantum tests - run: uv run pytest - --ignore=computer_vision/cnn_classification.py - --ignore=docs/conf.py - --ignore=dynamic_programming/k_means_clustering_tensorflow.py - --ignore=machine_learning/lstm/lstm_prediction.py - --ignore=neural_network/input_data.py - --ignore=project_euler/ - --ignore=quantum/q_fourier_transform.py - --ignore=scripts/validate_solutions.py - --ignore=web_programming/current_stock_price.py - --ignore=web_programming/fetch_anime_and_play.py - --cov-report=term-missing:skip-covered - --cov=. . - - if: ${{ success() }} - run: scripts/build_directory_md.py 2>&1 | tee DIRECTORY.md + run: | + uv run pytest \ + --ignore=computer_vision/cnn_classification.py \ + --ignore=docs/conf.py \ + --ignore=dynamic_programming/k_means_clustering_tensorflow.py \ + --ignore=machine_learning/lstm/lstm_prediction.py \ + --ignore=neural_network/input_data.py \ + --ignore=project_euler/ \ + --ignore=quantum/q_fourier_transform.py \ + --ignore=scripts/validate_solutions.py \ + --ignore=web_programming/current_stock_price.py \ + --ignore=web_programming/fetch_anime_and_play.py \ + --cov-report=term-missing:skip-covered \ + --cov=. . + + - name: Build package (if needed) + run: uv build + if: ${{ success() }} + + - name: Generate Directory Markdown + run: python scripts/build_directory_md.py 2>&1 | tee DIRECTORY.md + if: ${{ success() }} +