feat: added gitea workflow
This commit is contained in:
parent
c274500b1a
commit
26670cf190
|
@ -0,0 +1,16 @@
|
|||
name: Gitea Action for testing api server
|
||||
run-name: Compile and test API server
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
run-ci-server:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
- name: Setup go
|
||||
uses: https://github.com/actions/setup-go@v4
|
||||
with:
|
||||
go-version: '>=1.20.1
|
||||
- name: Run API server CI
|
||||
run: bash -c ./server/run-ci.sh
|
|
@ -21,3 +21,4 @@
|
|||
# Go workspace file
|
||||
go.work
|
||||
|
||||
*.log
|
||||
|
|
|
@ -7,10 +7,18 @@ services:
|
|||
POSTGRES_USER: "user"
|
||||
POSTGRES_PASSWORD: "password"
|
||||
POSTGRES_DB: "grepfood"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready", "-d", "db_prod"]
|
||||
interval: 30s
|
||||
timeout: 60s
|
||||
retries: 5
|
||||
start_period: 80s
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- db:/var/lib/postgresql/data
|
||||
- ./mockup:/var/mockup # mount mockup SQL scripts
|
||||
|
||||
volumes:
|
||||
db:
|
||||
name: postgres
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
|
||||
INSERT INTO ingredient (name, icon, price)
|
||||
VALUES
|
||||
('potato', 'potato.png', 399),
|
||||
('tomato', 'tomato.png', 199),
|
||||
('flour', 'flour.png', 050),
|
||||
('water', 'waterglass.png', 005);
|
||||
|
||||
INSERT INTO recipe (name, icon)
|
||||
VALUES
|
||||
('bread', 'bread.png'),
|
||||
('pizza', 'pizza.png'),
|
||||
('cookie', 'cookie.png'),
|
||||
('pasta', 'pasta.png');
|
||||
|
||||
INSERT INTO recipe_ingredient (recipe_id, ingredient_d, amount)
|
||||
VALUES
|
||||
(1, 1, 340),
|
||||
(1, 2, 894),
|
||||
(1, 3, 123),
|
||||
(1, 4, 9),
|
||||
(2, 2, 1),
|
||||
(2, 3, 79),
|
||||
(3, 1, 64),
|
||||
(3, 3, 241),
|
||||
(3, 2, 99);
|
|
@ -0,0 +1,19 @@
|
|||
CREATE TABLE IF NOT EXISTS ingredient (
|
||||
id SERIAL,
|
||||
name VARCHAR(64) UNIQUE NOT NULL,
|
||||
icon VARCHAR(64),
|
||||
price INT,
|
||||
PRIMARY KEY(id));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS recipe (
|
||||
id SERIAL,
|
||||
name VARCHAR(64) UNIQUE NOT NULL,
|
||||
icon VARCHAR(64),
|
||||
PRIMARY KEY(id));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS recipe_ingredient (
|
||||
recipe_id INT NOT NULL,
|
||||
ingredient_d INT NOT NULL,
|
||||
amount INT,
|
||||
FOREIGN KEY (recipe_id) REFERENCES recipe(id),
|
||||
FOREIGN KEY (ingredient_d) REFERENCES ingredient(id));
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker compose up -d
|
||||
|
||||
RETRIES=100
|
||||
|
||||
until docker container exec postgres psql -U user -d grepfood -c "select 1" > /dev/null 2>&1 || [ "$RETRIES" -eq 0 ]; do
|
||||
echo "Waiting for postgres server, $((RETRIES--)) remaining attempts..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Setup mockup data"
|
||||
bash -c ./run-init-mockup.sh
|
||||
|
||||
echo "Loading environment..."
|
||||
set -a
|
||||
source ./.env
|
||||
set +a
|
||||
|
||||
echo "Run API server"
|
||||
go run . > ./server.log 2>&1 &
|
||||
|
||||
echo "wait for api server startup"
|
||||
until curl http://localhost:8080/version > /dev/null 2>&1 || [ "$RETRIES" -eq 0 ]; do
|
||||
echo "Waiting for api server, $((RETRIES--)) remaining attempts..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
bash -c ./tests/run-tests.sh
|
||||
|
||||
echo "Terminating server..."
|
||||
pkill grepfood-server
|
||||
|
||||
echo "Server output following:"
|
||||
echo "-----------------------------"
|
||||
|
||||
cat ./server.log
|
||||
|
||||
echo "-----------------------------"
|
||||
echo "End of server output"
|
||||
docker compose down
|
||||
docker volume rm postgres
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
function run_query() {
|
||||
docker container exec postgres psql -U user -d grepfood --command="$1"
|
||||
}
|
||||
|
||||
function run_file() {
|
||||
docker container exec postgres psql -U user -d grepfood -f "$1"
|
||||
}
|
||||
|
||||
run_file "/var/mockup/tables.sql"
|
||||
run_file "/var/mockup/data.sql"
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
INSERT INTO grepfood.public.ingredient (name, icon, price)
|
||||
VALUES
|
||||
('potato', 'potato.png', 399),
|
||||
('tomato', 'tomato.png', 199),
|
||||
('flour', 'flour.png', 050),
|
||||
('water', 'waterglass.png', 005);
|
||||
|
||||
INSERT INTO grepfood.public.recipe (name, icon)
|
||||
VALUES
|
||||
('bread', 'bread.png'),
|
||||
('pizza', 'pizza.png'),
|
||||
('cookie', 'cookie.png'),
|
||||
('pasta', 'pasta.png');
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
|
||||
function test() {
|
||||
echo "-----------------------------[ TEST ]-----------------------------"
|
||||
printf "running $1\n\n"
|
||||
|
||||
eval "$1"
|
||||
exit_status=$?
|
||||
|
||||
printf "\n\n"
|
||||
|
||||
if [ ! $exit_status -eq 0 ]; then
|
||||
abort "command: $1 failed with: $exit_status"
|
||||
fi
|
||||
}
|
||||
|
||||
test "curl -i http://localhost:8080/version"
|
||||
test "curl -i http://localhost:8080/api/ingredients"
|
||||
test "curl -i http://localhost:8080/api/recipes"
|
||||
test "curl -i http://localhost:8080/api/recipe/bread/ingredients
|
Loading…
Reference in New Issue