From 909b10d51c5d4a8f3936abeb27e6b08927c7fbc0 Mon Sep 17 00:00:00 2001 From: Eric O Date: Tue, 26 Nov 2024 12:10:56 -0500 Subject: [PATCH] Switch from MySQL to sqlite for development and test environments (to simplify development and testing) --- .github/workflows/ci.yml | 30 ------------------------------ config/database.gh-actions.yml | 12 ------------ config/database.template.yml | 10 ++++------ 3 files changed, 4 insertions(+), 48 deletions(-) delete mode 100644 config/database.gh-actions.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76afa13..72818a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,26 +13,9 @@ jobs: node: ['14', '16'] env: RAILS_ENV: test - MYSQL_HOST: 127.0.0.1 - MYSQL_PORT: 3306 - MYSQL_VERSION: 5.7 - MYSQL_DATABASE: hours_test - MYSQL_ROOT_PASSWORD: rootpassword - MYSQL_USER: user - MYSQL_USER_PASSWORD: password NOKOGIRI_USE_SYSTEM_LIBRARIES: true steps: - # Set up MySQL first because it can take some time to start up - - uses: mirromutth/mysql-action@v1.1 - with: - host port: ${{ env.MYSQL_PORT }} - container port: ${{ env.MYSQL_PORT }} - character set server: 'utf8mb4' - mysql version: ${{ env.MYSQL_VERSION }} - collation server: 'utf8mb4_general_ci' - mysql database: ${{ env.MYSQL_DATABASE }} - mysql root password: ${{ env.MYSQL_ROOT_PASSWORD }} - uses: actions/checkout@v2 - name: Install libxslt for nokogiri gem (required for version < 1.11) run: sudo apt-get install -y libxml2-dev libxslt-dev @@ -49,21 +32,8 @@ jobs: node-version: ${{ matrix.node }} - run: npm install -g yarn - run: yarn install - - run: cp config/database.gh-actions.yml config/database.yml - run: cp config/secrets.template.yml config/secrets.yml - run: cp config/wifi_density.template.yml config/wifi_density.yml - # Before we run any MySQL-related commands, make sure that MySQL has started - - name: Wait for MySQL to start - run: | - for i in 1 2 3 4 5; do mysqladmin ping -u root -p${{ env.MYSQL_ROOT_PASSWORD }} -h ${{ env.MYSQL_HOST }} --port ${{ env.MYSQL_PORT }} && break || sleep 5; done - # Run one final time to return success or error status (cancelling CI run if we get an error status) - mysqladmin ping -u root -p${{ env.MYSQL_ROOT_PASSWORD }} -h ${{ env.MYSQL_HOST }} --port ${{ env.MYSQL_PORT }} - - name: Grant database permissions - run: | - mysql -u root -p${{ env.MYSQL_ROOT_PASSWORD }} -h ${{ env.MYSQL_HOST }} --port ${{ env.MYSQL_PORT }} -e "CREATE USER '${{ env.MYSQL_USER }}'@'%' IDENTIFIED BY '${{ env.MYSQL_USER_PASSWORD }}';"; - mysql -u root -p${{ env.MYSQL_ROOT_PASSWORD }} -h ${{ env.MYSQL_HOST }} --port ${{ env.MYSQL_PORT }} -e "GRANT ALL PRIVILEGES ON ${{ env.MYSQL_DATABASE }}.* TO '${{ env.MYSQL_USER }}'@'%';"; - - name: Database user connection test - run: mysql -u ${{ env.MYSQL_USER }} -p${{ env.MYSQL_USER_PASSWORD }} -h ${{ env.MYSQL_HOST }} --port ${{ env.MYSQL_PORT }} -e "SHOW DATABASES;"; - run: RAILS_ENV=test bundle exec rake db:schema:load --trace - run: RAILS_ENV=test bundle exec rake db:test:prepare - name: Run tests diff --git a/config/database.gh-actions.yml b/config/database.gh-actions.yml deleted file mode 100644 index 00fca4c..0000000 --- a/config/database.gh-actions.yml +++ /dev/null @@ -1,12 +0,0 @@ -# Warning: The database defined as "test" will be erased and -# re-generated from your development database when you run "rake". -# Do not set this db to the same as development or production. - -test: - adapter: mysql2 - host: 127.0.0.1 # GitHub Actions uses Docker, so we use 172.17.0.1 instead of 127.0.0.1 - port: 3306 - pool: 5 - database: hours_test - username: user - password: password diff --git a/config/database.template.yml b/config/database.template.yml index 90ab6ae..a33fe83 100644 --- a/config/database.template.yml +++ b/config/database.template.yml @@ -1,17 +1,15 @@ default: &default - adapter: mysql2 + adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> - database: "hours" - username: "user" - password: "password" + timeout: 5000 development: <<: *default - database: "hours_dev" + database: db/development.sqlite3 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default - database: "hours_test" + database: db/test.sqlite3