add cisco netascode schema #193
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
| --- | |
| # yamllint disable rule:truthy rule:truthy rule:line-length | |
| name: "CI" | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }} | |
| VALE_VERSION: "3.7.1" | |
| jobs: | |
| files-changed: | |
| name: Detect which file has changed | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| outputs: | |
| documentation: ${{ steps.changes.outputs.documentation_all }} | |
| python: ${{ steps.changes.outputs.python_all }} | |
| yaml: ${{ steps.changes.outputs.yaml_all }} | |
| steps: | |
| - name: "Check out repository code" | |
| uses: "actions/checkout@v4" | |
| - name: Check for file changes | |
| uses: opsmill/paths-filter@v3.0.2 | |
| id: changes | |
| with: | |
| token: ${{ github.token }} | |
| filters: .github/file-filters.yml | |
| python-lint: | |
| if: needs.files-changed.outputs.python == 'true' | |
| needs: ["files-changed"] | |
| runs-on: "ubuntu-latest" | |
| strategy: | |
| matrix: | |
| python-version: | |
| - "3.12" | |
| poetry-version: | |
| - "1.8.5" | |
| timeout-minutes: 5 | |
| steps: | |
| - name: "Check out repository code" | |
| uses: "actions/checkout@v4" | |
| - name: "Set up Python ${{ matrix.python-version }}" | |
| uses: "actions/setup-python@v5" | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: "Install Poetry ${{ matrix.poetry-version }}" | |
| uses: "snok/install-poetry@v1" | |
| with: | |
| version: ${{ matrix.poetry-version }} | |
| virtualenvs-create: true | |
| virtualenvs-in-project: true | |
| installer-parallel: true | |
| - name: "Setup Python environment" | |
| run: | | |
| poetry config virtualenvs.create true --local | |
| poetry env use ${{ matrix.python-version }} | |
| - name: "Install dependencies" | |
| run: "poetry install --no-interaction --no-ansi --with dev" | |
| - name: "Linting: ruff check" | |
| run: "poetry run ruff check ." | |
| - name: "Linting: ruff format" | |
| run: "poetry run ruff format --check --diff ." | |
| - name: "Mypy Tests" | |
| run: "poetry run mypy --show-error-codes ." | |
| - name: "Pylint Tests" | |
| run: "poetry run pylint --ignore .venv ." | |
| yaml-lint: | |
| name: Run yaml lint | |
| if: needs.files-changed.outputs.yaml == 'true' | |
| needs: ["files-changed"] | |
| runs-on: "ubuntu-latest" | |
| timeout-minutes: 5 | |
| steps: | |
| - name: "Check out repository code" | |
| uses: "actions/checkout@v4" | |
| - name: "Setup environment" | |
| run: "pip install yamllint==1.35.1" | |
| - name: "Linting: yamllint" | |
| run: "yamllint -s ." | |
| schema-test: | |
| name: Test all schema files | |
| needs: | |
| - files-changed | |
| - yaml-lint | |
| if: | | |
| always() && !cancelled() && | |
| !contains(needs.*.result, 'failure') && | |
| !contains(needs.*.result, 'cancelled') && | |
| needs.files-changed.outputs.yaml == 'true' | |
| runs-on: | |
| group: huge-runners | |
| env: | |
| INFRAHUB_API_TOKEN: 06438eb2-8019-4776-878c-0941b1f1d1ec | |
| steps: | |
| - name: Check out repository code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Invoke | |
| run: poetry install --no-interaction --no-ansi --with dev | |
| - name: Set job name | |
| run: echo JOB_NAME="$GITHUB_JOB" >> $GITHUB_ENV | |
| - name: "Set environment variable INFRAHUB_BUILD_NAME" | |
| run: echo INFRAHUB_BUILD_NAME=infrahub-${{ runner.name }} >> $GITHUB_ENV | |
| - name: Initialize Infrahub | |
| run: poetry run invoke start | |
| - name: Set infrahub address | |
| run: | | |
| PORT=$(docker compose -p $INFRAHUB_BUILD_NAME port infrahub-server 8000 | cut -d: -f2) | |
| echo "INFRAHUB_ADDRESS=http://localhost:${PORT}" >> $GITHUB_ENV | |
| - name: "Store start time" | |
| run: echo TEST_START_TIME=$(date +%s)000 >> $GITHUB_ENV | |
| - name: Load all schemas files | |
| run: poetry run invoke schemas.load-all-schemas | |
| - name: "Clear docker environment and force vmagent to stop" | |
| if: always() | |
| run: poetry run invoke destroy | |
| documentation: | |
| defaults: | |
| run: | |
| working-directory: ./docs | |
| if: | | |
| always() && !cancelled() && | |
| !contains(needs.*.result, 'failure') && | |
| !contains(needs.*.result, 'cancelled') && | |
| needs.files-changed.outputs.documentation == 'true' | |
| needs: ["files-changed", "yaml-lint", "python-lint"] | |
| runs-on: "ubuntu-22.04" | |
| timeout-minutes: 5 | |
| steps: | |
| - name: "Check out repository code" | |
| uses: "actions/checkout@v4" | |
| with: | |
| submodules: true | |
| - name: Install NodeJS | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: docs/package-lock.json | |
| - name: "Setup Python environment" | |
| run: "pip install invoke toml" | |
| - name: "Install dependencies" | |
| run: "invoke docs.install" | |
| - name: "Generate reference documentation" | |
| run: "invoke docs.generate" | |
| working-directory: ./ | |
| - name: "Build docs website" | |
| run: "invoke docs.build" | |
| validate-documentation-style: | |
| if: | | |
| always() && !cancelled() && | |
| !contains(needs.*.result, 'failure') && | |
| !contains(needs.*.result, 'cancelled') && | |
| needs.files-changed.outputs.documentation == 'true' | |
| needs: ["files-changed", "yaml-lint", "python-lint"] | |
| runs-on: "ubuntu-22.04" | |
| timeout-minutes: 5 | |
| steps: | |
| - name: "Check out repository code" | |
| uses: "actions/checkout@v4" | |
| with: | |
| submodules: true | |
| # The official GitHub Action for Vale doesn't work, installing manually instead: | |
| # https://github.com/errata-ai/vale-action/issues/103 | |
| - name: Download Vale | |
| run: | | |
| curl -sL "https://github.com/errata-ai/vale/releases/download/v${VALE_VERSION}/vale_${VALE_VERSION}_Linux_64-bit.tar.gz" -o vale.tar.gz | |
| tar -xzf vale.tar.gz | |
| env: | |
| VALE_VERSION: ${{ env.VALE_VERSION }} | |
| - name: "Validate documentation style" | |
| run: ./vale --config=.vale.ini $(find ./docs -type f \( -name "*.mdx" -o -name "*.md" \) -not -path "./docs/node_modules/*" -not -path "./docs/docs/reference/*") |