diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index f386e8c1f..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -name: Bug report -about: Create a report about a malfunction of the Docker setup -title: '' -labels: '' -assignees: '' - ---- - - - -## Current Behavior - - - - - -## Expected Behavior - - - - - -## Debug Information - - - -The output of `docker-compose version`: `XXXXX` -The output of `docker version`: `XXXXX` -The output of `git rev-parse HEAD`: `XXXXX` -The command you used to start the project: `XXXXX` - - -The output of `docker inspect netboxcommunity/netbox:latest --format "{{json .Config.Labels}}"`: - -```json -{ - "JSON JSON JSON": - "--> Please paste formatted json. (Use e.g. `jq` or https://jsonformatter.curiousconcept.com/)" -} -``` - -The output of `docker-compose logs netbox`: - - -```text -LOG LOG LOG -``` - -The output of `cat docker-compose.override.yml`: - - -```text -LOG LOG LOG -``` diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000..b6f0479ed --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,148 @@ +name: Bug report +description: Create a report about a malfunction of the Docker setup +body: +- type: markdown + attributes: + value: | + Please only raise an issue if you're certain that you've found a bug. + Else, see these other means to get help: + + - See our troubleshooting section: + https://github.com/netbox-community/netbox-docker/wiki/Troubleshooting + - Have a look at the rest of the wiki: + https://github.com/netbox-community/netbox-docker/wiki + - Check the release notes: + https://github.com/netbox-community/netbox-docker/releases + - Look through the issues already resolved: + https://github.com/netbox-community/netbox-docker/issues?q=is%3Aclosed + + If you did not find what you're looking for, + try the help of our community: + + - Post to Github Discussions: + https://github.com/netbox-community/netbox-docker/discussions + - Join the `#netbox-docker` channel on our Slack: + https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ + - Ask on the NetBox mailing list: + https://groups.google.com/d/forum/netbox-discuss + + Please don't open an issue to open a PR. + Just submit the PR, that's good enough. +- type: textarea + id: current-behavior + attributes: + label: Current Behavior + description: Please describe what you did and how you think it misbehaved + placeholder: I tried to … by doing …, but it … + validations: + required: true +- type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: Please describe what you expected instead + placeholder: I expected that … when I do … + validations: + required: true +- type: input + id: docker-compose-version + attributes: + label: Docker Compose Version + description: Please paste the output of `docker-compose version` + placeholder: Docker Compose version vX.Y.Z + validations: + required: true +- type: textarea + id: docker-version + attributes: + label: Docker Version + description: Please paste the output of `docker version` + render: text + placeholder: | + Client: + Cloud integration: 1.0.17 + Version: 20.10.8 + API version: 1.41 + Go version: go1.16.6 + Git commit: 3967b7d + Built: Fri Jul 30 19:55:20 2021 + OS/Arch: darwin/amd64 + Context: default + Experimental: true + + Server: Docker Engine - Community + Engine: + Version: 20.10.8 + API version: 1.41 (minimum version 1.12) + Go version: go1.16.6 + Git commit: 75249d8 + Built: Fri Jul 30 19:52:10 2021 + OS/Arch: linux/amd64 + Experimental: false + containerd: + Version: 1.4.9 + GitCommit: e25210fe30a0a703442421b0f60afac609f950a3 + runc: + Version: 1.0.1 + GitCommit: v1.0.1-0-g4144b63 + docker-init: + Version: 0.19.0 + GitCommit: de40ad0 + validations: + required: true +- type: input + id: git-rev + attributes: + label: The git Revision + description: Please paste the output of `git rev-parse HEAD` + validations: + required: true +- type: textarea + id: git-status + attributes: + label: The git Status + description: Please paste the output of `git status` + render: text + placeholder: | + On branch main + nothing to commit, working tree clean + validations: + required: true +- type: input + id: run-command + attributes: + label: Startup Command + description: Please specify the command you used to start the project + placeholder: docker compose up + validations: + required: true +- type: textarea + id: netbox-logs + attributes: + label: NetBox Logs + description: Please paste the output of `docker-compose logs netbox` (or `docker compose logs netbox`) + render: text + placeholder: | + netbox_1 | ⚙️ Applying database migrations + netbox_1 | 🧬 loaded config '/etc/netbox/config/configuration.py' + netbox_1 | 🧬 loaded config '/etc/netbox/config/a.py' + netbox_1 | 🧬 loaded config '/etc/netbox/config/extra.py' + netbox_1 | 🧬 loaded config '/etc/netbox/config/logging.py' + netbox_1 | 🧬 loaded config '/etc/netbox/config/plugins.py' + ... + validations: + required: true +- type: textarea + id: docker-compose-override-yml + attributes: + label: Content of docker-compose.override.yml + description: Please paste the output of `cat docker-compose.override.yml` + render: yaml + placeholder: | + version: '3.4' + services: + netbox: + ports: + - '8080:8080' + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 38bba4217..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -name: Feature or Change Request -about: Request a new feature or a change of the current behavior -title: '' -labels: '' -assignees: '' - ---- - - - -## Desired Behavior - - - - - -## Contrast to Current Behavior - - - - - -## Changes Required - - - - - -## Discussion: Benefits and Drawbacks - - - - diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..e8f2a55ba --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,68 @@ +name: Feature or Change Request +description: Request a new feature or a change of the current behavior +body: +- type: markdown + attributes: + value: | + This issue type is to propose new features for the Docker setup. + To just spin an idea, see the Github Discussions section, please. + + Before asking for help, see these links first: + + - See our troubleshooting section: + https://github.com/netbox-community/netbox-docker/wiki/Troubleshooting + - Have a look at the rest of the wiki: + https://github.com/netbox-community/netbox-docker/wiki + - Check the release notes: + https://github.com/netbox-community/netbox-docker/releases + - Look through the issues already resolved: + https://github.com/netbox-community/netbox-docker/issues?q=is%3Aclosed + + If you did not find what you're looking for, + try the help of our community: + + - Post to Github Discussions: + https://github.com/netbox-community/netbox-docker/discussions + - Join the `#netbox-docker` channel on our Slack: + https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ + - Ask on the NetBox mailing list: + https://groups.google.com/d/forum/netbox-discuss + + Please don't open an issue to open a PR. + Just submit the PR, that's good enough. +- type: textarea + id: desired-behavior + attributes: + label: Desired Behavior + description: Please describe the desired behavior + placeholder: To me, it would be useful, if … because … + validations: + required: true +- type: textarea + id: contrast-to-current + attributes: + label: Contrast to Current Behavior + description: Please describe how the desired behavior is different from the current behavior + placeholder: The current behavior is …, but this lacks … + validations: + required: true +- type: textarea + id: required-changes + attributes: + label: Required Changes + description: If you can, please elaborate what changes will be required to implement the desired behavior + placeholder: I suggest to change the file … + validations: + required: false +- type: textarea + id: discussion + attributes: + label: 'Discussion: Benefits and Drawbacks' + description: | + Please make your case here: + - Why do you think this project and the community will benefit from your suggestion? + - What are the drawbacks of this change? Is it backwards-compatible? + - Anything else that you think is relevant to the discussion of this feature/change request. + placeholder: I suggest to change the file … + validations: + required: false diff --git a/Dockerfile b/Dockerfile index 27597e557..a8fb4f01a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,6 @@ RUN apk add --no-cache \ make \ musl-dev \ openldap-dev \ - openssl-dev \ postgresql-dev \ py3-pip \ python3-dev \ @@ -95,6 +94,7 @@ WORKDIR /opt/netbox/netbox # Must set permissions for '/opt/netbox/netbox/media' directory # to g+w so that pictures can be uploaded to netbox. RUN mkdir -p static /opt/unit/state/ /opt/unit/tmp/ \ + && chown -R unit:root media /opt/unit/ \ && chmod -R g+w media /opt/unit/ \ && cd /opt/netbox/ && /opt/netbox/venv/bin/python -m mkdocs build \ --config-file /opt/netbox/mkdocs.yml --site-dir /opt/netbox/netbox/project-static/docs/ \ diff --git a/VERSION b/VERSION index 88c5fb891..347f5833e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.4.0 +1.4.1 diff --git a/build-functions/gh-functions.sh b/build-functions/gh-functions.sh new file mode 100644 index 000000000..4928d0d22 --- /dev/null +++ b/build-functions/gh-functions.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +### +# A regular echo, that only prints if ${GH_ACTION} is defined. +### +gh_echo() { + if [ -n "${GH_ACTION}" ]; then + echo "${@}" + fi +} + +### +# Prints the output to the file defined in ${GITHUB_ENV}. +# Only executes if ${GH_ACTION} is defined. +# Example Usage: gh_env "FOO_VAR=bar_value" +### +gh_env() { + if [ -n "${GH_ACTION}" ]; then + echo "${@}" >>"${GITHUB_ENV}" + fi +} diff --git a/build.sh b/build.sh index f33a2d1ea..1cf6cd177 100755 --- a/build.sh +++ b/build.sh @@ -95,6 +95,8 @@ if [ "${1}x" == "x" ] || [ "${1}" == "--help" ] || [ "${1}" == "-h" ]; then fi fi +source ./build-functions/gh-functions.sh + ### # Enabling dry-run mode ### @@ -105,6 +107,8 @@ else DRY="echo" fi +gh_echo "::group::⤵️ Fetching the NetBox source code" + ### # Variables for fetching the NetBox source ### @@ -121,9 +125,7 @@ if [ "${2}" != "--push-only" ] && [ -z "${SKIP_GIT}" ]; then REMOTE_EXISTS=$(git ls-remote --heads --tags "${URL}" "${NETBOX_BRANCH}" | wc -l) if [ "${REMOTE_EXISTS}" == "0" ]; then echo "❌ Remote branch '${NETBOX_BRANCH}' not found in '${URL}'; Nothing to do" - if [ -n "${GH_ACTION}" ]; then - echo "::set-output name=skipped::true" - fi + gh_echo "::set-output name=skipped::true" exit 0 fi echo "🌐 Checking out '${NETBOX_BRANCH}' of NetBox from the url '${URL}' into '${NETBOX_PATH}'" @@ -146,6 +148,9 @@ if [ "${2}" != "--push-only" ] && [ -z "${SKIP_GIT}" ]; then echo "✅ Checked out NetBox" fi +gh_echo "::endgroup::" +gh_echo "::group::🧮 Calculating Values" + ### # Determining the value for DOCKERFILE # and checking whether it exists @@ -221,11 +226,14 @@ DEFAULT_DOCKER_TARGETS=("main" "ldap") DOCKER_TARGETS=("${DOCKER_TARGET:-"${DEFAULT_DOCKER_TARGETS[@]}"}") echo "🏭 Building the following targets:" "${DOCKER_TARGETS[@]}" +gh_echo "::endgroup::" + ### # Build each target ### export DOCKER_BUILDKIT=${DOCKER_BUILDKIT-1} for DOCKER_TARGET in "${DOCKER_TARGETS[@]}"; do + gh_echo "::group::🏗 Building the target '${DOCKER_TARGET}'" echo "🏗 Building the target '${DOCKER_TARGET}'" ### @@ -235,10 +243,10 @@ for DOCKER_TARGET in "${DOCKER_TARGETS[@]}"; do if [ "${DOCKER_TARGET}" != "main" ]; then TARGET_DOCKER_TAG="${TARGET_DOCKER_TAG}-${DOCKER_TARGET}" fi - if [ -n "${GH_ACTION}" ]; then - echo "FINAL_DOCKER_TAG=${TARGET_DOCKER_TAG}" >>"$GITHUB_ENV" - echo "::set-output name=skipped::false" - fi + TARGET_DOCKER_TAG_PROJECT="${TARGET_DOCKER_TAG}-${PROJECT_VERSION}" + + gh_env "FINAL_DOCKER_TAG=${TARGET_DOCKER_TAG_PROJECT}" + gh_echo "::set-output name=skipped::false" ### # composing the additional DOCKER_SHORT_TAG, @@ -257,6 +265,9 @@ for DOCKER_TARGET in "${DOCKER_TARGETS[@]}"; do TARGET_DOCKER_SHORT_TAG="${TARGET_DOCKER_SHORT_TAG}-${DOCKER_TARGET}" TARGET_DOCKER_LATEST_TAG="${TARGET_DOCKER_LATEST_TAG}-${DOCKER_TARGET}" fi + + TARGET_DOCKER_SHORT_TAG_PROJECT="${TARGET_DOCKER_SHORT_TAG}-${PROJECT_VERSION}" + TARGET_DOCKER_LATEST_TAG_PROJECT="${TARGET_DOCKER_LATEST_TAG}-${PROJECT_VERSION}" fi ### @@ -313,15 +324,18 @@ for DOCKER_TARGET in "${DOCKER_TARGETS[@]}"; do --target "${DOCKER_TARGET}" -f "${DOCKERFILE}" -t "${TARGET_DOCKER_TAG}" + -t "${TARGET_DOCKER_TAG_PROJECT}" ) if [ -n "${TARGET_DOCKER_SHORT_TAG}" ]; then DOCKER_BUILD_ARGS+=(-t "${TARGET_DOCKER_SHORT_TAG}") + DOCKER_BUILD_ARGS+=(-t "${TARGET_DOCKER_SHORT_TAG_PROJECT}") DOCKER_BUILD_ARGS+=(-t "${TARGET_DOCKER_LATEST_TAG}") + DOCKER_BUILD_ARGS+=(-t "${TARGET_DOCKER_LATEST_TAG_PROJECT}") fi # --label DOCKER_BUILD_ARGS+=( - --label "ORIGINAL_TAG=${TARGET_DOCKER_TAG}" + --label "ORIGINAL_TAG=${TARGET_DOCKER_TAG_PROJECT}" --label "org.label-schema.build-date=${BUILD_DATE}" --label "org.opencontainers.image.created=${BUILD_DATE}" @@ -366,12 +380,12 @@ for DOCKER_TARGET in "${DOCKER_TARGETS[@]}"; do # Building the docker image ### if [ "${SHOULD_BUILD}" == "true" ]; then - echo "🐳 Building the Docker image '${TARGET_DOCKER_TAG}'." + echo "🐳 Building the Docker image '${TARGET_DOCKER_TAG_PROJECT}'." echo " Build reason set to: ${BUILD_REASON}" $DRY docker build "${DOCKER_BUILD_ARGS[@]}" . - echo "✅ Finished building the Docker images '${TARGET_DOCKER_TAG}'" - echo "🔎 Inspecting labels on '${TARGET_DOCKER_TAG}'" - $DRY docker inspect "${TARGET_DOCKER_TAG}" --format "{{json .Config.Labels}}" + echo "✅ Finished building the Docker images '${TARGET_DOCKER_TAG_PROJECT}'" + echo "🔎 Inspecting labels on '${TARGET_DOCKER_TAG_PROJECT}'" + $DRY docker inspect "${TARGET_DOCKER_TAG_PROJECT}" --format "{{json .Config.Labels}}" else echo "Build skipped because sources didn't change" echo "::set-output name=skipped::true" @@ -384,10 +398,15 @@ for DOCKER_TARGET in "${DOCKER_TARGETS[@]}"; do if [ "${2}" == "--push" ] || [ "${2}" == "--push-only" ]; then source ./build-functions/docker-functions.sh push_image_to_registry "${TARGET_DOCKER_TAG}" + push_image_to_registry "${TARGET_DOCKER_TAG_PROJECT}" if [ -n "${TARGET_DOCKER_SHORT_TAG}" ]; then push_image_to_registry "${TARGET_DOCKER_SHORT_TAG}" + push_image_to_registry "${TARGET_DOCKER_SHORT_TAG_PROJECT}" push_image_to_registry "${TARGET_DOCKER_LATEST_TAG}" + push_image_to_registry "${TARGET_DOCKER_LATEST_TAG_PROJECT}" fi fi + + gh_echo "::endgroup::" done diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 1ca0903f8..c6c014ced 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -9,7 +9,7 @@ services: env_file: env/netbox.env environment: SKIP_STARTUP_SCRIPTS: ${SKIP_STARTUP_SCRIPTS-false} - user: '101' + user: 'unit:root' volumes: - ./startup_scripts:/opt/netbox/startup_scripts:z,ro - ./${INITIALIZERS_DIR-initializers}:/opt/netbox/initializers:z,ro diff --git a/docker-compose.yml b/docker-compose.yml index 2dbd7df6b..959a9fb5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,14 @@ version: '3.4' services: netbox: &netbox - image: netboxcommunity/netbox:${VERSION-v3.0} + image: netboxcommunity/netbox:${VERSION-v3.0-1.4.1} depends_on: - postgres - redis - redis-cache - netbox-worker env_file: env/netbox.env - user: '101' + user: 'unit:root' volumes: - ./startup_scripts:/opt/netbox/startup_scripts:z,ro - ./initializers:/opt/netbox/initializers:z,ro diff --git a/docker/launch-netbox.sh b/docker/launch-netbox.sh index 117772f77..09efdb5e8 100755 --- a/docker/launch-netbox.sh +++ b/docker/launch-netbox.sh @@ -52,5 +52,5 @@ exec unitd \ --log /dev/stdout \ --state /opt/unit/state/ \ --tmp /opt/unit/tmp/ \ - --user 101 \ - --group 0 + --user unit \ + --group root diff --git a/requirements-container.txt b/requirements-container.txt index 09823884d..a243e12a0 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ napalm==3.3.1 ruamel.yaml==0.17.16 django-auth-ldap==3.0.0 -google-crc32c==1.1.5 -django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.11.1 +google-crc32c==1.3.0 +django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.12.1