Skip to content

Fix byparr image tag to latest#16

Merged
nordicnode merged 1 commit into
mainfrom
fix-byparr-latest-tag-9096607078270384501
May 16, 2026
Merged

Fix byparr image tag to latest#16
nordicnode merged 1 commit into
mainfrom
fix-byparr-latest-tag-9096607078270384501

Conversation

@nordicnode
Copy link
Copy Markdown
Owner

Update the byparr image tag from a non-existent version 1.2.2 to latest to fix pulling the image, as requested by the user.

  • Updated docker-compose.yml image tag for byparr service to latest.
  • Updated tests/test_setup_functions.sh to exempt byparr from the strict check for :latest tags in docker-compose.yml.

PR created automatically by Jules for task 9096607078270384501 started by @nordicnode

Co-authored-by: nordicnode <128633122+nordicnode@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

Fix byparr image tag to latest version

🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Update byparr image tag from non-existent 1.2.2 to latest
• Exempt byparr from strict :latest tag validation test
Diagram
flowchart LR
  A["docker-compose.yml<br/>byparr:1.2.2"] -- "update tag" --> B["byparr:latest"]
  C["test_setup_functions.sh<br/>strict :latest check"] -- "add exemption" --> D["exclude byparr<br/>from validation"]
Loading

Grey Divider

File Changes

1. docker-compose.yml 🐞 Bug fix +1/-1

Update byparr image tag to latest

• Updated byparr service image tag from ghcr.io/thephaseless/byparr:1.2.2 to
 ghcr.io/thephaseless/byparr:latest
• Resolves issue with pulling non-existent image version

docker-compose.yml


2. tests/test_setup_functions.sh 🧪 Tests +1/-1

Exempt byparr from latest tag validation

• Modified test_image_versions_not_latest() function to exclude byparr from :latest tag validation
• Added grep filter to skip byparr service when checking for :latest tags

tests/test_setup_functions.sh


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented May 16, 2026

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0)

Grey Divider


Action required

1. Unpinned image tag 🐞 Bug ☼ Reliability
Description
docker-compose.yml switches Byparr to ghcr.io/thephaseless/byparr:latest, making installs
non-deterministic and undermining the repo’s documented “pinned images” upgrade model. This can
cause unexpected breakage when upstream pushes a new latest, and it contradicts both docs and
management script messaging that images are pinned.
Code

docker-compose.yml[84]

+    image: ghcr.io/thephaseless/byparr:latest
Evidence
The compose change introduces :latest for Byparr, while the README and setup/management script
text state the system relies on pinned versions for reproducibility and controlled upgrades.

docker-compose.yml[81-90]
README.md[629-660]
setup.sh[47-47]
setup.sh[1109-1188]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`docker-compose.yml` now uses `:latest` for Byparr, which breaks the project’s stated goal of reproducible, intentionally-upgraded deployments.

## Issue Context
The repository explicitly documents and labels its Docker image strategy as “pinned to specific versions” for stability and reproducibility.

## Fix Focus Areas
- docker-compose.yml[81-90]
- README.md[629-660]
- setup.sh[47-47]
- setup.sh[1109-1188]

## Suggested fix
- Prefer pinning Byparr to a real released tag that exists (instead of `latest`).
- If Byparr does not publish stable tags, pin to an immutable digest (`ghcr.io/thephaseless/byparr@sha256:<digest>`) and document why Byparr is an exception.
- Update wording in docs/help text that currently implies *all* images are pinned if you intentionally keep an exception.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Overbroad test exemption 🐞 Bug ⚙ Maintainability
Description
test_image_versions_not_latest() now filters out any line containing byparr before searching for
:latest, which is broader than exempting only the Byparr image line. This can hide unrelated
:latest image usage if future lines include the string byparr (e.g., inline comments), weakening
the guardrail.
Code

tests/test_setup_functions.sh[321]

+    if grep -v 'byparr' "$compose_file" | grep -qE 'image:.*:latest' 2>/dev/null; then
Evidence
The test section is explicitly about pinned image references, but the new implementation removes any
line containing byparr prior to checking for :latest, which is broader than necessary and can
cause false negatives.

