diff --git a/scripts/cli-migrations/v3/.gitignore b/scripts/cli-migrations/v3/.gitignore index 94df10e62602c..af0b5ddad289c 100644 --- a/scripts/cli-migrations/v3/.gitignore +++ b/scripts/cli-migrations/v3/.gitignore @@ -1,2 +1 @@ -cli-hasura-linux-amd64 manifest.yaml \ No newline at end of file diff --git a/scripts/cli-migrations/v3/Dockerfile b/scripts/cli-migrations/v3/Dockerfile index e01fd4c62e8c6..6ee3a5556fede 100644 --- a/scripts/cli-migrations/v3/Dockerfile +++ b/scripts/cli-migrations/v3/Dockerfile @@ -2,6 +2,9 @@ ARG SERVER_IMAGE_TAG FROM hasura/graphql-engine:${SERVER_IMAGE_TAG} +## Use the following image for ARM +# FROM fedormelexin/graphql-engine-arm64:${SERVER_IMAGE_TAG} + RUN apt-get update && apt-get install -y netcat # set an env var to let the cli know that @@ -11,6 +14,9 @@ ENV HASURA_GRAPHQL_SHOW_UPDATE_NOTIFICATION=false COPY docker-entrypoint.sh /bin/ COPY cli-hasura-linux-amd64 /bin/hasura-cli +## Use the following image for ARM +# COPY cli-hasura-linux-arm64 /bin/hasura-cli + RUN chmod +x /bin/hasura-cli # set an env var to let the cli know that @@ -19,4 +25,4 @@ ENV HASURA_GRAPHQL_CLI_ENVIRONMENT=server-on-docker ENTRYPOINT ["docker-entrypoint.sh"] -CMD ["graphql-engine", "serve"] \ No newline at end of file +# CMD ["graphql-engine", "serve"] diff --git a/scripts/cli-migrations/v3/README.md b/scripts/cli-migrations/v3/README.md index 30232d0a5da51..b479b0afa8e70 100644 --- a/scripts/cli-migrations/v3/README.md +++ b/scripts/cli-migrations/v3/README.md @@ -109,3 +109,24 @@ If it has been stored in a directory other than the default then it can be confi - `HASURA_GRAPHQL_MIGRATIONS_SERVER_TIMEOUT` (default=`30s`) Specify the server timeout threshold. + +## Devfolio Specific + +### How to publish AMD64 image + +``` +docker build --build-arg SERVER_IMAGE_TAG=v2.0.8 --no-cache -t ghcr.io/devfolioco/graphql-engine:v2.0.8.cli-migrations-v3-amd64 . + +docker push ghcr.io/devfolioco/graphql-engine:v2.0.8.cli-migrations-v3-amd64 + +``` + +### How to publish ARM64 image + +Make sure the code in the Dockerfile is configured to use the ARM64 files and ARM64 version of Hasura + +``` +docker build --build-arg SERVER_IMAGE_TAG=v2.0.8 --no-cache -t ghcr.io/devfolioco/graphql-engine:v2.0.8.cli-migrations-v3-arm64 . + +docker push ghcr.io/devfolioco/graphql-engine:v2.0.8.cli-migrations-v3-arm64 +``` diff --git a/scripts/cli-migrations/v3/cli-hasura-linux-amd64 b/scripts/cli-migrations/v3/cli-hasura-linux-amd64 new file mode 100644 index 0000000000000..5d224ce2f08ae Binary files /dev/null and b/scripts/cli-migrations/v3/cli-hasura-linux-amd64 differ diff --git a/scripts/cli-migrations/v3/cli-hasura-linux-arm64 b/scripts/cli-migrations/v3/cli-hasura-linux-arm64 new file mode 100644 index 0000000000000..fc99025fa5647 Binary files /dev/null and b/scripts/cli-migrations/v3/cli-hasura-linux-arm64 differ diff --git a/scripts/cli-migrations/v3/docker-entrypoint.sh b/scripts/cli-migrations/v3/docker-entrypoint.sh index 4b939e03afe97..0ca6ad780edd3 100755 --- a/scripts/cli-migrations/v3/docker-entrypoint.sh +++ b/scripts/cli-migrations/v3/docker-entrypoint.sh @@ -11,6 +11,7 @@ log() { DEFAULT_MIGRATIONS_DIR="/hasura-migrations" DEFAULT_METADATA_DIR="/hasura-metadata" +DEFAULT_SEEDS_DIR="/hasura-seeds" TEMP_PROJECT_DIR="/tmp/hasura-project" # Use 9691 port for running temporary instance. @@ -62,6 +63,27 @@ if [ -z ${HASURA_GRAPHQL_METADATA_DIR+x} ]; then HASURA_GRAPHQL_METADATA_DIR="$DEFAULT_METADATA_DIR" fi +# check if seeds directory is set, default otherwise +if [ -z ${HASURA_GRAPHQL_SEEDS_DIR+x} ]; then + log "migrations-startup" "env var HASURA_GRAPHQL_SEEDS_DIR is not set, defaulting to $DEFAULT_SEEDS_DIR" + HASURA_GRAPHQL_SEEDS_DIR="$DEFAULT_SEEDS_DIR" +fi + +# apply migrations if the directory exist +if [ -d "$HASURA_GRAPHQL_MIGRATIONS_DIR" ]; then + log "migrations-apply" "applying migrations from $HASURA_GRAPHQL_MIGRATIONS_DIR" + mkdir -p "$TEMP_PROJECT_DIR" + cp -a "$HASURA_GRAPHQL_MIGRATIONS_DIR/." "$TEMP_PROJECT_DIR/migrations/" + cd "$TEMP_PROJECT_DIR" + echo "version: 3" > config.yaml + echo "endpoint: http://localhost:$HASURA_GRAPHQL_MIGRATIONS_SERVER_PORT" >> config.yaml + hasura-cli migrate apply --all-databases + log "migrations-apply" "reloading metadata" + hasura-cli metadata reload +else + log "migrations-apply" "directory $HASURA_GRAPHQL_MIGRATIONS_DIR does not exist, skipping migrations" +fi + # apply metadata if the directory exist if [ -d "$HASURA_GRAPHQL_METADATA_DIR" ]; then rm -rf "TEMP_PROJECT_DIR" @@ -77,19 +99,19 @@ else log "migrations-apply" "directory $HASURA_GRAPHQL_METADATA_DIR does not exist, skipping metadata" fi -# apply migrations if the directory exist -if [ -d "$HASURA_GRAPHQL_MIGRATIONS_DIR" ]; then - log "migrations-apply" "applying migrations from $HASURA_GRAPHQL_MIGRATIONS_DIR" +# apply seeds if the directory exist +if [ -d "$HASURA_GRAPHQL_SEEDS_DIR" ]; then + log "seeds-apply" "applying seeds from $HASURA_GRAPHQL_SEEDS_DIR" mkdir -p "$TEMP_PROJECT_DIR" - cp -a "$HASURA_GRAPHQL_MIGRATIONS_DIR/." "$TEMP_PROJECT_DIR/migrations/" + cp -a "$HASURA_GRAPHQL_SEEDS_DIR/." "$TEMP_PROJECT_DIR/seeds/" cd "$TEMP_PROJECT_DIR" echo "version: 3" > config.yaml echo "endpoint: http://localhost:$HASURA_GRAPHQL_MIGRATIONS_SERVER_PORT" >> config.yaml - hasura-cli migrate apply --all-databases - log "migrations-apply" "reloading metadata" - hasura-cli metadata reload + hasura-cli seed apply --database-name default + # log "seeds-apply" "reloading metadata" + # hasura-cli metadata reload else - log "migrations-apply" "directory $HASURA_GRAPHQL_MIGRATIONS_DIR does not exist, skipping migrations" + log "seeds-apply" "directory $HASURA_GRAPHQL_SEEDS_DIR does not exist, skipping seeds" fi # kill graphql engine that we started earlier