diff --git a/README.md b/README.md index a5d15d7..0d5668e 100644 --- a/README.md +++ b/README.md @@ -246,6 +246,17 @@ jobs: **Caveat:** due to [this issue](https://github.com/docker-library/mongo/issues/211), you **cannot enable user creation AND replica sets** initially. Therefore, if you use this action to setup a replica set, please create your users through a separate script. +### Using a Custom Mongo Image +You can utilize an alternative Redis image using the `mongodb-image` input: + +```yaml + - name: Start MongoDB + uses: supercharge/mongodb-github-action@1.11.0 + with: + # Here we are using an image from Amazon's ECR rather than the default image from Docker Hub + mongodb-image: 'public.ecr.aws/docker/library/mongo' + mongodb-version: ${{ matrix.mongodb-version }} +``` ## License MIT © [Supercharge](https://superchargejs.com) diff --git a/action-types.yml b/action-types.yml index 467fe41..b03fcf8 100644 --- a/action-types.yml +++ b/action-types.yml @@ -1,5 +1,7 @@ # See https://github.com/krzema12/github-actions-typing inputs: + mongodb-image: + type: string mongodb-version: type: string mongodb-replica-set: diff --git a/action.yml b/action.yml index 170e6a9..2b237cb 100644 --- a/action.yml +++ b/action.yml @@ -6,6 +6,11 @@ branding: color: 'green' inputs: + mongodb-image: + description: 'MongoDB image to use (defaults to using "mongo" from Docker Hub but you could also use an image from another repository such as Amazons "public.ecr.aws/docker/library/mongo")' + required: false + default: 'mongo' + mongodb-version: description: 'MongoDB version to use (default "latest")' required: false @@ -45,6 +50,7 @@ runs: using: 'docker' image: 'Dockerfile' args: + - ${{ inputs.mongodb-image }} - ${{ inputs.mongodb-version }} - ${{ inputs.mongodb-replica-set }} - ${{ inputs.mongodb-port }} diff --git a/start-mongodb.sh b/start-mongodb.sh index 28523ee..50f3f9a 100644 --- a/start-mongodb.sh +++ b/start-mongodb.sh @@ -1,17 +1,25 @@ #!/bin/sh # Map input values from the GitHub Actions workflow to shell variables -MONGODB_VERSION=$1 -MONGODB_REPLICA_SET=$2 -MONGODB_PORT=$3 -MONGODB_DB=$4 -MONGODB_USERNAME=$5 -MONGODB_PASSWORD=$6 -MONGODB_CONTAINER_NAME=$7 +MONGODB_IMAGE=$1 +MONGODB_VERSION=$2 +MONGODB_REPLICA_SET=$3 +MONGODB_PORT=$4 +MONGODB_DB=$5 +MONGODB_USERNAME=$6 +MONGODB_PASSWORD=$7 +MONGODB_CONTAINER_NAME=$8 # `mongosh` is used starting from MongoDB 5.x MONGODB_CLIENT="mongosh --quiet" +if [ -z "$MONGODB_IMAGE" ]; then + echo "" + echo "Missing MongoDB image in the [mongodb-image] input. Received value: $MONGODB_IMAGE" + echo "" + + exit 2 +fi if [ -z "$MONGODB_VERSION" ]; then echo "" @@ -21,6 +29,7 @@ if [ -z "$MONGODB_VERSION" ]; then exit 2 fi +echo "::group::Using MongoDB Docker image $MONGODB_IMAGE:$MONGODB_VERSION" echo "::group::Selecting correct MongoDB client" if [ "`echo $MONGODB_VERSION | cut -c 1`" -le "4" ]; then @@ -83,7 +92,7 @@ if [ -z "$MONGODB_REPLICA_SET" ]; then echo " - container-name [$MONGODB_CONTAINER_NAME]" echo "" - docker run --name $MONGODB_CONTAINER_NAME --publish $MONGODB_PORT:$MONGODB_PORT -e MONGO_INITDB_DATABASE=$MONGODB_DB -e MONGO_INITDB_ROOT_USERNAME=$MONGODB_USERNAME -e MONGO_INITDB_ROOT_PASSWORD=$MONGODB_PASSWORD --detach mongo:$MONGODB_VERSION --port $MONGODB_PORT + docker run --name $MONGODB_CONTAINER_NAME --publish $MONGODB_PORT:$MONGODB_PORT -e MONGO_INITDB_DATABASE=$MONGODB_DB -e MONGO_INITDB_ROOT_USERNAME=$MONGODB_USERNAME -e MONGO_INITDB_ROOT_PASSWORD=$MONGODB_PASSWORD --detach $MONGODB_IMAGE:$MONGODB_VERSION --port $MONGODB_PORT if [ $? -ne 0 ]; then echo "Error starting MongoDB Docker container" @@ -104,7 +113,7 @@ echo " - replica set [$MONGODB_REPLICA_SET]" echo "" -docker run --name $MONGODB_CONTAINER_NAME --publish $MONGODB_PORT:$MONGODB_PORT --detach mongo:$MONGODB_VERSION --port $MONGODB_PORT --replSet $MONGODB_REPLICA_SET +docker run --name $MONGODB_CONTAINER_NAME --publish $MONGODB_PORT:$MONGODB_PORT --detach $MONGODB_IMAGE:$MONGODB_VERSION --port $MONGODB_PORT --replSet $MONGODB_REPLICA_SET if [ $? -ne 0 ]; then echo "Error starting MongoDB Docker container"