-
Notifications
You must be signed in to change notification settings - Fork 6
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
797445c
commit ecb3bf6
Showing
7 changed files
with
1,173 additions
and
1,467 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 |
---|---|---|
@@ -1,20 +1,73 @@ | ||
# ------------------------------------------------------------------------------------- | ||
# Nautobot Plugin Development Dockerfile Template | ||
# Version: 1.0.0 | ||
# | ||
# Plugins that need to add additional steps or packages can do in the section below. | ||
# ------------------------------------------------------------------------------------- | ||
# !!! USE CAUTION WHEN MODIFYING LINES BELOW | ||
|
||
ARG PYTHON_VER | ||
ARG NAUTOBOT_VER | ||
# Accepts a desired Nautobot version as build argument, default to 1.5.0 | ||
ARG NAUTOBOT_VER="1.5.0" | ||
|
||
# Accepts a desired Python version as build argument, default to 3.7 | ||
ARG PYTHON_VER="3.7" | ||
|
||
# Retrieve published development image of Nautobot base which should include most CI dependencies | ||
FROM ghcr.io/nautobot/nautobot-dev:${NAUTOBOT_VER}-py${PYTHON_VER} | ||
|
||
WORKDIR /source | ||
# Runtime argument and environment setup | ||
ARG NAUTOBOT_ROOT=/opt/nautobot | ||
|
||
ENV prometheus_multiproc_dir=/prom_cache | ||
ENV NAUTOBOT_ROOT ${NAUTOBOT_ROOT} | ||
|
||
# Don't need virtual environments in container, parallelized installer has inconsistent behavior | ||
RUN poetry config virtualenvs.create false \ | ||
&& poetry config installer.parallel false | ||
|
||
# !!! USE CAUTION WHEN MODIFYING LINES ABOVE | ||
# ------------------------------------------------------------------------------------- | ||
# Plugin-specific system build/test dependencies. | ||
# | ||
# Example: LDAP requires `libldap2-dev` to be apt-installed before the Python package. | ||
# ------------------------------------------------------------------------------------- | ||
# --> Start safe to modify section | ||
|
||
RUN pip install --upgrade pip | ||
# Uncomment the line below if you are apt-installing any package. | ||
# RUN apt update | ||
# RUN apt install libldap2-dev | ||
|
||
# Copy in only pyproject.toml/poetry.lock to help with caching this layer if no updates to dependencies | ||
COPY poetry.lock pyproject.toml /source/ | ||
# --no-root declares not to install the project package since we're wanting to take advantage of caching dependency installation | ||
# and the project is copied in and installed after this step | ||
RUN poetry install --no-interaction --no-ansi --no-root | ||
# --> Stop safe to modify section | ||
# ------------------------------------------------------------------------------------- | ||
# Install Nautobot Plugin | ||
# ------------------------------------------------------------------------------------- | ||
# !!! USE CAUTION WHEN MODIFYING LINES BELOW | ||
|
||
# Copy in the rest of the source code and install local Nautobot plugin | ||
# Copy in the source code | ||
WORKDIR /source | ||
COPY . /source | ||
RUN poetry install --no-interaction --no-ansi | ||
|
||
COPY development/nautobot_config.py /opt/nautobot/nautobot_config.py | ||
# Get container's installed Nautobot version as a forced constraint | ||
# NAUTOBOT_VER may be a branch name and not a published release therefor we need to get the installed version | ||
# so pip can use it to recognize local constraints. | ||
RUN pip show nautobot | grep "^Version: " | sed -e 's/Version: /nautobot==/' > constraints.txt | ||
|
||
# Use Poetry to grab dev dependencies from the lock file | ||
# Can be improved in Poetry 1.2 which allows `poetry install --only dev` | ||
# | ||
# We can't use the entire freeze as it takes forever to resolve with rigidly fixed non-direct dependencies, | ||
# especially those that are only direct to Nautobot but the container included versions slightly mismatch | ||
RUN poetry export -f requirements.txt --without-hashes --output poetry_freeze_base.txt | ||
RUN poetry export -f requirements.txt --dev --without-hashes --output poetry_freeze_all.txt | ||
RUN sort poetry_freeze_base.txt poetry_freeze_all.txt | uniq -u > poetry_freeze_dev.txt | ||
|
||
# Install all local project as editable, constrained on Nautobot version, to get any additional | ||
# direct dependencies of the plugin | ||
RUN pip install -c constraints.txt -e . | ||
|
||
# Install any dev dependencies frozen from Poetry | ||
# Can be improved in Poetry 1.2 which allows `poetry install --only dev` | ||
RUN pip install -c constraints.txt -r poetry_freeze_dev.txt | ||
|
||
COPY development/nautobot_config.py ${NAUTOBOT_ROOT}/nautobot_config.py | ||
# !!! USE CAUTION WHEN MODIFYING LINES ABOVE |
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
Oops, something went wrong.