forked from nautobot/nautobot-ansible
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
af5f7b3
commit e389272
Showing
187 changed files
with
3,866 additions
and
14,133 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
skips: [] | ||
# No need to check for security issues in the test scripts! | ||
exclude_dirs: | ||
- "./tests/" |
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
############# | ||
# Dependencies | ||
# | ||
# This base stage just installs the dependencies required for production | ||
# without any development deps. | ||
ARG PYTHON_VER=3.8 | ||
FROM python:${PYTHON_VER} AS base | ||
|
||
ENV DEBIAN_FRONTEND=noninteractive | ||
RUN apt-get update -yqq && apt-get install -yqq shellcheck && apt-get clean | ||
|
||
WORKDIR /usr/src/app | ||
|
||
# Update pip to latest | ||
RUN python -m pip install -U pip | ||
|
||
# Install poetry for dep management | ||
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python | ||
ENV PATH="$PATH:/root/.poetry/bin" | ||
RUN poetry config virtualenvs.create false | ||
|
||
# Install project manifest | ||
COPY pyproject.toml . | ||
|
||
# Install poetry.lock from which to build | ||
COPY poetry.lock . | ||
|
||
# Install all dependencies | ||
RUN poetry install | ||
|
||
# Allow for flexible Python versions, for broader testing | ||
ARG PYTHON_VER | ||
ENV PYTHON_VERSION=${PYTHON_VER} | ||
|
||
# Set a custom collection path for all ansible commands | ||
# Note: This only allows for one path, not colon-separated, because we use it | ||
# elsewhere | ||
ARG ANSIBLE_COLLECTIONS_PATH=/usr/share/ansible/collections | ||
ENV ANSIBLE_COLLECTIONS_PATH=${ANSIBLE_COLLECTIONS_PATH} | ||
|
||
# For Module unit tests as we use some testing features avaiable in this collection | ||
RUN ansible-galaxy collection install community.general | ||
|
||
# Copy in the application source and everything not explicitly banned by | ||
# .dockerignore | ||
COPY . . | ||
|
||
######### | ||
# Linting | ||
# | ||
# Runs all necessary linting and code checks | ||
FROM base AS lint | ||
|
||
|
||
# We should look into pylint/flake8, etc. in the future | ||
# RUN echo 'Running Flake8' && \ | ||
# flake8 . && \ | ||
RUN echo 'Running Black' && \ | ||
black --check --diff . && \ | ||
# Removed and running Pylint in unit tests after project has been created | ||
# echo 'Running Pylint' && \ | ||
# find . -name '*.py' | xargs pylint && \ | ||
echo 'Running Bandit' && \ | ||
bandit --recursive ./ --configfile .bandit.yml | ||
|
||
|
||
############ | ||
# Unit Tests | ||
# | ||
# This test stage runs true unit tests (no outside services) at build time, as | ||
# well as enforcing codestyle and performing fast syntax checks. It is built | ||
# into an image with docker-compose for running the full test suite. | ||
FROM base AS unittests | ||
|
||
ARG PYTHON_VER=3.8 | ||
ENV PYTHON_VERSION=${PYTHON_VER} | ||
|
||
# Allows for custom command line arguments to be passed to ansible-test (like -vvv) | ||
ARG ANSIBLE_SANITY_ARGS | ||
ENV ANSIBLE_SANITY_ARGS=${ANSIBLE_SANITY_ARGS} | ||
ARG ANSIBLE_UNIT_ARGS | ||
ENV ANSIBLE_UNIT_ARGS=${ANSIBLE_UNIT_ARGS} | ||
|
||
# Ansible sanity and unit tests | ||
# | ||
# Runs the sanity and unit tests inside the container build context to isolate | ||
# thsoe tests from all runtime influences | ||
|
||
# Build Collection to run ansible-tests against | ||
RUN ansible-galaxy collection build --output-path ./dist/ . | ||
|
||
# Install built library | ||
RUN ansible-galaxy collection install ./dist/networktocode*.tar.gz | ||
|
||
# Switch to the collection path for tests | ||
WORKDIR ${ANSIBLE_COLLECTIONS_PATH}/ansible_collections/networktocode/nautobot | ||
|
||
# Run sanity tests | ||
RUN ansible-test sanity $ANSIBLE_SANITY_ARGS \ | ||
--requirements \ | ||
--skip-test pep8 \ | ||
--python ${PYTHON_VER} \ | ||
plugins/ | ||
|
||
# Run unit tests | ||
RUN ansible-test units $ANSIBLE_UNIT_ARGS --coverage --python $PYTHON_VERSION | ||
|
||
############ | ||
# Integration Tests | ||
FROM unittests AS integration | ||
|
||
ARG ANSIBLE_INTEGRATION_ARGS | ||
ENV ANSIBLE_INTEGRATION_ARGS=${ANSIBLE_INTEGRATION_ARGS} | ||
|
||
# Integration test entrypoint | ||
ENTRYPOINT ${ANSIBLE_COLLECTIONS_PATH}/ansible_collections/networktocode/nautobot/tests/integration/entrypoint.sh | ||
|
||
CMD ["--help"] |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
NAUTOBOT_CREATE_SUPERUSER="true" | ||
NAUTOBOT_SUPERUSER_NAME="admin" | ||
NAUTOBOT_SUPERUSER_PASSWORD="admin" | ||
NAUTOBOT_SUPERUSER_API_TOKEN="0123456789abcdef0123456789abcdef01234567" | ||
|
||
NAUTOBOT_ALLOWED_HOSTS=* | ||
NAUTOBOT_CHANGELOG_RETENTION=0 | ||
NAUTOBOT_CONFIG=/opt/nautobot/nautobot_config.py | ||
NAUTOBOT_DB_HOST=postgres | ||
NAUTOBOT_DB_NAME=nautobot | ||
NAUTOBOT_DB_PASSWORD=decinablesprewad | ||
NAUTOBOT_DB_USER=nautobot | ||
NAUTOBOT_DB_TIMEOUT=300 | ||
NAUTOBOT_DB_ENGINE=django.db.backends.postgresql | ||
NAUTOBOT_MAX_PAGE_SIZE=0 | ||
NAUTOBOT_NAPALM_TIMEOUT=5 | ||
NAUTOBOT_REDIS_HOST=redis | ||
NAUTOBOT_REDIS_PASSWORD=decinablesprewad | ||
NAUTOBOT_REDIS_PORT=6379 | ||
# Uncomment REDIS_SSL if using SSL | ||
# NAUTOBOT_REDIS_SSL=True | ||
NAUTOBOT_SECRET_KEY=0123456789abcdef0123456789abcdef01234567 | ||
|
||
# Needed for Postgres should match the values for Nautobot above | ||
PGPASSWORD=decinablesprewad | ||
POSTGRES_DB=nautobot | ||
POSTGRES_PASSWORD=decinablesprewad | ||
POSTGRES_USER=nautobot | ||
|
||
# Needed for Redis should match the values for Nautobot above | ||
REDIS_PASSWORD=decinablesprewad |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
version: "3" | ||
services: | ||
nautobot: | ||
image: "ghcr.io/nautobot/nautobot:${NAUTOBOT_VER}-py${PYTHON_VER}" | ||
command: "nautobot-server runserver 0.0.0.0:8000" | ||
ports: | ||
- "8000:8000" | ||
depends_on: | ||
- "postgres" | ||
- "redis" | ||
env_file: | ||
- "./dev.env" | ||
tty: true | ||
worker: | ||
image: "ghcr.io/nautobot/nautobot:${NAUTOBOT_VER}-py${PYTHON_VER}" | ||
entrypoint: "nautobot-server rqworker" | ||
depends_on: | ||
- "nautobot" | ||
env_file: | ||
- "./dev.env" | ||
tty: true | ||
postgres: | ||
image: "postgres:13" | ||
env_file: | ||
- "./dev.env" | ||
redis: | ||
image: "redis:6-alpine" | ||
command: | ||
- "sh" | ||
- "-c" # this is to evaluate the $REDIS_PASSWORD from the env | ||
- "redis-server --appendonly yes --requirepass $$REDIS_PASSWORD" ## $$ because of docker-compose | ||
env_file: "./dev.env" |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
--- | ||
version: "3.4" | ||
x-args: &args | ||
PYTHON_VER: ${PYTHON_VER:-3.8} | ||
# Build block with context and target default | ||
x-build: &build | ||
args: *args | ||
context: . | ||
target: unittests | ||
x-service: &service | ||
environment: | ||
ANSIBLE_INTEGRATION_ARGS: ${ANSIBLE_INTEGRATION_ARGS:-} | ||
ANSIBLE_SANITY_ARGS: ${ANSIBLE_SANITY_ARGS:-} | ||
ANSIBLE_UNIT_ARGS: ${ANSIBLE_UNIT_ARGS:-} | ||
|
||
services: | ||
unit: | ||
<<: *service | ||
build: | ||
<<: *build | ||
|
||
lint: | ||
<<: *service | ||
build: | ||
<<: *build | ||
target: lint | ||
|
||
integration: | ||
<<: *service | ||
build: | ||
<<: *build | ||
target: integration | ||
|
||
# Attach these services to the Nautobot network that gets spun up from invoke start | ||
networks: | ||
default: | ||
external: | ||
name: nautobot_ansible_default |
This file contains 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
Oops, something went wrong.