diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..ec7078bb --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,429 @@ +version: 2.1 + +parameters: + docker-img: + type: 'string' + default: '' + +commands: + timeout: + parameters: + duration: + default: '5m' + type: 'string' + steps: + - run: + name: Cancel job after <> + background: true + command: | + sleep <> + echo "Cancelling job as <> has elapsed" + curl --fail -X POST -H "Circle-Token: ${CIRCLE_TOKEN}" "https://circleci.com/api/v1.1/project/github/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}/cancel" + start-db: + parameters: + docker-img: + type: 'string' + default: <> + topology: + type: 'string' + default: 'single' + ssl: + type: 'string' + default: 'false' + compression: + type: 'string' + default: 'false' + steps: + - run: + name: Start Database + command: ./docker/start_db.sh + environment: + DOCKER_IMAGE: <> + STARTER_MODE: <> + STARTER_DOCKER_IMAGE: 'docker.io/arangodb/arangodb-starter:0.18.5' + SSL: <> + COMPRESSION: <> + report: + parameters: + working_directory: + type: 'string' + default: '.' + steps: + - run: + name: Create reports + command: mvn surefire-report:report-only + working_directory: <> + - store_artifacts: + path: <>/target/site + load_cache: + steps: + - run: + name: Generate Cache Checksum + command: find . -name 'pom.xml' | sort | xargs cat > /tmp/maven_cache_seed + - restore_cache: + key: maven-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/maven_cache_seed" }} + store_cache: + steps: + - save_cache: + key: maven-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/maven_cache_seed" }} + paths: + - ~/.m2/repository + config_gpg: + steps: + - run: + name: Configure GPG + command: echo $GPG_PRIVATE_KEY | base64 --decode | gpg --batch --no-tty --import --yes + deploy: + parameters: + scala-version: + type: 'string' + spark-version: + type: 'string' + steps: + - run: + name: Deploy to Apache Maven Central + command: mvn -s .circleci/maven-release-settings.xml -Ddeploy -Dmaven.test.skip=true -Pscala-<> -Pspark-<> deploy + release: + parameters: + scala-version: + type: 'string' + spark-version: + type: 'string' + steps: + - run: + name: Release to Apache Maven Central + command: mvn -s .circleci/maven-release-settings.xml -Ddeploy -Dmaven.test.skip=true -Pscala-<> -Pspark-<> nexus-staging:release + environment: + MAVEN_OPTS: "--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED" + +executors: + j8: + docker: + - image: 'cimg/openjdk:8.0' + j11: + docker: + - image: 'cimg/openjdk:11.0' + +jobs: + + test: + parameters: + docker-img: + type: 'string' + default: <> + topology: + type: 'string' + default: 'cluster' + ssl: + type: 'string' + default: 'false' + jdk: + type: 'string' + default: 'j11' + scala-version: + type: 'string' + default: '2.12' + spark-version: + type: 'string' + args: + type: 'string' + default: '' + executor: <> + steps: + - timeout + - checkout + - setup_remote_docker + - start-db: + docker-img: <> + topology: <> + ssl: <> + - load_cache + - run: + name: mvn version + command: mvn --version + - run: + name: mvn dependency:tree + command: mvn dependency:tree -Pscala-<> -Pspark-<> + - run: + name: Test + command: mvn test -Pscala-<> -Pspark-<> <> + - report: + working_directory: arangodb-spark-commons + - report: + working_directory: integration-tests + - store_cache + + integration-tests: + parameters: + scala-version: + type: 'string' + default: '2.12' + spark-version: + type: 'string' + executor: 'j11' + steps: + - timeout + - checkout + - setup_remote_docker + - start-db + - load_cache + - run: + name: mvn version + command: mvn --version + - run: + name: mvn dependency:tree + command: mvn dependency:tree -Pscala-<> -Pspark-<> + - run: + name: mvn install + command: mvn install -Dmaven.test.skip=true -Dgpg.skip=true -Dmaven.javadoc.skip=true -Pscala-<> -Pspark-<> + - run: + name: Test + working_directory: integration-tests + command: mvn test -Pscala-<> -Pspark-<> + - report: + working_directory: integration-tests + - store_cache + + deployment-test: + parameters: + scala-version: + type: 'string' + default: '2.12' + spark-version: + type: 'string' + spark-full-version: + type: 'string' + executor: 'j11' + steps: + - timeout + - checkout + - setup_remote_docker + - start-db + - load_cache + - run: + name: mvn version + command: mvn --version + - run: + name: mvn dependency:tree + command: mvn dependency:tree -Pscala-<> -Pspark-<> + - run: + name: mvn install + command: mvn install -Dmaven.test.skip=true -Dgpg.skip=true -Dmaven.javadoc.skip=true -Pscala-<> -Pspark-<> + - run: + name: Deployment Test + command: mvn -f ./demo/pom.xml -Pscala-<> -Pspark-<> -Dspark.version=<> -DimportPath=docker/import test + - store_cache + + deploy: + parameters: + scala-version: + type: 'string' + spark-version: + type: 'string' + executor: 'j11' + steps: + - timeout + - checkout + - load_cache + - mvn-info + - config_gpg + - deploy: + scala-version: <> + spark-version: <> + - store_cache + + release: + parameters: + scala-version: + type: 'string' + spark-version: + type: 'string' + executor: 'j11' + steps: + - timeout + - checkout + - load_cache + - mvn-info + - config_gpg + - deploy: + scala-version: <> + spark-version: <> + - release: + scala-version: <> + spark-version: <> + - store_cache + +workflows: + test-adb-version: + when: + not: <> + jobs: + - test: + name: test-spark<>-<>-<> + matrix: + parameters: + docker-img: + - 'docker.io/arangodb/arangodb:3.11' + - 'docker.io/arangodb/arangodb:3.12' + - 'docker.io/arangodb/enterprise:3.11' + - 'docker.io/arangodb/enterprise:3.12' + spark-version: + - '3.2' + - '3.3' + - '3.4' + topology: + - 'single' + - 'cluster' + test-adb-topology: + when: <> + jobs: + - test: + name: test-spark<>-<> + matrix: + parameters: + spark-version: + - '3.2' + - '3.3' + - '3.4' + topology: + - 'single' + - 'cluster' + ssl: + jobs: + - test: + name: ssl-<>-<>-spark<> + matrix: + parameters: + spark-version: + - '3.2' + - '3.3' + - '3.4' + scala-version: + - '2.12' + - '2.13' + jdk: + - 'j8' + - 'j11' + ssl: + - 'true' + args: + - '-am -pl integration-tests -Dtest=org.apache.spark.sql.arangodb.datasource.SslTest -DSslTest=true -DfailIfNoTests=false' + test-jdk: + when: + not: <> + jobs: + - test: + name: test-<>-spark<>-scala<> + matrix: + parameters: + jdk: + - 'j8' + - 'j11' + spark-version: + - '3.2' + - '3.3' + - '3.4' + scala-version: + - '2.12' + - '2.13' + integration-tests: + when: + not: <> + jobs: + - integration-tests: + name: integration-spark<>-scala<> + matrix: + parameters: + spark-version: + - '3.2' + - '3.3' + - '3.4' + scala-version: + - '2.12' + - '2.13' + test-spark-versions: + when: + not: <> + jobs: + - deployment-test: + name: test-spark<>-scala<> + matrix: + parameters: + spark-version: + - '3.2' + scala-version: + - '2.12' + - '2.13' + spark-full-version: + - '3.2.0' + - '3.2.1' + - '3.2.2' + - '3.2.3' + - '3.2.4' + - deployment-test: + name: test-spark<>-scala<> + matrix: + parameters: + spark-version: + - '3.3' + scala-version: + - '2.12' + - '2.13' + spark-full-version: + - '3.3.0' + - '3.3.1' + - '3.3.2' + - '3.3.3' + - '3.3.4' + - deployment-test: + name: test-spark<>-scala<> + matrix: + parameters: + spark-version: + - '3.4' + scala-version: + - '2.12' + - '2.13' + spark-full-version: + - '3.4.0' + - '3.4.1' + - '3.4.2' + - '3.4.3' + deploy: + jobs: + - deploy: + name: deploy-spark<>-scala<> + matrix: + parameters: + spark-version: + - '3.2' + - '3.3' + - '3.4' + scala-version: + - '2.12' + - '2.13' + context: java-release + filters: + tags: + only: /^deploy.*/ + branches: + ignore: /.*/ + release: + jobs: + - release: + name: release-spark<>-scala<> + matrix: + parameters: + spark-version: + - '3.2' + - '3.3' + - '3.4' + scala-version: + - '2.12' + - '2.13' + context: java-release + filters: + tags: + only: /^release.*/ + branches: + ignore: /.*/ diff --git a/.circleci/maven-release-settings.xml b/.circleci/maven-release-settings.xml new file mode 100644 index 00000000..be5b9aef --- /dev/null +++ b/.circleci/maven-release-settings.xml @@ -0,0 +1,25 @@ + + + + + ossrh + + true + + + ${env.GPG_KEYNAME} + ${env.GPG_PASSPHRASE} + + + + + + + ossrh + ${env.OSSRH_USERNAME} + ${env.OSSRH_PASSWORD} + + + + diff --git a/.github/workflows/maven-deploy.yml b/.github/workflows/maven-deploy.yml deleted file mode 100644 index c45e838c..00000000 --- a/.github/workflows/maven-deploy.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Deploy - -on: - workflow_dispatch: - push: - tags: [ deploy** ] - -jobs: - deploy: - timeout-minutes: 20 - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - include: - - scala-version: 2.12 - spark-version: 3.1 - - scala-version: 2.12 - spark-version: 3.2 - - scala-version: 2.13 - spark-version: 3.2 - - scala-version: 2.12 - spark-version: 3.3 - - scala-version: 2.13 - spark-version: 3.3 - - scala-version: 2.12 - spark-version: 3.4 - - scala-version: 2.13 - spark-version: 3.4 - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK - uses: actions/setup-java@v3 - with: - java-version: '8' - distribution: 'adopt' - cache: 'maven' - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_CENTRAL_TOKEN - gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE - - name: Publish to Apache Maven Central - run: mvn --no-transfer-progress -Ddeploy -Dmaven.test.skip=true -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_CENTRAL_TOKEN: ${{ secrets.OSSRH_PASSWORD }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/.github/workflows/maven-release.yml b/.github/workflows/maven-release.yml deleted file mode 100644 index 07dd34e0..00000000 --- a/.github/workflows/maven-release.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Release - -on: - workflow_dispatch: - push: - tags: [ release** ] - -jobs: - release: - timeout-minutes: 20 - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - include: - - scala-version: 2.12 - spark-version: 3.1 - - scala-version: 2.12 - spark-version: 3.2 - - scala-version: 2.13 - spark-version: 3.2 - - scala-version: 2.12 - spark-version: 3.3 - - scala-version: 2.13 - spark-version: 3.3 - - scala-version: 2.12 - spark-version: 3.4 - - scala-version: 2.13 - spark-version: 3.4 - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK - uses: actions/setup-java@v3 - with: - java-version: '8' - distribution: 'adopt' - cache: 'maven' - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_CENTRAL_TOKEN - gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE - - name: Publish to Apache Maven Central - run: mvn --no-transfer-progress -Ddeploy -Dmaven.test.skip=true -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_CENTRAL_TOKEN: ${{ secrets.OSSRH_PASSWORD }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - - name: Release to Apache Maven Central - run: mvn --no-transfer-progress -Ddeploy -Dmaven.test.skip=true -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} nexus-staging:release - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_CENTRAL_TOKEN: ${{ secrets.OSSRH_PASSWORD }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aa405cf9..63834309 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,109 +24,6 @@ on: jobs: - test: - timeout-minutes: 10 - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - scala-version: - - 2.12 - - 2.13 - spark-version: - - 3.1 - - 3.2 - - 3.3 - - 3.4 - topology: - - single - - cluster - java-version: - - 8 - - 11 - docker-img: - - docker.io/arangodb/arangodb:3.11 - - docker.io/arangodb/enterprise:3.11 - - docker.io/arangodb/arangodb:3.12 - - docker.io/arangodb/enterprise:3.12 - exclude: - - scala-version: 2.13 - spark-version: 3.1 - - docker-img: docker.io/arangodb/arangodb:3.11 - java-version: 8 - - docker-img: docker.io/arangodb/enterprise:3.11 - java-version: 8 - - docker-img: docker.io/arangodb/enterprise:3.11 - topology: single - - docker-img: docker.io/arangodb/arangodb:3.12 - java-version: 11 - - docker-img: docker.io/arangodb/enterprise:3.12 - java-version: 8 - - docker-img: docker.io/arangodb/enterprise:3.12 - topology: single - - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 - with: - java-version: ${{matrix.java-version}} - distribution: 'adopt' - cache: maven - - name: Start Database - run: ./docker/start_db.sh - env: - STARTER_MODE: ${{matrix.topology}} - DOCKER_IMAGE: ${{matrix.docker-img}} - - name: Info - run: mvn -version - - name: Test - run: mvn -e --no-transfer-progress -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} test - - integration-tests: - timeout-minutes: 10 - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - scala-version: - - 2.12 - - 2.13 - spark-version: - - 3.1 - - 3.2 - - 3.3 - - 3.4 - topology: - - cluster - java-version: - - 8 - docker-img: - - docker.io/arangodb/arangodb:3.12 - exclude: - - scala-version: 2.13 - spark-version: 3.1 - - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 - with: - java-version: ${{matrix.java-version}} - distribution: 'adopt' - cache: maven - - name: Start Database - run: ./docker/start_db.sh - env: - STARTER_MODE: ${{matrix.topology}} - DOCKER_IMAGE: ${{matrix.docker-img}} - - name: Info - run: mvn -version - - name: Install - run: mvn -e --no-transfer-progress -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} -Dgpg.skip=true -DskipTests=true install - - name: Test - working-directory: integration-tests - run: mvn -e --no-transfer-progress -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} test test-python: timeout-minutes: 10 @@ -185,142 +82,6 @@ jobs: pytest python-integration-tests/integration --adb-datasource-jar ./arangodb-spark-datasource-under-test.jar --adb-hostname 172.28.0.1 - testSsl: - timeout-minutes: 10 - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - scala-version: - - 2.12 - - 2.13 - spark-version: - - 3.1 - - 3.2 - - 3.3 - - 3.4 - topology: - - single - java-version: - - 8 - - 11 - docker-img: - - docker.io/arangodb/arangodb:3.12 - exclude: - - scala-version: 2.13 - spark-version: 3.1 - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 - with: - java-version: ${{matrix.java-version}} - distribution: 'adopt' - cache: maven - - name: Start Database - run: ./docker/start_db.sh - env: - SSL: true - STARTER_MODE: ${{matrix.topology}} - DOCKER_IMAGE: ${{matrix.docker-img}} - - name: Info - run: mvn -version - - name: Test - run: mvn -e --no-transfer-progress -am -pl integration-tests -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} -Dtest=org.apache.spark.sql.arangodb.datasource.SslTest -DSslTest=true -DfailIfNoTests=false test - - test-older-spark-versions: - timeout-minutes: 10 - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - include: - - spark-version: 3.1 - scala-version: 2.12 - spark-full-version: 3.1.0 - - spark-version: 3.1 - scala-version: 2.12 - spark-full-version: 3.1.1 - - spark-version: 3.1 - scala-version: 2.12 - spark-full-version: 3.1.2 - - spark-version: 3.1 - scala-version: 2.12 - spark-full-version: 3.1.3 - - spark-version: 3.2 - scala-version: 2.12 - spark-full-version: 3.2.0 - - spark-version: 3.2 - scala-version: 2.13 - spark-full-version: 3.2.0 - - spark-version: 3.2 - scala-version: 2.12 - spark-full-version: 3.2.1 - - spark-version: 3.2 - scala-version: 2.13 - spark-full-version: 3.2.1 - - spark-version: 3.2 - scala-version: 2.12 - spark-full-version: 3.2.2 - - spark-version: 3.2 - scala-version: 2.13 - spark-full-version: 3.2.2 - - spark-version: 3.2 - scala-version: 2.12 - spark-full-version: 3.2.3 - - spark-version: 3.2 - scala-version: 2.13 - spark-full-version: 3.2.3 - - spark-version: 3.2 - scala-version: 2.12 - spark-full-version: 3.2.4 - - spark-version: 3.2 - scala-version: 2.13 - spark-full-version: 3.2.4 - - spark-version: 3.3 - scala-version: 2.12 - spark-full-version: 3.3.0 - - spark-version: 3.3 - scala-version: 2.13 - spark-full-version: 3.3.0 - - spark-version: 3.3 - scala-version: 2.12 - spark-full-version: 3.3.1 - - spark-version: 3.3 - scala-version: 2.13 - spark-full-version: 3.3.1 - - spark-version: 3.3 - scala-version: 2.12 - spark-full-version: 3.3.2 - - spark-version: 3.3 - scala-version: 2.13 - spark-full-version: 3.3.2 - - spark-version: 3.4 - scala-version: 2.12 - spark-full-version: 3.4.0 - - spark-version: 3.4 - scala-version: 2.13 - spark-full-version: 3.4.0 - - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 - with: - java-version: '8' - distribution: 'adopt' - cache: maven - - name: Start Database - run: ./docker/start_db.sh - env: - STARTER_MODE: cluster - DOCKER_IMAGE: docker.io/arangodb/arangodb:3.12 - - name: Info - run: mvn -version - - name: Install - run: mvn -e --no-transfer-progress -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} -Dgpg.skip=true -DskipTests=true install - - name: Deployment Test - run: mvn -f ./demo/pom.xml -Pscala-${{matrix.scala-version}} -Pspark-${{matrix.spark-version}} -Dspark.version=${{matrix.spark-full-version}} -DimportPath=docker/import test ## FIXME: sonar plugin requires Java 17 # sonar: diff --git a/.gitignore b/.gitignore index eb56a399..b492e385 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,5 @@ *.iml **/.idea/ .directory -**/docker/jwtHeader -**/docker/jwtSecret **/.flattened-pom.xml __pycache__/ \ No newline at end of file diff --git a/demo/docker/jwtHeader b/demo/docker/jwtHeader new file mode 100644 index 00000000..153e1b8a --- /dev/null +++ b/demo/docker/jwtHeader @@ -0,0 +1 @@ +Authorization: bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcmFuZ29kYiIsInNlcnZlcl9pZCI6ImZvbyJ9.QmuhPHkmRPJuHGxsEqggHGRyVXikV44tb5YU_yWEvEM diff --git a/demo/docker/jwtSecret b/demo/docker/jwtSecret new file mode 100644 index 00000000..ea75728b --- /dev/null +++ b/demo/docker/jwtSecret @@ -0,0 +1 @@ +Averysecretword diff --git a/demo/docker/start_db.sh b/demo/docker/start_db.sh index ca571e3e..4c0c2e9a 100755 --- a/demo/docker/start_db.sh +++ b/demo/docker/start_db.sh @@ -3,8 +3,8 @@ # Configuration environment variables: # STARTER_MODE: (single|cluster|activefailover), default single # DOCKER_IMAGE: ArangoDB docker image, default docker.io/arangodb/arangodb:latest +# STARTER_DOCKER_IMAGE: ArangoDB Starter docker image, default docker.io/arangodb/arangodb-starter:latest # SSL: (true|false), default false -# DATABASE_EXTENDED_NAMES: (true|false), default false # ARANGO_LICENSE_KEY: only required for ArangoDB Enterprise # EXAMPLE: @@ -12,10 +12,10 @@ STARTER_MODE=${STARTER_MODE:=single} DOCKER_IMAGE=${DOCKER_IMAGE:=docker.io/arangodb/arangodb:latest} +STARTER_DOCKER_IMAGE=${STARTER_DOCKER_IMAGE:=docker.io/arangodb/arangodb-starter:latest} SSL=${SSL:=false} -DATABASE_EXTENDED_NAMES=${DATABASE_EXTENDED_NAMES:=false} +COMPRESSION=${COMPRESSION:=false} -STARTER_DOCKER_IMAGE=docker.io/arangodb/arangodb-starter:latest GW=172.28.0.1 docker network create arangodb --subnet 172.28.0.0/16 @@ -26,9 +26,6 @@ docker pull $STARTER_DOCKER_IMAGE docker pull $DOCKER_IMAGE LOCATION=$(pwd)/$(dirname "$0") - -echo "Averysecretword" > "$LOCATION"/jwtSecret -docker run --rm -v "$LOCATION"/jwtSecret:/jwtSecret "$STARTER_DOCKER_IMAGE" auth header --auth.jwt-secret /jwtSecret > "$LOCATION"/jwtHeader AUTHORIZATION_HEADER=$(cat "$LOCATION"/jwtHeader) STARTER_ARGS= @@ -41,36 +38,35 @@ if [ "$STARTER_MODE" == "single" ]; then fi if [ "$SSL" == "true" ]; then - STARTER_ARGS="$STARTER_ARGS --ssl.keyfile=server.pem" + STARTER_ARGS="$STARTER_ARGS --ssl.keyfile=/data/server.pem" SCHEME=https ARANGOSH_SCHEME=http+ssl fi -if [ "$DATABASE_EXTENDED_NAMES" == "true" ]; then - STARTER_ARGS="${STARTER_ARGS} --all.database.extended-names-databases=true" +if [ "$COMPRESSION" == "true" ]; then + STARTER_ARGS="${STARTER_ARGS} --all.http.compress-response-threshold=1" fi -if [ "$USE_MOUNTED_DATA" == "true" ]; then - STARTER_ARGS="${STARTER_ARGS} --starter.data-dir=/data" - MOUNT_DATA="-v $LOCATION/data:/data" -fi +# data volume +docker create -v /data --name arangodb-data alpine:3 /bin/true +docker cp "$LOCATION"/jwtSecret arangodb-data:/data +docker cp "$LOCATION"/server.pem arangodb-data:/data docker run -d \ --name=adb \ -p 8528:8528 \ - -v "$LOCATION"/server.pem:/server.pem \ - -v "$LOCATION"/jwtSecret:/jwtSecret \ - $MOUNT_DATA \ + --volumes-from arangodb-data \ -v /var/run/docker.sock:/var/run/docker.sock \ -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" \ $STARTER_DOCKER_IMAGE \ $STARTER_ARGS \ --docker.net-mode=default \ --docker.container=adb \ - --auth.jwt-secret=/jwtSecret \ + --auth.jwt-secret=/data/jwtSecret \ --starter.address="${GW}" \ --docker.image="${DOCKER_IMAGE}" \ - --starter.local --starter.mode=${STARTER_MODE} --all.log.level=debug --all.log.output=+ --log.verbose + --starter.local --starter.mode=${STARTER_MODE} --all.log.level=debug --all.log.output=+ --log.verbose \ + --all.server.descriptors-minimum=1024 --all.javascript.allow-admin-execute=true wait_server() { @@ -101,6 +97,13 @@ for a in ${COORDINATORS[*]} ; do curl -u root:test --insecure --fail "$SCHEME://$a/_api/version" done +echo "" +echo "" +echo "Copying test ML models into containers..." +for c in $(docker ps -a -f name=adb-.* -q) ; do + docker cp "$LOCATION"/foo.bin "$c":/tmp +done + echo "" echo "" echo "Done, your deployment is reachable at: " diff --git a/docker/jwtHeader b/docker/jwtHeader new file mode 100644 index 00000000..153e1b8a --- /dev/null +++ b/docker/jwtHeader @@ -0,0 +1 @@ +Authorization: bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcmFuZ29kYiIsInNlcnZlcl9pZCI6ImZvbyJ9.QmuhPHkmRPJuHGxsEqggHGRyVXikV44tb5YU_yWEvEM diff --git a/docker/jwtSecret b/docker/jwtSecret new file mode 100644 index 00000000..ea75728b --- /dev/null +++ b/docker/jwtSecret @@ -0,0 +1 @@ +Averysecretword diff --git a/docker/start_db.sh b/docker/start_db.sh index 65718481..4c0c2e9a 100755 --- a/docker/start_db.sh +++ b/docker/start_db.sh @@ -3,8 +3,8 @@ # Configuration environment variables: # STARTER_MODE: (single|cluster|activefailover), default single # DOCKER_IMAGE: ArangoDB docker image, default docker.io/arangodb/arangodb:latest +# STARTER_DOCKER_IMAGE: ArangoDB Starter docker image, default docker.io/arangodb/arangodb-starter:latest # SSL: (true|false), default false -# DATABASE_EXTENDED_NAMES: (true|false), default false # ARANGO_LICENSE_KEY: only required for ArangoDB Enterprise # EXAMPLE: @@ -12,10 +12,10 @@ STARTER_MODE=${STARTER_MODE:=single} DOCKER_IMAGE=${DOCKER_IMAGE:=docker.io/arangodb/arangodb:latest} +STARTER_DOCKER_IMAGE=${STARTER_DOCKER_IMAGE:=docker.io/arangodb/arangodb-starter:latest} SSL=${SSL:=false} -DATABASE_EXTENDED_NAMES=${DATABASE_EXTENDED_NAMES:=false} +COMPRESSION=${COMPRESSION:=false} -STARTER_DOCKER_IMAGE=docker.io/arangodb/arangodb-starter:latest GW=172.28.0.1 docker network create arangodb --subnet 172.28.0.0/16 @@ -26,9 +26,6 @@ docker pull $STARTER_DOCKER_IMAGE docker pull $DOCKER_IMAGE LOCATION=$(pwd)/$(dirname "$0") - -echo "Averysecretword" > "$LOCATION"/jwtSecret -docker run --rm -v "$LOCATION"/jwtSecret:/jwtSecret "$STARTER_DOCKER_IMAGE" auth header --auth.jwt-secret /jwtSecret > "$LOCATION"/jwtHeader AUTHORIZATION_HEADER=$(cat "$LOCATION"/jwtHeader) STARTER_ARGS= @@ -41,36 +38,35 @@ if [ "$STARTER_MODE" == "single" ]; then fi if [ "$SSL" == "true" ]; then - STARTER_ARGS="$STARTER_ARGS --ssl.keyfile=server.pem" + STARTER_ARGS="$STARTER_ARGS --ssl.keyfile=/data/server.pem" SCHEME=https ARANGOSH_SCHEME=http+ssl fi -if [ "$DATABASE_EXTENDED_NAMES" == "true" ]; then - STARTER_ARGS="${STARTER_ARGS} --all.database.extended-names-databases=true" +if [ "$COMPRESSION" == "true" ]; then + STARTER_ARGS="${STARTER_ARGS} --all.http.compress-response-threshold=1" fi -if [ "$USE_MOUNTED_DATA" == "true" ]; then - STARTER_ARGS="${STARTER_ARGS} --starter.data-dir=/data" - MOUNT_DATA="-v $LOCATION/data:/data" -fi +# data volume +docker create -v /data --name arangodb-data alpine:3 /bin/true +docker cp "$LOCATION"/jwtSecret arangodb-data:/data +docker cp "$LOCATION"/server.pem arangodb-data:/data docker run -d \ --name=adb \ -p 8528:8528 \ - -v "$LOCATION"/server.pem:/server.pem \ - -v "$LOCATION"/jwtSecret:/jwtSecret \ - $MOUNT_DATA \ + --volumes-from arangodb-data \ -v /var/run/docker.sock:/var/run/docker.sock \ -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" \ $STARTER_DOCKER_IMAGE \ $STARTER_ARGS \ --docker.net-mode=default \ --docker.container=adb \ - --auth.jwt-secret=/jwtSecret \ + --auth.jwt-secret=/data/jwtSecret \ --starter.address="${GW}" \ --docker.image="${DOCKER_IMAGE}" \ - --starter.local --starter.mode=${STARTER_MODE} --all.log.level=debug --all.log.output=+ --log.verbose --all.server.descriptors-minimum=1024 + --starter.local --starter.mode=${STARTER_MODE} --all.log.level=debug --all.log.output=+ --log.verbose \ + --all.server.descriptors-minimum=1024 --all.javascript.allow-admin-execute=true wait_server() { @@ -101,6 +97,13 @@ for a in ${COORDINATORS[*]} ; do curl -u root:test --insecure --fail "$SCHEME://$a/_api/version" done +echo "" +echo "" +echo "Copying test ML models into containers..." +for c in $(docker ps -a -f name=adb-.* -q) ; do + docker cp "$LOCATION"/foo.bin "$c":/tmp +done + echo "" echo "" echo "Done, your deployment is reachable at: "