github.com/yaoapp/kun@v0.9.0/.github/actions/setup-db/entrypoint.sh (about) 1 #!/bin/sh 2 3 docker_run="docker run" 4 5 startMySQL() { 6 VERSION=$1 7 echo "Start MySQL $VERSION" 8 docker_run="$docker_run -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_USER=$INPUT_USER -e MYSQL_PASSWORD=$INPUT_PASSWORD" 9 docker_run="$docker_run -e MYSQL_DATABASE=$INPUT_DB" 10 docker_run="$docker_run -d -p 3306:3306 mysql:$VERSION --port=3306" 11 12 if [ "$VERSION" = "5.6" ]; then 13 docker_run="$docker_run --character-set-server=utf8 --collation-server=utf8_general_ci" 14 else 15 docker_run="$docker_run --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci" 16 fi 17 18 sh -c "$docker_run" 19 20 DB_HOST="tcp(127.0.0.1:3306)/$INPUT_DB?charset=utf8mb4&parseTime=True&loc=Local" 21 DB_USER=$INPUT_USER 22 echo "DB_HOST=$DB_HOST" >> $GITHUB_ENV 23 echo "DB_USER=$DB_USER" >> $GITHUB_ENV 24 echo "DB_DRIVER=mysql" >> $GITHUB_ENV 25 echo "DB_NAME=mysql$VERSION" >> $GITHUB_ENV 26 echo "$DB_HOST" 27 } 28 29 startPostgres() { 30 VERSION=$1 31 echo "Start Postgres $VERSION" 32 docker_run="$docker_run --name postgres_$VERSION" 33 docker_run="$docker_run -e POSTGRES_DB=$INPUT_DB" 34 docker_run="$docker_run -e POSTGRES_USER=$INPUT_USER" 35 docker_run="$docker_run -e POSTGRES_PASSWORD=$INPUT_PASSWORD" 36 docker_run="$docker_run -d -p 5432:5432 postgres:$VERSION" 37 sh -c "$docker_run" 38 39 # waiting for postgres ready 40 timeout 90s sh -c "until docker exec postgres_$VERSION pg_isready ; do sleep 5 ; done" 41 42 DB_HOST="127.0.0.1/$INPUT_DB?sslmode=disable" 43 DB_USER=$INPUT_USER 44 echo "DB_HOST=$DB_HOST" >> $GITHUB_ENV 45 echo "DB_USER=$DB_USER" >> $GITHUB_ENV 46 echo "DB_DRIVER=postgres" >> $GITHUB_ENV 47 echo "DB_NAME=postgres$VERSION" >> $GITHUB_ENV 48 echo "$DB_HOST" 49 } 50 51 startSQLite3() { 52 echo "Start SQLite3" 53 echo "DB_HOST=$INPUT_DB.db" >> $GITHUB_ENV 54 echo "DB_DRIVER=sqlite3" >> $GITHUB_ENV 55 echo "DB_NAME=sqlite3" >> $GITHUB_ENV 56 echo "$DB_HOST" 57 } 58 59 # MySQL8.0, MySQL5.7, Postgres9.6, Postgres14, SQLite3 60 case $INPUT_KIND in 61 MySQL8.0) 62 startMySQL 8.0 63 ;; 64 MySQL5.7) 65 startMySQL 5.7 66 ;; 67 MySQL5.6) 68 startMySQL 5.6 69 ;; 70 Postgres9.6) 71 startPostgres 9.6 72 ;; 73 Postgres14.0) 74 startPostgres 14.0 75 ;; 76 SQLite3) 77 startSQLite3 78 ;; 79 esac