flyrain commented on code in PR #836: URL: https://github.com/apache/polaris/pull/836#discussion_r1926393218
########## README.md: ########## @@ -39,15 +39,38 @@ for contribution guidelines. ## Building and Running Apache Polaris is organized into the following modules: + - `polaris-core` - The main Polaris entity definitions and core business logic -- `polaris-server` - The Polaris REST API server -- `polaris-eclipselink` - The Eclipselink implementation of the MetaStoreManager interface +- API modules (implementing the Iceberg REST API and Polaris management API): + - `polaris-api-management-model` - The Polaris management model + - `polaris-api-management-service` - The Polaris management service + - `polaris-api-iceberg-service` - The Iceberg REST service +- Service modules: + - `polaris-service-common` - The main components of the Polaris server +- Quarkus runtime modules: + - `polaris-quarkus-service` - The Quarkus-specific components of the Polaris server + - `polaris-quarkus-defaults` - The Quarkus-specific configuration defaults + - `polaris-quarkus-server` - The Polaris server runtime + - `polaris-quarkus-admin-tool` - The Polaris admin & maintenance tool +- Persistence modules + - `polaris-jpa-model` - The JPA entity definitions + - `polaris-eclipselink` - The Eclipselink implementation of the MetaStoreManager interface Apache Polaris is built using Gradle with Java 21+ and Docker 27+. + - `./gradlew build` - To build and run tests. Make sure Docker is running, as the integration tests depend on it. - `./gradlew assemble` - To skip tests. - `./gradlew test` - To run unit tests and integration tests. -- `./gradlew runApp` - To run the Polaris server locally on localhost:8181. + +For local development, you can run the following commands: + Review Comment: Is this necessary, considering the following commands and their accompanying comments are already clear and self-explanatory? ########## README.md: ########## @@ -57,36 +80,75 @@ insert into db1.table1 values (1, 'a'); select * from db1.table1; ``` -Apache Polaris supports the following optional build options: -- `-PeclipseLink=true` – Enables the EclipseLink extension. -- `-PeclipseLinkDeps=[groupId]:[artifactId]:[version],...` – Specifies one or more additional dependencies for EclipseLink (e.g., JDBC drivers) separated by commas. - ### More build and run options -Running in Docker -- `docker build -t localhost:5001/polaris:latest .` - To build the image. - - Optional build options: - - `docker build -t localhost:5001/polaris:latest --build-arg ECLIPSELINK=true .` - Enables the EclipseLink extension. - - `docker build -t localhost:5001/polaris:latest --build-arg ECLIPSELINK=true --build-arg ECLIPSELINK_DEPS=[groupId]:[artifactId]:[version],... .` – Enables the EclipseLink extension with one or more additional dependencies for EclipseLink (e.g. JDBC drivers) separated by commas. -- `docker run -p 8181:8181 localhost:5001/polaris:latest` - To run the image in standalone mode. - -Running in Kubernetes -- `./run.sh` - To run Polaris as a mini-deployment locally. This will create one pod that bind itself to ports `8181` and `8182`. - - Optional run options: - - `./run.sh -b "ECLIPSELINK=true"` - Enables the EclipseLink extension. - - `./run.sh -b "ECLIPSELINK=true;ECLIPSELINK_DEPS=[groupId]:[artifactId]:[version],..."` – Enables the EclipseLink extension with one or more additional dependencies for EclipseLink (e.g. JDBC drivers) separated by commas. -- `kubectl port-forward svc/polaris-service -n polaris 8181:8181 8182:8182` - To create secure connections between a local machine and a pod within the cluster for both service and metrics endpoints. - - Currently supported metrics endpoints: - - localhost:8182/metrics - - localhost:8182/healthcheck + +#### Running in Docker + +Please note: there are no official Docker images for Apache Polaris yet. For now, you can build the +Docker images locally. + +To build the Polaris server Docker image locally: + +```shell +./gradlew clean :polaris-quarkus-server:assemble -Dquarkus.container-image.build=true +``` + +To run the Polaris server Docker image: + +```shell +docker run -p 8181:8181 -p 8182:8182 apache/polaris:latest +``` Review Comment: Can we simplify it a bit like this? ```suggestion #### Running in Docker - `./gradlew clean :polaris-quarkus-server:assemble -Dquarkus.container-image.build=true` - To build the image locally. - `docker run -p 8181:8181 -p 8182:8182 apache/polaris:latest` - To run the image. ########## README.md: ########## @@ -57,36 +80,75 @@ insert into db1.table1 values (1, 'a'); select * from db1.table1; ``` -Apache Polaris supports the following optional build options: -- `-PeclipseLink=true` – Enables the EclipseLink extension. -- `-PeclipseLinkDeps=[groupId]:[artifactId]:[version],...` – Specifies one or more additional dependencies for EclipseLink (e.g., JDBC drivers) separated by commas. - ### More build and run options -Running in Docker -- `docker build -t localhost:5001/polaris:latest .` - To build the image. - - Optional build options: - - `docker build -t localhost:5001/polaris:latest --build-arg ECLIPSELINK=true .` - Enables the EclipseLink extension. - - `docker build -t localhost:5001/polaris:latest --build-arg ECLIPSELINK=true --build-arg ECLIPSELINK_DEPS=[groupId]:[artifactId]:[version],... .` – Enables the EclipseLink extension with one or more additional dependencies for EclipseLink (e.g. JDBC drivers) separated by commas. -- `docker run -p 8181:8181 localhost:5001/polaris:latest` - To run the image in standalone mode. - -Running in Kubernetes -- `./run.sh` - To run Polaris as a mini-deployment locally. This will create one pod that bind itself to ports `8181` and `8182`. - - Optional run options: - - `./run.sh -b "ECLIPSELINK=true"` - Enables the EclipseLink extension. - - `./run.sh -b "ECLIPSELINK=true;ECLIPSELINK_DEPS=[groupId]:[artifactId]:[version],..."` – Enables the EclipseLink extension with one or more additional dependencies for EclipseLink (e.g. JDBC drivers) separated by commas. -- `kubectl port-forward svc/polaris-service -n polaris 8181:8181 8182:8182` - To create secure connections between a local machine and a pod within the cluster for both service and metrics endpoints. - - Currently supported metrics endpoints: - - localhost:8182/metrics - - localhost:8182/healthcheck + +#### Running in Docker + +Please note: there are no official Docker images for Apache Polaris yet. For now, you can build the +Docker images locally. + +To build the Polaris server Docker image locally: + +```shell +./gradlew clean :polaris-quarkus-server:assemble -Dquarkus.container-image.build=true +``` + +To run the Polaris server Docker image: + +```shell +docker run -p 8181:8181 -p 8182:8182 apache/polaris:latest +``` + +#### Running in Kubernetes + +- `./run.sh` - To run Polaris as a mini-deployment locally. This will create a Kind cluster, + then deploy one pod and one service. The service is available on ports `8181` and `8182`. +- `kubectl port-forward svc/polaris-service -n polaris 8181:8181 8182:8182` - To create secure + connections between a local machine and a pod within the cluster for both service and metrics + endpoints. + - Currently supported metrics and health endpoints: + - http://localhost:8182/q/metrics + - http://localhost:8182/q/health - `kubectl get pods -n polaris` - To check the status of the pods. - `kubectl get deployment -n polaris` - To check the status of the deployment. - `kubectl describe deployment polaris-deployment -n polaris` - To troubleshoot if things aren't working as expected. -Running regression tests -- `./regtests/run.sh` - To run regression tests in another terminal. -- `docker compose up --build --exit-code-from regtest` - To run regression tests in a Docker environment. +#### Running regression tests + +Regression tests can be run in a local environment or in a Docker environment. + +To run regression tests locally, you need to have a Polaris server running locally, with the +`test` Authenticator enabled. You can do this by running Polaris as below: + +```shell +java -Dquarkus.profile=test -jar quarkus/server/build/quarkus-app/quarkus-run.jar +``` + +Then, you can run the regression tests using the following command: + +```shell +POLARIS_HOST=localhost ./regtests/run.sh +``` + +To run regression tests in a Docker environment, you can use the following command: + +```shell +docker compose -f regtests/docker-compose.yml up --build --exit-code-from regtest +``` + +The above command will by default run Polaris with the Docker image `apache/polaris:latest`; if you +want to use a different image, you can modify the `docker-compose.yaml` file prior to running it; +alternatively, you can use the following commands to override the image: + +```shell +cat <<EOF > /tmp/polaris-image.yml +services: { polaris: { image: localhost:5001/apache/polaris:latest } } +EOF +docker compose -f regtests/docker-compose.yml -f /tmp/polaris-image.yml up --build --exit-code-from regtest +``` Review Comment: I'd prefer to not mention it in the main readme, either leaving for users/developers to figure out by themselves or moving this to the readme file under the directory `regtests`. ########## README.md: ########## @@ -57,36 +80,75 @@ insert into db1.table1 values (1, 'a'); select * from db1.table1; ``` -Apache Polaris supports the following optional build options: -- `-PeclipseLink=true` – Enables the EclipseLink extension. -- `-PeclipseLinkDeps=[groupId]:[artifactId]:[version],...` – Specifies one or more additional dependencies for EclipseLink (e.g., JDBC drivers) separated by commas. - ### More build and run options -Running in Docker -- `docker build -t localhost:5001/polaris:latest .` - To build the image. - - Optional build options: - - `docker build -t localhost:5001/polaris:latest --build-arg ECLIPSELINK=true .` - Enables the EclipseLink extension. - - `docker build -t localhost:5001/polaris:latest --build-arg ECLIPSELINK=true --build-arg ECLIPSELINK_DEPS=[groupId]:[artifactId]:[version],... .` – Enables the EclipseLink extension with one or more additional dependencies for EclipseLink (e.g. JDBC drivers) separated by commas. -- `docker run -p 8181:8181 localhost:5001/polaris:latest` - To run the image in standalone mode. - -Running in Kubernetes -- `./run.sh` - To run Polaris as a mini-deployment locally. This will create one pod that bind itself to ports `8181` and `8182`. - - Optional run options: - - `./run.sh -b "ECLIPSELINK=true"` - Enables the EclipseLink extension. - - `./run.sh -b "ECLIPSELINK=true;ECLIPSELINK_DEPS=[groupId]:[artifactId]:[version],..."` – Enables the EclipseLink extension with one or more additional dependencies for EclipseLink (e.g. JDBC drivers) separated by commas. -- `kubectl port-forward svc/polaris-service -n polaris 8181:8181 8182:8182` - To create secure connections between a local machine and a pod within the cluster for both service and metrics endpoints. - - Currently supported metrics endpoints: - - localhost:8182/metrics - - localhost:8182/healthcheck + +#### Running in Docker + +Please note: there are no official Docker images for Apache Polaris yet. For now, you can build the +Docker images locally. + +To build the Polaris server Docker image locally: + +```shell +./gradlew clean :polaris-quarkus-server:assemble -Dquarkus.container-image.build=true +``` + +To run the Polaris server Docker image: + +```shell +docker run -p 8181:8181 -p 8182:8182 apache/polaris:latest +``` + +#### Running in Kubernetes + +- `./run.sh` - To run Polaris as a mini-deployment locally. This will create a Kind cluster, + then deploy one pod and one service. The service is available on ports `8181` and `8182`. +- `kubectl port-forward svc/polaris-service -n polaris 8181:8181 8182:8182` - To create secure + connections between a local machine and a pod within the cluster for both service and metrics + endpoints. + - Currently supported metrics and health endpoints: Review Comment: Can we simplify a bit like this? ```suggestion connections between a local machine and a pod within the cluster for both service and health/metrics endpoints: ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
