feat: update new cookiecutter template #99
Workflow file for this run
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] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - name: Set up Python | |
| uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 | |
| with: | |
| python-version: "3.13" | |
| - name: Install Poetry | |
| uses: snok/install-poetry@76e04a911780d5b312d89783f7b1cd627778900a # v1.4.1 | |
| with: | |
| virtualenvs-create: true | |
| virtualenvs-in-project: true | |
| installer-parallel: true | |
| - name: Load cached venv | |
| id: cached-poetry-dependencies | |
| uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 | |
| with: | |
| path: .venv | |
| key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} | |
| - name: Install dependencies | |
| run: poetry install --no-interaction --no-ansi | |
| - name: Cache Graphviz installation | |
| id: cache-graphviz | |
| uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4 | |
| with: | |
| path: ~/graphviz-cache | |
| key: graphviz-installed-${{ runner.os }}-v3 | |
| - name: Install Graphviz | |
| run: | | |
| echo "Cache hit: ${{ steps.cache-graphviz.outputs.cache-hit }}" | |
| if [ "${{ steps.cache-graphviz.outputs.cache-hit }}" = "true" ]; then | |
| echo "Restoring from cache" | |
| echo "Copying binaries..." | |
| sudo cp ~/graphviz-cache/bin/* /usr/bin/ 2>/dev/null || echo "Failed to copy binaries" | |
| echo "Copying libraries..." | |
| sudo cp ~/graphviz-cache/lib/* /usr/lib/x86_64-linux-gnu/ 2>/dev/null || echo "Failed to copy libraries" | |
| echo "Copying share files..." | |
| sudo cp -r ~/graphviz-cache/share/graphviz /usr/share/ 2>/dev/null || echo "Failed to copy share files" | |
| echo "Running ldconfig..." | |
| sudo ldconfig || echo "ldconfig failed" | |
| else | |
| echo "Installing fresh" | |
| echo "Updating package list..." | |
| sudo apt-get update | |
| echo "Installing graphviz..." | |
| sudo apt-get install -y graphviz | |
| echo "Creating cache directories..." | |
| mkdir -p ~/graphviz-cache/{bin,lib,share} | |
| echo "Caching binaries..." | |
| cp /usr/bin/{dot,neato,twopi,circo,fdp,sfdp,patchwork,osage} ~/graphviz-cache/bin/ 2>/dev/null || echo "Some binaries not found" | |
| echo "Caching libraries..." | |
| cp /usr/lib/x86_64-linux-gnu/lib{gvc,cgraph,cdt,pathplan,gvpr,lab-gamut}* ~/graphviz-cache/lib/ 2>/dev/null || echo "Some libraries not found" | |
| echo "Caching share files..." | |
| cp -r /usr/share/graphviz ~/graphviz-cache/share/ 2>/dev/null || echo "Share files not found" | |
| fi | |
| echo "Testing dot command:" | |
| if which dot; then | |
| dot -V || echo "dot -V failed but dot exists" | |
| else | |
| echo "dot command not found" | |
| fi | |
| echo "Install Graphviz step completed" | |
| - name: Run tests | |
| run: make test | |
| - name: SonarQube Scan | |
| uses: SonarSource/sonarqube-scan-action@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 # v5.3.1 | |
| env: | |
| SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5.5.1 | |
| with: | |
| fail_ci_if_error: true | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| verbose: true |