Skip to content

Commit

Permalink
Switch from MySQL to sqlite for development and test environments (to…
Browse files Browse the repository at this point in the history
… simplify development and testing)
  • Loading branch information
elohanlon committed Nov 26, 2024
1 parent aa2e68a commit a031350
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 48 deletions.
31 changes: 1 addition & 30 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]
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
Expand All @@ -49,21 +32,9 @@ 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/database.template.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
Expand Down
12 changes: 0 additions & 12 deletions config/database.gh-actions.yml

This file was deleted.

10 changes: 4 additions & 6 deletions config/database.template.yml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit a031350

Please sign in to comment.