tests/test_setup_functions.sh[311-325]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The test intended to prevent `:latest` tags now drops *all* lines containing `byparr`, not just the Byparr image reference, making the check easier to bypass accidentally.

## Issue Context
The test is explicitly described as enforcing pinned image references.

## Fix Focus Areas
- tests/test_setup_functions.sh[311-325]

## Suggested fix
Replace the broad filter with an image-line-scoped exception, for example:

```bash
# Flag any :latest image lines except the exact allowed Byparr image line
if grep -qE '^\s*image:.*:latest\b' "$compose_file" \
 && grep -E '^\s*image:.*:latest\b' "$compose_file" \
    | grep -vqE '^\s*image:\s*ghcr\.io/thephaseless/byparr:latest\b'
then
 fail "Found Docker images using :latest tag"
else
 pass "No Docker images use :latest tag"
fi
```

This keeps the exemption tight (only for the image field) while preserving the intended enforcement for all other services.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: ShellCheck

Failed stage: Lint setup.sh [❌]

Failed test name: ""

Failure summary:

The action failed because shellcheck reported multiple instances of rule SC2015 in setup.sh (e.g.,
lines 1991, 2002, 2008, 2054), warning that A && B || C is not a safe if-then-else pattern because C
may run even when A is true.
The CI job treats these shellcheck findings as fatal, so the lint step
exited with code 1, causing the workflow to fail (Process completed with exit code 1).

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

189:  ^-- SC2015 (info): Note that A && B || C is not if-then-else. C may run when A is true.
190:  In setup.sh line 1991:
191:  -o /dev/null 2>/dev/null && log_info "  Plex 'Movies' library added." \
192:  ^-- SC2015 (info): Note that A && B || C is not if-then-else. C may run when A is true.
193:  In setup.sh line 2002:
194:  -o /dev/null 2>/dev/null && log_info "  Plex 'TV Shows' library added." \
195:  ^-- SC2015 (info): Note that A && B || C is not if-then-else. C may run when A is true.
196:  In setup.sh line 2008:
197:  grep -v '^PLEX_CLAIM=' "${ENV_FILE}" > "${ENV_FILE}.tmp" && mv "${ENV_FILE}.tmp" "${ENV_FILE}" || true
198:  ^-- SC2015 (info): Note that A && B || C is not if-then-else. C may run when A is true.
199:  In setup.sh line 2054:
200:  }' -o /dev/null 2>/dev/null && log_info "  Default indexer '1337x' added to Prowlarr." \
201:  ^-- SC2015 (info): Note that A && B || C is not if-then-else. C may run when A is true.
202:  For more information:
203:  https://www.shellcheck.net/wiki/SC2015 -- Note that A && B || C is not if-t...
204:  ##[error]Process completed with exit code 1.
205:  Post job cleanup.

Comment thread docker-compose.yml
# Cloudflare bypass proxy (Byparr - drop-in FlareSolverr replacement).
byparr:
image: ghcr.io/thephaseless/byparr:1.2.2
image: ghcr.io/thephaseless/byparr:latest
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Unpinned image tag 🐞 Bug ☼ Reliability

docker-compose.yml switches Byparr to ghcr.io/thephaseless/byparr:latest, making installs
non-deterministic and undermining the repo’s documented “pinned images” upgrade model. This can
cause unexpected breakage when upstream pushes a new latest, and it contradicts both docs and
management script messaging that images are pinned.
Agent Prompt
## Issue description
`docker-compose.yml` now uses `:latest` for Byparr, which breaks the project’s stated goal of reproducible, intentionally-upgraded deployments.

## Issue Context
The repository explicitly documents and labels its Docker image strategy as “pinned to specific versions” for stability and reproducibility.

## Fix Focus Areas
- docker-compose.yml[81-90]
- README.md[629-660]
- setup.sh[47-47]
- setup.sh[1109-1188]

## Suggested fix
- Prefer pinning Byparr to a real released tag that exists (instead of `latest`).
- If Byparr does not publish stable tags, pin to an immutable digest (`ghcr.io/thephaseless/byparr@sha256:<digest>`) and document why Byparr is an exception.
- Update wording in docs/help text that currently implies *all* images are pinned if you intentionally keep an exception.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@nordicnode nordicnode merged commit 50e194a into main May 16, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant