stop schedule #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Start WeSQL Database | |
| on: | |
| push: | |
| workflow_dispatch: | |
| # schedule: | |
| # - cron: "0 */4 * * *" | |
| concurrency: | |
| group: start_wesql_database | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Configure AWS CLI | |
| run: | | |
| aws configure set aws_access_key_id ${{ secrets.WESQL_OBJECTSTORE_ACCESS_KEY }} | |
| aws configure set aws_secret_access_key ${{ secrets.WESQL_OBJECTSTORE_SECRET_KEY }} | |
| aws configure set default.region ${{ secrets.WESQL_OBJECTSTORE_REGION }} | |
| - name: Start WeSQL Server | |
| run: | | |
| export WESQL_OBJECTSTORE_BUCKET=${{ secrets.WESQL_OBJECTSTORE_BUCKET }} | |
| export WESQL_OBJECTSTORE_REGION=${{ secrets.WESQL_OBJECTSTORE_REGION }} | |
| export WESQL_OBJECTSTORE_ACCESS_KEY=${{ secrets.WESQL_OBJECTSTORE_ACCESS_KEY }} | |
| export WESQL_OBJECTSTORE_SECRET_KEY=${{ secrets.WESQL_OBJECTSTORE_SECRET_KEY }} | |
| docker run -itd --network host --name wesql-server \ | |
| -p 3306:3306 \ | |
| -e MYSQL_CUSTOM_CONFIG="[mysqld]\n\ | |
| port=3306\n\ | |
| log-bin=binlog\n\ | |
| gtid_mode=ON\n\ | |
| enforce_gtid_consistency=ON\n\ | |
| log_slave_updates=ON\n\ | |
| binlog_format=ROW\n\ | |
| objectstore_provider='aws'\n\ | |
| repo_objectstore_id='tutorial'\n\ | |
| objectstore_bucket='${WESQL_OBJECTSTORE_BUCKET}'\n\ | |
| objectstore_region='${WESQL_OBJECTSTORE_REGION}'\n\ | |
| branch_objectstore_id='main'" \ | |
| -v ~/wesql-local-dir:/data/mysql \ | |
| -e WESQL_CLUSTER_MEMBER='127.0.0.1:13306' \ | |
| -e MYSQL_ROOT_PASSWORD=${{ secrets.WESQL_ROOT_PASSWORD }} \ | |
| -e WESQL_OBJECTSTORE_ACCESS_KEY=${WESQL_OBJECTSTORE_ACCESS_KEY} \ | |
| -e WESQL_OBJECTSTORE_SECRET_KEY=${WESQL_OBJECTSTORE_SECRET_KEY} \ | |
| apecloud/wesql-server:8.0.35-0.1.0_beta3.38 | |
| - name: Wait for MySQL port | |
| run: | | |
| for i in {1..60}; do | |
| if nc -z localhost 3306; then | |
| echo "MySQL port 3306 is ready!" | |
| exit 0 | |
| fi | |
| echo "Waiting for MySQL port 3306..." | |
| sleep 5 | |
| done | |
| echo "Timeout waiting for MySQL port 3306" | |
| exit 1 | |
| - name: Start and parse Serveo tunnel | |
| run: | | |
| # Start Serveo SSH tunnel for MySQL (port 3306) | |
| nohup ssh -o StrictHostKeyChecking=no -R 0:localhost:3306 serveo.net > serveo.log 2>&1 & | |
| sleep 5 | |
| # Parse the tunnel information | |
| TUNNEL_LINE=$(grep 'Forwarding TCP' serveo.log || true) | |
| if [ -z "$TUNNEL_LINE" ]; then | |
| echo "No forwarding line found in serveo.log" | |
| exit 1 | |
| fi | |
| HOST="serveo.net" | |
| PORT=$(echo "$TUNNEL_LINE" | tr -d '\r' | sed 's/[[:space:]]*$//' | grep -oE '[0-9]+$' || true) | |
| if [ -z "$PORT" ]; then | |
| echo "No port found in the forwarding line" | |
| exit 1 | |
| fi | |
| echo "MySQL Public Access:" | |
| echo "Host: $HOST" | |
| echo "Port: $PORT" | |
| echo "Connect: mysql -h $HOST -P $PORT -u root -p" | |
| # Export HOST and PORT for the next step | |
| echo "HOST=$HOST" >> $GITHUB_ENV | |
| echo "PORT=$PORT" >> $GITHUB_ENV | |
| - name: Write Connection Info to S3 | |
| run: | | |
| cat << EOF > connection_info.txt | |
| host=$HOST | |
| port=$PORT | |
| username=root | |
| password=${{ secrets.WESQL_ROOT_PASSWORD }} | |
| mysql_cli=mysql -h $HOST -P $PORT -u root -p${{ secrets.WESQL_ROOT_PASSWORD }} | |
| EOF | |
| aws s3 cp connection_info.txt s3://${{ secrets.WESQL_OBJECTSTORE_BUCKET }}/connection_info.txt | |
| echo "Connection properties written to s3://${{ secrets.WESQL_OBJECTSTORE_BUCKET }}/connection_info.txt" | |
| - name: Keep session running | |
| run: | | |
| echo "Keep session running" | |
| echo "You can review the connection info in the S3 bucket by reading the file connection_info.txt" | |
| echo "aws s3 cp s3://wesql-free-test1/connection_info.txt -" | |
| tail -f /dev/null |