diff --git a/packaging/README.md b/packaging/README.md index 48fbbe830d9c3..5ce98f02ba5f3 100644 --- a/packaging/README.md +++ b/packaging/README.md @@ -22,4 +22,14 @@ This acts as base image for building `hasura/graphql-engine` image. It is generally published with format `hasura/graphql-engine-base:..` where - `` is the `sha256sum` of the dockerfile used to build the image - `OS` is the operating system. It could be any of these values: `ubuntu` -- `ARCH` is the architecture. It could be any of these values: `amd64`, `arm64` \ No newline at end of file +- `ARCH` is the architecture. It could be any of these values: `amd64`, `arm64` +- `OS` is the operating system. It could be any of these values: `debian`, `ubuntu`, `centos` +- `ARCH` is the architecture. It could be any of these values: `amd64`, `arm64` + +## Devfolio Specific + +### How to publish images + +``` +docker buildx build --build-arg BASE_IMAGE=hasura/graphql-engine:v2.20.1 --no-cache -t ghcr.io/devfolioco/graphql-engine:v2.20.1.cli-migrations-v3 --platform linux/amd64,linux/arm64 --push . +``` diff --git a/packaging/cli-migrations/v3/.gitignore b/packaging/cli-migrations/v3/.gitignore index 94df10e62602c..10fd06c472804 100644 --- a/packaging/cli-migrations/v3/.gitignore +++ b/packaging/cli-migrations/v3/.gitignore @@ -1,2 +1 @@ -cli-hasura-linux-amd64 -manifest.yaml \ No newline at end of file +manifest.yaml diff --git a/packaging/cli-migrations/v3/Dockerfile b/packaging/cli-migrations/v3/Dockerfile index 3d9371c3ecdfd..f27ad4bc42c38 100644 --- a/packaging/cli-migrations/v3/Dockerfile +++ b/packaging/cli-migrations/v3/Dockerfile @@ -1,6 +1,8 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} +ARG TARGETARCH + # yum update uses --nobest option to tackle https://github.com/hasura/graphql-engine-mono/issues/4096 RUN { apt-get update && apt-get install -y netcat; } \ || { yum update -y --nobest && yum install -y nc; } @@ -18,7 +20,7 @@ RUN mkdir -p /.hasura \ ENV HASURA_GRAPHQL_SHOW_UPDATE_NOTIFICATION=false COPY docker-entrypoint.sh /bin/ -COPY hasura-cli /bin/hasura-cli +COPY cli-hasura-linux-${TARGETARCH} /bin/hasura-cli RUN chmod +x /bin/hasura-cli @@ -30,4 +32,5 @@ ENV HGE_BINARY=${HGE_BINARY} ENTRYPOINT ["docker-entrypoint.sh"] -CMD $HGE_BINARY serve +# CMD $HGE_BINARY serve +# CMD ["graphql-engine", "serve"] diff --git a/packaging/cli-migrations/v3/cli-hasura-linux-amd64 b/packaging/cli-migrations/v3/cli-hasura-linux-amd64 new file mode 100644 index 0000000000000..3244315d70f4b Binary files /dev/null and b/packaging/cli-migrations/v3/cli-hasura-linux-amd64 differ diff --git a/packaging/cli-migrations/v3/cli-hasura-linux-arm64 b/packaging/cli-migrations/v3/cli-hasura-linux-arm64 new file mode 100644 index 0000000000000..9714c4f8fc855 Binary files /dev/null and b/packaging/cli-migrations/v3/cli-hasura-linux-arm64 differ diff --git a/packaging/cli-migrations/v3/docker-entrypoint.sh b/packaging/cli-migrations/v3/docker-entrypoint.sh index 6c8ad6fd9dc9e..02a99bbffcdac 100755 --- a/packaging/cli-migrations/v3/docker-entrypoint.sh +++ b/packaging/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" if [ -z ${HGE_BINARY+x} ]; then @@ -67,6 +68,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" @@ -82,19 +104,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