Skip to content

db update 2

db update 2 #33

Workflow file for this run

name: compile workflow
on:
pull_request:
branches:
- main
jobs:
setup-mysql:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install MySQL Server
run: |
sudo apt-get update
sudo apt-get install -y mysql-server
- name: Start MySQL Service
run: |
sudo systemctl start mysql
sudo systemctl status mysql
- name: Verify MySQL Root Access (Without Password)
run: |
sudo mysql -e "SELECT user, authentication_string, plugin, host FROM mysql.user;"
- name: Configure Root User for Password Authentication (Optional)
run: |
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${{ secrets.MYSQL_ROOT_PASSWORD }}';"
sudo mysql -e "FLUSH PRIVILEGES;"
- name: Delete Anonymous Users
run: |
sudo mysql -e "DELETE FROM mysql.user WHERE User='';"
sudo mysql -e "FLUSH PRIVILEGES;"
- name: Disallow Remote Root Access
run: |
sudo mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
sudo mysql -e "FLUSH PRIVILEGES;"
- name: Drop Test Database
run: |
sudo mysql -e "DROP DATABASE IF EXISTS test;"
sudo mysql -e "FLUSH PRIVILEGES;"
- name: Create Application Database
run: |
sudo mysql -e "CREATE DATABASE IF NOT EXISTS restapi;"
- name: Create Application User and Grant Privileges
run: |
sudo mysql -e "CREATE USER IF NOT EXISTS '${{ secrets.DB_USER }}'@'localhost' IDENTIFIED BY '${{ secrets.DB_PASSWORD }}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON restapi.* TO '${{ secrets.DB_USER }}'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
- name: Test App
run: npm test healthz.test.js
test:
name: Integration test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 14
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: npm-deps-${{ hashFiles('**/package-lock.json') }}
- name: Install dependencies
run: npm install
- name: Setup .env file (Repeat for Integration Tests)
run: |
echo "DB_USER=${{ secrets.DB_USER }}" >> .env
echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env
echo "DB_NAME=${{ secrets.DB_NAME }}" >> .env
echo "DB_HOST=${{ secrets.DB_HOST }}" >> .env
echo "PORT=${{ secrets.PORT }}" >> .env
echo "TOKEN_SECRET=${{ secrets.TOKEN_SECRET }}" >> .env
# Assuming MySQL setup remains valid from the 'build' job, you may not need to repeat MySQL setup here.
# If this job runs on a separate runner or needs its own MySQL setup, repeat the MySQL installation and configuration steps here.
- name: Test App (Integration Tests)
run: npm test user.test.js