-
-
Notifications
You must be signed in to change notification settings - Fork 99
Add Docker Container #687
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
RicardoJeronimo
wants to merge
161
commits into
furlongm:main
Choose a base branch
from
RicardoJeronimo:docker
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Add Docker Container #687
Changes from 153 commits
Commits
Show all changes
161 commits
Select commit
Hold shift + click to select a range
9f08e61
Update __init__.py
grumo35 bc964ca
Merge branch 'master' into patch-1
furlongm 57b33e1
Merge branch 'master' into patch-1
furlongm 8072e34
Merge branch 'master' into patch-1
furlongm fecca1c
Merge branch 'main' into patch-1
furlongm ae7d58e
Merge branch 'main' into patch-1
furlongm cd577bf
Update __init__.py
furlongm 80a2d60
Update __init__.py
furlongm 12b2d79
Merge branch 'main' into patch-1
furlongm f07ffcc
Added Dockerfile and docker-compose.yaml
RicardoJeronimo 3b242b9
Added necessary packages to allow realtime processing with Celery
RicardoJeronimo fc9bdc6
Added entrypoint script to start Apache httpd and Celery worker simul…
RicardoJeronimo 2bf1974
Added patchman-email installation
RicardoJeronimo 66e2616
Added patchman-email dependencies
RicardoJeronimo 613950e
Added Redis container for Celery realtime processing
RicardoJeronimo 4ba672f
Adjusted build context
RicardoJeronimo 565c5ee
Changed Dockerfile to install from source instead of repository
RicardoJeronimo 0e56a1f
Fixed django-bootstrap3 installation and some file origins
RicardoJeronimo 529b9b6
Entrypoint only starts Celery worker if an environment varible exists
RicardoJeronimo 5efeccb
Changed entrypoint interpreter to Bash
RicardoJeronimo 4c0e74e
Fixed httpd virtualhost location
RicardoJeronimo 53b237f
Added httpd service reload
RicardoJeronimo 0511255
Reverted change made in 787f257
RicardoJeronimo d04fb15
Created missing directory and optimized instructions
RicardoJeronimo 119468a
Fixed COPY instruction and made Python scripts executable
RicardoJeronimo edba541
Fixed COPY instruction
RicardoJeronimo 40d67b8
Fixed COPY instruction for the full project tree to be copied into /srv
RicardoJeronimo 7dc4b59
Changed ENTRYPOINT to meet JSONArgsRecommended check
RicardoJeronimo df805be
Exposed port 443
RicardoJeronimo 981ec28
Reverted changes made in 3178c02
RicardoJeronimo 4d7b537
Fixed entrypoint
RicardoJeronimo 64caeee
Entrypoint script configures SECRET_KEY if not set
RicardoJeronimo d9d1eb1
Added to do items
RicardoJeronimo 5695f75
Entrypoint now configures Memcached
RicardoJeronimo 930d17d
Entrypoint now configures ADMINS and TIME_ZONE
RicardoJeronimo c70e52e
Entrypoint now starts httpd after celery broker
RicardoJeronimo bbee6ae
Fixed TIMEZONE sed where a slash needs to be escaped
RicardoJeronimo a11f447
Entrypoint now configures USE_ASYNC_PROCESSING
RicardoJeronimo a6e10a9
Minor bugfix
RicardoJeronimo 6472e16
Entrypoint now configures DATABASES
RicardoJeronimo 8cb178b
Minor bugfix
RicardoJeronimo 6d460f6
Minor bugfixes
RicardoJeronimo 5e60b6b
Minor bugfixes
RicardoJeronimo 4266367
Minor indentation fixes
RicardoJeronimo 6ff4a4b
Minor indentation fixes
RicardoJeronimo 929772a
Sed commands that comment lines don't do it again on container restarts
RicardoJeronimo c7f2d09
Entrypoint now checks if a MySQL or PostgreSQL database is already co…
RicardoJeronimo ac22d4d
Minor bugfix
RicardoJeronimo fbd377c
Binary files are now symlinked instead of copied
RicardoJeronimo 64d7491
Added build step via setup.py
RicardoJeronimo d3e3120
Entrypoint syncs database on container first start
RicardoJeronimo 098a683
Added PostgreSQL dependency
RicardoJeronimo e7acfab
Fixed COPY instruction
RicardoJeronimo c5bba1a
Added GitHub Action to build container
RicardoJeronimo 744cace
Latest tag is now used for container versioning during builds
RicardoJeronimo a6fa2e6
Removed build steps for branch integrity
RicardoJeronimo 9acf354
Removed build dependencies for branch integrity
RicardoJeronimo d0abc9d
Fixed minor bug and removed build on pull requests
RicardoJeronimo d164c82
Minor bugfix
RicardoJeronimo 838dcf7
Improved Docker Compose example
RicardoJeronimo 459fa28
Environment variable DB_PORT is now optional
RicardoJeronimo 32454bb
Minor improvements
RicardoJeronimo 06e81ec
Moved local_settings.py path to a variable
RicardoJeronimo ebcc531
Improved Docker Compose example
RicardoJeronimo c23385f
Adjusted entrypoint script to reflect changes made to local_settings.…
RicardoJeronimo 3040e6b
Minor bugfix
RicardoJeronimo b2a6013
Added git dependency to Dockerfile
RicardoJeronimo caf0b44
Minor bugfix
RicardoJeronimo 8b1d997
Added CACHE_TIMEOUT environment variable to entrypoint script
RicardoJeronimo 66cf8dc
Improved Docker Compose example
RicardoJeronimo f06c6ec
Changed Redis environment variable name
RicardoJeronimo ea045e8
Adjusted entrypoint script to reflect changes made to local_settings.…
RicardoJeronimo 8ed49c6
Minor bugfix
RicardoJeronimo d44a2ce
handle duplicate CVSSes better
08faacd
Merge pull request #681 from furlongm/cvss-fix
furlongm 965350f
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo 57284bd
Adjusted entrypoint script to reflect changes made to local_settings.…
RicardoJeronimo bf626c9
reduce max charfield length for mysql
furlongm 382cd29
further reduce charfield size for mysql
furlongm 20a42ed
reduce URLField max_length to 765
furlongm 33d15b2
Merge pull request #673 from furlongm/bug/mysql-max-col-length
furlongm 5685ef3
Merge branch 'main' into patch-1
furlongm bf5478c
Bump django from 4.2.20 to 4.2.21
dependabot[bot] d9c6df7
Merge pull request #682 from furlongm/dependabot/pip/django-4.2.21
furlongm 57e5c0d
Bump django from 4.2.21 to 4.2.22
dependabot[bot] 6a45e90
Bump requests from 2.32.3 to 2.32.4
dependabot[bot] 64b1920
Merge pull request #684 from furlongm/dependabot/pip/django-4.2.22
furlongm 334af8f
Merge pull request #685 from furlongm/dependabot/pip/requests-2.32.4
furlongm eaacc12
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo e6f5b9d
CACHES and CELERY_BROKER_URL configuration can now be set to false wh…
RicardoJeronimo 8b90eca
Fixed if statements when checking if variables are TRUE or FALSE
RicardoJeronimo 5674853
Remove unused dependency 'chardet' from requirements.txt
vtalos cf8c77f
Merge pull request #689 from vtalos/remove-unused-chardet
furlongm 94fcb04
get_or_create_module only returns module
furlongm 1480468
Bump django from 4.2.22 to 4.2.24
dependabot[bot] 36cefb1
Merge pull request #700 from furlongm/dependabot/pip/django-4.2.24
furlongm 6aee812
Merge pull request #693 from furlongm/module-creation
furlongm d7b3406
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo 72d1c2e
Added README
RicardoJeronimo 102ed5a
Changed build action to update Docker Hub description with README.md …
RicardoJeronimo d95e71c
Fixed README.md file location
RicardoJeronimo 68ee20d
Fixed README.md file location
RicardoJeronimo 6944d4d
Fixed README.md file location
RicardoJeronimo 54c8cfa
Fixed README.md file location
RicardoJeronimo f5b51c6
Fixed README.md file location
RicardoJeronimo 463b76a
Fixed checkout job on build action
RicardoJeronimo 6416977
Changed README
RicardoJeronimo 8956889
Changed README
RicardoJeronimo b616296
Package types are in the Package class
willfurnell 3f8756c
Merge pull request #701 from willfurnell/package-fix
furlongm 3676e78
Bump django from 4.2.24 to 4.2.25
dependabot[bot] 1328e52
Merge pull request #704 from furlongm/dependabot/pip/django-4.2.25
furlongm 1c26001
bump redis
furlongm 0f54454
Update license in common.py
furlongm ce9f4f0
fix licenses
furlongm c651c3f
use GPL-3.0-only for debian copyright
furlongm 807e5de
Merge pull request #377 from grumo35/patch-1
furlongm fb9b56c
fix tag handling
furlongm eee5675
fix some flake8-bugbear bugs
furlongm ad28bfe
Merge pull request #711 from furlongm/bugbear
furlongm cc14aea
Merge pull request #710 from furlongm/tags
furlongm 2bcd4da
fix package filter list for errata
furlongm 856f41f
add support for zstd compression in deb and rpm repos
furlongm 7045e1b
Merge pull request #708 from furlongm/zstd-support
furlongm 0c53c82
Merge pull request #713 from furlongm/package-errata-fix
furlongm 8d9da89
simplify logging
furlongm dc68147
Merge pull request #714 from furlongm/logging
furlongm 00fbd6e
use redis for caching and use locks for tasks
furlongm fd6f9aa
add errata source options to config file
furlongm 60a80cd
Merge pull request #716 from furlongm/errata-source-options
furlongm 8fa3eb2
Merge pull request #715 from furlongm/redis-caching
furlongm f06729e
remove daily cronjob in favour of patchman-celery
furlongm 15e5ba1
Merge pull request #717 from furlongm/cronjob
furlongm a59a23b
add isort check
furlongm c13a564
Merge pull request #718 from furlongm/isort
furlongm 5fa1ef0
Bump django from 4.2.25 to 4.2.26
dependabot[bot] c8cf5e0
Merge pull request #719 from furlongm/dependabot/pip/django-4.2.26
furlongm aac552d
Bump django from 4.2.26 to 4.2.27
dependabot[bot] ffa815b
Merge pull request #720 from furlongm/dependabot/pip/django-4.2.27
furlongm da1f44e
Modified tag handling to preserve case
RicardoJeronimo d8f3ce4
fix same module in different repos
furlongm 2e215a1
Merge pull request #723 from RicardoJeronimo/tags
furlongm 95a5213
Merge pull request #725 from furlongm/modules-fix
furlongm 65e8851
add priority queues for tasks (#724)
furlongm 0338987
update celery services handling (#726)
furlongm ff7f293
remove non-present middleware (#729)
furlongm 5e2bb76
fix wsgi so rpm module is only loaded once (#728)
furlongm 33519f2
give systemd units usable defaults (#727)
furlongm 6e9b21f
use consistent users/groups on rhel/debian (#730)
furlongm d450af7
fixes for dumping/loading fixtures from sqlite (#731)
furlongm f798882
update logging to log to console and celery systemd units (#732)
furlongm dc12ee1
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo aa43a63
Changed entrypoint script to adapt changes made in 8fa3eb2
RicardoJeronimo a718355
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo f527145
Branch cleanup
RicardoJeronimo 93830cd
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo 51cf2cd
Added more configuration options via environment variables
RicardoJeronimo 3e5f3f8
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo 2e34e40
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo 51f0696
Merge remote-tracking branch 'upstream/main' into docker
RicardoJeronimo 85d5419
Migrated base image from debian:bookworm-slim to debian:trixie-slim
RicardoJeronimo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| name: Docker Image CI | ||
|
|
||
| on: | ||
| push: | ||
| branches: [ "main" ] | ||
|
|
||
| jobs: | ||
| docker: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Login to Docker Hub | ||
| uses: docker/login-action@v3 | ||
| with: | ||
| username: ${{ vars.DOCKERHUB_USERNAME }} | ||
| password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
|
||
| - name: Set up QEMU | ||
| uses: docker/setup-qemu-action@v3 | ||
|
|
||
| - name: Set up Docker Buildx | ||
| uses: docker/setup-buildx-action@v3 | ||
|
|
||
| - name: Build and push | ||
| uses: docker/build-push-action@v6 | ||
| with: | ||
| file: docker/Dockerfile | ||
| platforms: linux/amd64,linux/arm64 | ||
| push: true | ||
| tags: ${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}}:latest,${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}}:${{github.ref_name}} | ||
| cache-from: type=gha | ||
| cache-to: type=gha,mode=max | ||
|
|
||
| - name: Checkout for next job | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Docker Hub Description | ||
| uses: peter-evans/dockerhub-description@v4 | ||
| with: | ||
| username: ${{ vars.DOCKERHUB_USERNAME }} | ||
| password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
| repository: ${{vars.DOCKERHUB_USERNAME}}/${{vars.DOCKERHUB_CONTAINER}} | ||
| readme-filepath: docker/README.md | ||
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
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
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
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
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
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
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
This file was deleted.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,5 @@ | ||
| #!/usr/bin/dh-exec | ||
| etc/patchman/apache.conf.example => etc/apache2/conf-available/patchman.conf | ||
| etc/patchman/local_settings.py etc/patchman | ||
| etc/systemd/system/patchman-celery.service => lib/systemd/system/patchman-celery.service | ||
| etc/systemd/system/patchman-celery-worker.service => lib/systemd/system/patchman-celery-worker@.service | ||
| etc/systemd/system/patchman-celery-beat.service => lib/systemd/system/patchman-celery-beat.service |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| FROM debian:bookworm-slim | ||
|
|
||
| RUN apt -y update && apt -y upgrade | ||
| RUN apt install -y apache2 git libapache2-mod-wsgi-py3 mariadb-client python-celery-common python3-celery python3-debian python3-defusedxml python3-lxml python3-mysqldb python3-pip python3-progressbar python3-psycopg2 python3-redis python3-rpm | ||
|
|
||
| WORKDIR /srv/patchman | ||
|
|
||
| COPY . /srv/patchman/ | ||
| COPY ./etc/patchman/apache.conf.example /etc/apache2/sites-available/patchman.conf | ||
|
|
||
| RUN /srv/patchman/setup.py install | ||
|
|
||
| RUN a2enmod wsgi | ||
| RUN a2ensite patchman | ||
|
|
||
| RUN mkdir -p /var/lib/patchman/db | ||
| RUN chown :www-data /var/lib/patchman/db && chmod 2770 /var/lib/patchman/db | ||
|
|
||
| EXPOSE 80 | ||
|
|
||
| COPY ./docker/docker-entrypoint.sh docker-entrypoint.sh | ||
| ENTRYPOINT ["./docker-entrypoint.sh"] |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| Source: https://github.com/ricardojeronimo/patchman | ||
|
|
||
| Upstream: https://github.com/furlongm/patchman | ||
|
|
||
|
|
||
| ## Getting Started | ||
|
|
||
| To get started, pull the latest image from Docker Hub and run it. | ||
| ``` | ||
| docker pull ricardojeronim0/patchman:latest | ||
| docker run -d -p 80:80 --name patchman ricardojeronim0/patchman | ||
| ``` | ||
|
|
||
| This container will run migrations on first startup, but you still need to create a superuser before being able to log in on the web interface. | ||
|
|
||
| ``` | ||
| docker exec -it patchman patchman-manage createsuperuser | ||
| ``` | ||
|
|
||
| ## Configuration | ||
|
|
||
| This container is configured using environment variables. The following variables are available to customize the container's behavior. | ||
|
|
||
| | Variable | Default Value | Description | | ||
| | :--- | :--- | :--- | | ||
| | `ADMIN_NAME` | `Your Name` | Your name | | ||
| | `ADMIN_EMAIL` | `you@example.com` | Your e-mail address | | ||
| | `TIMEZONE` | `America/New_York` | Your timezone | | ||
| | `DB_ENGINE` | `SQLite` | Database engine to be used. Choose between `MySQL` or `PostgreSQL`, leave empty to use default `SQLite` | | ||
| | `DB_HOST` | | Database hostname, IP or container name | | ||
| | `DB_PORT` |` | Database port | | ||
| | `DB_DATABASE` | | Database name | | ||
| | `DB_USER` | | Database user | | ||
| | `DB_PASSWORD` | | Database password | | ||
| | `REDIS_HOST` | `127.0.0.1` | Redis hostname, IP or container name | | ||
| | `REDIS_PORT` | `6379` | Redis port | | ||
| | `USE_CELERY` | `False` | Change to `True` for realtime processing of reports from clients | | ||
| | `USE_CACHE` | `False` | Change to `True` cache contents and reduce the load on the server | | ||
| | `CACHE_TIMEOUT` | `30` | Cache time in seconds. Be aware that the UI results may be out of date for this amount of time | | ||
|
|
||
|
|
||
| ## Docker Compose Example | ||
|
|
||
| For more complex deployments, `docker-compose` is the recommended approach. Below is an example `docker-compose.yaml` file that demonstrates how to configure the container and connect it to a separate MySQL service, and Redis for async processing and/or caching. | ||
|
|
||
| ```yaml | ||
| --- | ||
| services: | ||
| patchman: | ||
| container_name: patchman | ||
| image: ricardojeronim0/patchman:latest | ||
| restart: unless-stopped | ||
| environment: | ||
| ADMIN_NAME: admin_name | ||
| ADMIN_EMAIL: admin_mail@domain.tld | ||
| TIMEZONE: America/New_York | ||
| DB_ENGINE: MySQL | ||
| DB_HOST: patchman-db | ||
| DB_PORT: 3306 | ||
| DB_DATABASE: patchman | ||
| DB_USER: user | ||
| DB_PASSWORD: changeme | ||
| REDIS_HOST: redis | ||
| REDIS_PORT: 6379 | ||
| USE_CELERY: True | ||
| USE_CACHE: True | ||
| CACHE_TIMEOUT: 20 | ||
| ports: | ||
| - 80:80/tcp | ||
| depends_on: | ||
| - patchman-db | ||
| - redis | ||
|
|
||
| patchman-db: | ||
| container_name: patchman-db | ||
| image: mysql:latest | ||
| restart: unless-stopped | ||
| command: ["mysqld", "--character-set-server=utf8", "--collation-server=utf8_general_ci"] | ||
| environment: | ||
| MYSQL_ROOT_PASSWORD: changeme | ||
| MYSQL_DATABASE: patchman | ||
| MYSQL_USER: user | ||
| MYSQL_PASSWORD: changeme | ||
|
|
||
| redis: | ||
| container_name: redis | ||
| image: redis:latest | ||
| restart: unless-stopped | ||
| ``` |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| --- | ||
| services: | ||
| patchman: | ||
| container_name: patchman | ||
| image: furlongm/patchman:latest | ||
| restart: unless-stopped | ||
| environment: | ||
| ADMIN_NAME: admin_name | ||
| ADMIN_EMAIL: admin_mail@domain.tld | ||
| TIMEZONE: America/New_York | ||
| DB_ENGINE: MySQL | ||
| DB_HOST: patchman-db | ||
| DB_PORT: 3306 | ||
| DB_DATABASE: patchman | ||
| DB_USER: user | ||
| DB_PASSWORD: changeme | ||
| REDIS_HOST: redis | ||
| REDIS_PORT: 6379 | ||
| USE_CELERY: True | ||
| USE_CACHE: True | ||
| CACHE_TIMEOUT: 20 | ||
| ports: | ||
| - 80:80/tcp | ||
| depends_on: | ||
| - patchman-db | ||
| - redis | ||
|
|
||
| patchman-db: | ||
| container_name: patchman-db | ||
| image: mysql:latest | ||
| restart: unless-stopped | ||
| command: ["mysqld", "--character-set-server=utf8", "--collation-server=utf8_general_ci"] | ||
| environment: | ||
| MYSQL_ROOT_PASSWORD: changeme | ||
| MYSQL_DATABASE: patchman | ||
| MYSQL_USER: user | ||
| MYSQL_PASSWORD: changeme | ||
|
|
||
| redis: | ||
| container_name: redis | ||
| image: redis:latest | ||
| restart: unless-stopped |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Check warning
Code scanning / CodeQL
Workflow does not contain permissions Medium