Easy user-deployment information (docker-compose) should be prominent/the only one on the repository landing page. (SZ-97)
Wojciech Kapcia (Tigase) opened 1 week ago
  • make information about quick & easy deployment of the application by the Regular User the most prominent information (the only in README.MD) to avoid confussion
  • information about "dev environment" should be an afterthough mentioned in the "dev secion" of the documentation


Original issue for context

We should have docker compose in a form that doesn't require building, just docker compose up, pulling latest (defined) image and starting the application. So that would be I guess:

  • image: tigase.dev/sztab/sztab-backend:staging
  • image: tigase.dev/sztab/sztab-ui:staging
  • image: tigase.dev/sztab/sztab-backend:staging

(maybe use .env file to drive it? either build or use staging tags?)


However, even with that it fails to start:

sztabina       | Picked up JAVA_TOOL_OPTIONS: -XX:+UseG1GC -XX:MaxRAMPercentage=75.0 -XX:+FlightRecorder
sztabina       | OpenJDK 64-Bit Server VM warning: Option FlightRecorder was deprecated in version 13.0 and will likely be removed in a future release.
sztabina       |
sztabina       |   .   ____          _            __ _ _
sztabina       |  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
sztabina       | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
sztabina       |  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
sztabina       |   '  |____| .__|_| |_|_| |_\__, | / / / /
sztabina       |  =========|_|==============|___/=/_/_/_/
sztabina       |
sztabina       |  :: Spring Boot ::                (v3.3.4)
sztabina       |
sztabina       | 2026-02-25T15:16:35.712Z  INFO 1 --- [           main] com.sztab.Application                    : Starting Application using Java 21.0.10 with PID 1 (/app/sztab.jar started by root in /app)
sztabina       | 2026-02-25T15:16:35.732Z  INFO 1 --- [           main] com.sztab.Application                    : No active profile set, falling back to 1 default profile: "default"
sztabina       | 2026-02-25T15:16:46.403Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
sztabina       | 2026-02-25T15:16:47.624Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1184 ms. Found 13 JPA repository interfaces.
sztabina       | 2026-02-25T15:16:54.994Z  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8181 (http)
sztabina       | 2026-02-25T15:16:55.081Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
sztabina       | 2026-02-25T15:16:55.082Z  INFO 1 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.30]
sztabina       | 2026-02-25T15:16:56.420Z  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
sztabina       | 2026-02-25T15:16:56.431Z  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 19601 ms
sztabina       | 2026-02-25T15:16:58.623Z  WARN 1 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Failed to initialize dependency 'flyway' of LoadTimeWeaverAware bean 'entityManagerFactory': Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception with message: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to determine a suitable driver class
sztabina       | 2026-02-25T15:16:58.644Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
sztabina       | 2026-02-25T15:16:58.798Z  INFO 1 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger :
sztabina       |
sztabina       | Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
sztabina       | 2026-02-25T15:16:58.890Z ERROR 1 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   :
sztabina       |
sztabina       | ***************************
sztabina       | APPLICATION FAILED TO START
sztabina       | ***************************
sztabina       |
sztabina       | Description:
sztabina       |
sztabina       | Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
sztabina       |
sztabina       | Reason: Failed to determine a suitable driver class
sztabina       |
sztabina       |
sztabina       | Action:
sztabina       |
sztabina       | Consider the following:
sztabina       | 	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
sztabina       | 	If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
sztabina       |
sztabina exited with code 1 (restarting)
  • Artur Hefczyc commented 1 week ago

    Yes, I agree here. Docker compose and we also need images ready to use. Some environments do not allow building, like my home server for example. I think images are already being created and uploaded onto 1dev, so, this might be just matter of preparing right docker compose file with images location.

  • rk@tigase.net commented 1 week ago

    Wojciech,

    I provide two versions of docker compose files: one for development in $TOP/deploy/docker/docker-compose.yml and other is a release docker compose (what you call "fire and forget" docker compose) that is driven by sensible defaults in the compose file itself and which is also based on .env: this is in $TOP/release folder.

    You are using the development docker compose which will build from src instead of pulling pre-built images off the registry.

    The release note clearly states what needs to be done. If you had followed it, you would have found a different problem - a minor typo in the sztabctl command which I am fixing now. I will create a new release 1.9.2 to fix this typo.

  • rk@tigase.net commented 1 week ago
    rksuma@Ramakrishnans-MacBook-Pro ~ % rm -fr sztab-staging
    rksuma@Ramakrishnans-MacBook-Pro ~ % mkdir sztab-staging 
    rksuma@Ramakrishnans-MacBook-Pro ~ % cd !!:
    zsh: illegal modifier: \n
    rksuma@Ramakrishnans-MacBook-Pro ~ % cd  sztab-staging
    rksuma@Ramakrishnans-MacBook-Pro sztab-staging % git clone https://tigase.dev/sztab.git 
    Cloning into 'sztab'...
    remote: Enumerating objects: 6175, done.
    remote: Counting objects: 100% (6175/6175), done.
    remote: Compressing objects: 100% (4897/4897), done.
    remote: Total 6175 (delta 3291), reused 1057 (delta 529), pack-reused 0
    Receiving objects: 100% (6175/6175), 92.17 MiB | 5.62 MiB/s, done.
    Resolving deltas: 100% (3291/3291), done.
    rksuma@Ramakrishnans-MacBook-Pro sztab-staging % cd release
    chmod +x sztabctl
    cd: no such file or directory: release
    chmod: sztabctl: No such file or directory
    rksuma@Ramakrishnans-MacBook-Pro sztab-staging % cd sztab 
    rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout v1.9.1
    Note: switching to 'v1.9.1'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by switching back to a branch.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -c with the switch command. Example:
    
      git switch -c <new-branch-name>
    
    Or undo this operation with:
    
      git switch -
    
    Turn off this advice by setting config variable advice.detachedHead to false
    
    HEAD is now at 7b9a818 chore(frontend): stabilize production Dockerfile for 1.9.1
    rksuma@Ramakrishnans-MacBook-Pro sztab % cd release 
    rksuma@Ramakrishnans-MacBook-Pro release % chmod +x sztabctl 
    rksuma@Ramakrishnans-MacBook-Pro release % ./sztabctl --help
    Usage:
      sztabctl --run
      sztabctl --down
      sztabctl --logs
      sztabctl --status
      sztabctl --urls
    
    Notes:
      - Must be executed from within the release directory.
      - Uses: docker-compose-release.yml
    rksuma@Ramakrishnans-MacBook-Pro release % ./sztabctl --run 
    Starting Sztab...
    [+] Running 6/6
     ✔ Network release_sztab-net     Created                                                                                                                     0.1s 
     ✔ Container release-sztabina-1  Started                                                                                                                     0.7s 
     ✔ Container sztab-db            Healthy                                                                                                                    11.2s 
     ✔ Container sztab-backend       Started                                                                                                                    11.3s 
     ✔ Container sztab-ui            Started                                                                                                                    11.3s 
     ✔ Container caddy               Started                                                                                                                    11.4s 
    Sztab started.
    
    Access URLs:
      UI       : http://localhost
      Backend  : http://localhost/api
      Git      : http://localhost/git/{repo}.git
    
    rksuma@Ramakrishnans-MacBook-Pro release %                 
    
    
  • rk@tigase.net changed state to 'In Progress' 1 week ago
    Previous Value Current Value
    Open
    In Progress
  • rk@tigase.net changed state to 'Closed' 1 week ago
    Previous Value Current Value
    In Progress
    Closed
  • rk@tigase.net commented 1 week ago

    closed by mistake

  • rk@tigase.net changed state to 'Open' 1 week ago
    Previous Value Current Value
    Closed
    Open
  • rk@tigase.net removed comment 1 week ago
  • rk@tigase.net removed comment 1 week ago
  • rk@tigase.net commented 1 week ago

    The issue statement is incorrect; nothing to fix.

  • rk@tigase.net changed state to 'Won't Fix' 1 week ago
    Previous Value Current Value
    Open
    Won't Fix
  • Wojciech Kapcia (Tigase) commented 1 week ago

    I provide two versions of docker compose files: one for development in $TOP/deploy/docker/docker-compose.yml and other is a release docker compose (what you call "fire and forget" docker compose) that is driven by sensible defaults in the compose file itself and which is also based on .env: this is in $TOP/release folder.

    … yet it's not mentioned at all in the readme: https://tigase.dev/sztab/~files/wolnosc/README.md

    The release note clearly states what needs to be done. If you had followed it, you would have found a different problem - a minor typo in the sztabctl command which I am fixing now. I will create a new release 1.9.2 to fix this typo.

    Do we have a documentation website deployed with those notes? No. Do we have a dedicated "release page" akin to github releases (in 1dev it would be builds: https://tigase.dev/sztab/~builds) to which one could refer to? Also no.

    What's more - Release Notes indicates information about what's new in the version and less so deployment instructions? I would argue that would be one of the less obvious places to check… Not to mention that, to be absolutely frank - I had no idea what you are referring to exactly. Then I checked the emails and voila - there they were…

    Taking into consideration "regular user that wants to try the software" would be useful without sounding dimissive at my failed attempt to try the software. For you the project structure and location of all information may be obvious, but please try puting yourself in shoes of someone not familiar with the project. What I did:

    • opened main repository page (because there is no other): https://tigase.dev/sztab/~files/
    • searched for "compose" (because I'm looking for the easier way to run it)
    • I see "Running Locally (Full Stack)" section described as "Sztab can now be brought up locally in one step using Docker Compose." which points to:
    cd deploy/docker
    docker compose up --build
    

    which at no point explicitly states that it's "development environment" (yes, there is --build parameter but given no other mention of alternative compose deployment one assumes it's the only one)

    Looking at the file list you see:

    deploy
    …
    release
    

    and thinking logically where would you look for information related to deployment?

    Maybe the aformentioned "clear information in release note" is not that clear and obvious after all, to warrant, rather uncalled-for, comment?

    Looking at the mentioned "release notes" (https://tigase.dev/sztab/~files/wolnosc/docs/release/1.9.1/README_FIRST.md) I'm not sure, they are as "clear and concise" either; let's disect that:

    • I'm not sure that involving git into the whole thing is needed (docker compose is just a yaml file, you can grab relevant file via curl which is suggested in the majority of docker compose deployments)
    • the release notes are for version 1.9.1 yet in the document you say: "git checkout wolnosc" (and later on "Expected: 1.9.1") -- this would give you latest version so if your development moves forward it would not be about version 1.9.1 [sidenote: why main branch is called wolnosc and not typical master or main? it's quite confusing for no apparent reason)
    • why do you use chmod +x sztabctl? It's possible to set executable flag for a file tracked in git
    • why do we even have sztabctl executable? I read the purpose section in https://tigase.dev/sztab/~files/wolnosc/docs/release/1.9.1/sztabctl.md#1-purpose, but it looks like just adding complexity layer on top of docker compose for the sake of… complexity itself; whole "Usage" section could simply give relevant docker compose commands that sztabctl is just a wrapper of… (not to mention that you yourself noted a type-o in it…)

    Compare this "workflow" with forgejo (putting aside that it's the page and not the repo view, but the former can mimic quite well the latter). After you click "Get forgejo" you go to https://forgejo.org/releases/ where you can see release notes (https://codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/14.0.2.md) which don't mention anything about installation, just changes and actuall "installation" page (https://forgejo.org/docs/latest/admin/installation/) with binary and docker option, and the latter (https://forgejo.org/docs/latest/admin/installation/docker/) giving you simplest possible docker-compose to use…


    Possible improvement suggestions (although you deemed it "wontfix"):

    1. in the main READ.ME adding another section right after "features" named "Quick start" with basic:
    cd release
    docker compose up -d
    

    ?

    1. possibly shuffle the things a bit and put "for use" compose files in "deployment" and those for development in… "dev(elopment)" directory?
  • rk@tigase.net commented 4 days ago

    Regarding:

    “… yet it’s not mentioned at all in the readme”

    With every release I send a short announcement that begins with:

    Please start here: https://tigase.dev/sztab/~files/wolnosc/docs/release/1.9.1/README_FIRST.md

    README_FIRST explicitly directs the reader to the ./release folder, which contains the release artifacts, including the non-build Docker Compose file.

    The fire-and-forget compose therefore exists and is part of the documented release workflow.

    Even when browsing the repository directly, the top-level ./release directory is visible and contains the release compose file.

    Regarding:

    "Do we have a documentation website deployed with those notes?"

    For each release, README_FIRST is the canonical entry point for installation of that version. It serves that role in lieu of a separate documentation website.

    If there is a desire to duplicate release installation instructions into the root README, that can be discussed as a documentation improvement. However, that is distinct from the original defect statement.

    Regarding the defect resolution:

    The original defect states:

    “We should have docker compose in a form that doesn’t require building, just docker compose up, pulling latest image and starting the application.”

    This capability already exists in ./release.

    Therefore, the defect statement is factually incorrect. The issue was marked “won’t fix” because OneDev does not provide a more precise resolution state such as “invalid” or “not a defect.” The accurate classification is that there is nothing to fix.

    Some documentation corrections you pointed out (e.g., typos) are valid and have been addressed in 1.9.3.

  • Wojciech Kapcia (Tigase) commented 1 day ago

    (can you use quoting with >? it helps with the comment flow… there is "quote" button at the end of the comment or, if you reply by email, it should be quoted automatically)

    Regarding:

    “… yet it’s not mentioned at all in the readme”

    With every release I send a short announcement that begins with:

    Please start here: https://tigase.dev/sztab/~files/wolnosc/docs/release/1.9.1/README_FIRST.md

    README_FIRST explicitly directs the reader to the ./release folder, which contains the release artifacts, including the non-build Docker Compose file.

    OK, but my comment was from the perspective of someone trying to check the project and landing on the main repository page. This is what should be the MAIN entry point and focus, not "Release notes" which:

    1. you probably won't send to absolutely whole world
    2. release notes (at least for me) suggest: "information that version was released, what was changed and any actions that you should take manually if upgrading"

    IMHO expectation that anyone stumbling on the main project page should first go on a hunt for release notes because what's presented on the main page is basically incorrect is quite odd…

    The fire-and-forget compose therefore exists and is part of the documented release workflow.

    Yes, it does exsists. I'd argue that the "documented release workflow" is invalid…

    Even when browsing the repository directly, the top-level ./release directory is visible and contains the release compose file.

    Probably it's "me problem" but as I suggested in my previous message: for me ./release would contain anything related to performing the release of the application and ./deployment would contain information related to how to depoy it…

    Regarding:

    "Do we have a documentation website deployed with those notes?"

    For each release, README_FIRST is the canonical entry point for installation of that version. It serves that role in lieu of a separate documentation website.

    Which is quite weird take becase said README_FIRST is burried deep inside folder structure so even if you put more caps and exclamation marks noone would effectively "read it first" when it's burried so deep.

    If there is a desire to duplicate release installation instructions into the root README, that can be discussed as a documentation improvement. However, that is distinct from the original defect statement.

    This is quite a nitpick… Alas, I'll rephrase the title (and I'll update the original message) of the issue to avoid multiplying tasks about same issue, which is basically: "hard to discover easy deployment means"

    Regarding the defect resolution:

    The original defect states:

    “We should have docker compose in a form that doesn’t require building, just docker compose up, pulling latest image and starting the application.”

    This capability already exists in ./release.

    Therefore, the defect statement is factually incorrect. The issue was marked “won’t fix” because OneDev does not provide a more precise resolution state such as “invalid” or “not a defect.” The accurate classification is that there is nothing to fix.

    Some documentation corrections you pointed out (e.g., typos) are valid and have been addressed in 1.9.3.

    I'm not even sure how to parse this comment. It would be nice to have certain flexibility in issues as means of discussion instead of outright rejecting them…

    If you are so adamant about semantics and hairsplitting, the title says: "Basic docker-compose should be "fire and forget"". The basic docker compose file, as shown in the most user-facing place (README.MD file) is not "fire-and-forget" which makes the issue very much relevant.

    To that end, the issue is about:

    • making information about quick & easy deployment of the application by the Regular User the most prominent information
    • information about "dev environment" should be an afterthough and mentioned in the "dev section"

    In the end while the project is for developers intended audience cares about using it and not developing it…

  • Wojciech Kapcia (Tigase) changed state to 'Open' 1 day ago
    Previous Value Current Value
    Won't Fix
    Open
  • Wojciech Kapcia (Tigase) changed title 1 day ago
    Previous Value Current Value
    Basic docker-compose should be "fire and forget"
    Easy user-deployment information (docker-compose) should be prominent/the only one on the repository landing page.
issue 1 of 1
Type
Task
Priority
Normal
Assignee
Version
none
Sprints
n/a
Customer
n/a
Issue Votes (0)
Watchers (3)
Reference
SZ-97
Please wait...
Page is in error, reload to recover