db update 2 #33
Workflow file for this run
This file contains 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: 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 |