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