Skip to content

Commit 109c8bd

Browse files
authored
Initial commit
0 parents  commit 109c8bd

15 files changed

Lines changed: 734 additions & 0 deletions

.github/workflows/1_helloworld.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: "1. Согласована и сформулирована тема курсовой"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check_hello_world_dir_not_empty:
10+
name: "Проверка наличия каталога ./hello_world/"
11+
runs-on: ubuntu-24.04
12+
steps:
13+
- uses: actions/checkout@v4
14+
name: Check out current commit
15+
16+
- name: check
17+
run: .github/workflows/scripts/1_helloworld.sh

.github/workflows/2_usecase.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: "2. Usecase"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
gollum:
8+
9+
jobs:
10+
check_mockup_uc_wiki:
11+
name: 'Проверка наличия вики-страницы "Макет и сценарий использования" и разделов "Макет UI" "Сценарий использования" в ней'
12+
runs-on: ubuntu-24.04
13+
steps:
14+
- uses: actions/checkout@v4
15+
name: Check wiki
16+
with:
17+
repository: ${{github.repository}}.wiki
18+
- name: check
19+
# Не используем скрипт, так как этого bash файла в репозитории wiki не будет.
20+
run: |
21+
page="Макет-и-сценарий-использования.md"
22+
mockup_header="Макет UI"
23+
uc_header="Сценарий использования"
24+
25+
if ! [[ -f "${page}" ]]; then
26+
echo "::error::Предварительная проверка не пройдена - не найдена вики-страница \"Макет и сценарий использования\""
27+
exit 1
28+
fi
29+
30+
if ! cat "${page}" | grep -q "${mockup_header}"; then
31+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${mockup_header}"
32+
exit 1
33+
fi
34+
35+
if ! cat "${page}" | grep -q "${uc_header}"; then
36+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${uc_header}"
37+
exit 1
38+
fi
39+
40+
if ! cat "${page}" | grep -iq "импорт"; then
41+
echo "::error::Предварительная проверка не пройдена - не найден сценарий, связанный с импортом данных в систему"
42+
exit 1
43+
fi
44+
45+
if ! cat "${page}" | grep -iq "экспорт"; then
46+
echo "::error::Предварительная проверка не пройдена - не найден сценарий, связанный с экспортом данных в систему"
47+
exit 1
48+
fi
49+
50+
if ! cat "${page}" | grep -iq "статистик"; then
51+
echo "::error::Предварительная проверка не пройдена - не найден сценарий, связанный с подсчетом статистики в системе"
52+
exit 1
53+
fi
54+
55+
if ! cat "${page}" | grep -iq '!\[[^]]*\](http[^)]*)'; then
56+
echo "::error::Предварительная проверка не пройдена - не найдено изображение макета из репозитория. Вставьте его через ![название_картинки](полная_ссылка)."
57+
exit 1
58+
fi
59+
60+
echo "::notice::Предварительная проверка пройдена - вики-страница найдена, нужные заголовки присутствуют"

.github/workflows/3_data_model.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: "3. Модель данных"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
gollum:
8+
9+
jobs:
10+
check_data_model:
11+
name: 'Проверка наличия вики-страницы "Модель данных" и разделов "Нереляционная модель", "Реляционная модель", "Сравнение моделей", "Вывод" в ней'
12+
runs-on: ubuntu-24.04
13+
steps:
14+
- uses: actions/checkout@v4
15+
name: Check wiki
16+
with:
17+
repository: ${{github.repository}}.wiki
18+
- name: check
19+
# Не используем скрипт, так как этого bash файла в репозитории wiki не будет.
20+
run: |
21+
page="Модель-данных.md"
22+
nosql_model="Нереляционная модель"
23+
sql_model="Реляционная модель"
24+
comparison="Сравнение моделей"
25+
conclusion="Вывод"
26+
query_examples="Примеры запросов"
27+
data_examples="Примеры данных"
28+
redundancy="Избыточность данных"
29+
30+
if ! [[ -f "${page}" ]]; then
31+
echo "::error::Предварительная проверка не пройдена - не найдена вики-страница \"Модель данных\""
32+
exit 1
33+
fi
34+
35+
if ! cat "${page}" | grep -q "${nosql_model}"; then
36+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${nosql_model}"
37+
exit 1
38+
fi
39+
40+
if ! cat "${page}" | grep -q "${sql_model}"; then
41+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${sql_model}"
42+
exit 1
43+
fi
44+
45+
image_count=`cat "${page}" | grep '!\[[^]]*\](http[^)]*)' | wc -l`
46+
if [[ ${image_count} -lt 2 ]]; then
47+
echo "::error::Предварительная проверка не пройдена - не найдены изображения для схем моделей данных. Для реляционной и нереляционной модели необходимо разместить изображения схем моделей данных. Вставьте их через ![название_картинки](полная_ссылка)."
48+
exit 1
49+
fi
50+
51+
query_examples_count=`cat "${page}" | grep "${query_examples}" | wc -l`
52+
if [[ "${query_examples_count}" != "2" ]]; then
53+
echo "::error::Предварительная проверка не пройдена - не найдены заголовки ${query_examples} (соответствующие подразделы должны быть в разделах с нереляционной и реляционной моделями)."
54+
exit 1
55+
fi
56+
57+
data_examples_count=`cat "${page}" | grep "${data_examples}" | wc -l`
58+
if [[ "${data_examples_count}" != "2" ]]; then
59+
echo "::error::Предварительная проверка не пройдена - не найдены заголовки ${data_examples} (соответствующие подразделы должны быть в разделах с нереляционной и реляционной моделями)."
60+
exit 1
61+
fi
62+
63+
redundancy_count=`cat "${page}" | grep "${redundancy}" | wc -l`
64+
if [[ "${redundancy_count}" != "2" ]]; then
65+
echo "::error::Предварительная проверка не пройдена - не найдены заголовки ${redundancy} (соответствующие подразделы должны быть в разделах с нереляционной и реляционной моделями)."
66+
exit 1
67+
fi
68+
69+
if ! cat "${page}" | grep -q "${comparison}"; then
70+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${comparison}"
71+
exit 1
72+
fi
73+
74+
if ! cat "${page}" | grep -q "${conclusion}"; then
75+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${conclusion}"
76+
exit 1
77+
fi
78+
echo "::notice::Предварительная проверка пройдена - вики-страница найдена, нужные заголовки присутствуют "
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: "4. Прототип хранение и представление"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check_prototype_store_and_view:
10+
name: "Проверка наличия тега 0.5, работоспособности docker compose и наличия сервиса db"
11+
runs-on: ubuntu-24.04
12+
steps:
13+
- uses: actions/checkout@v4
14+
name: Check out current commit
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Check docker-compose.yml
19+
run: .github/workflows/scripts/4_prototype_store_and_view.sh check-compose
20+
21+
- name: Build docker-compose
22+
run: .github/workflows/scripts/4_prototype_store_and_view.sh build
23+
24+
- name: Run docker-compose
25+
run: .github/workflows/scripts/4_prototype_store_and_view.sh run
26+
27+
- name: check
28+
run: .github/workflows/scripts/4_prototype_store_and_view.sh check-tag
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: "5. Прототип анализ"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check_tag_08_docker_compose:
10+
name: "Проверка наличия тега 0.8 и работоспособности docker compose"
11+
runs-on: ubuntu-24.04
12+
steps:
13+
- uses: actions/checkout@v4
14+
name: Check out current commit
15+
with:
16+
fetch-depth: 0
17+
18+
- name: There are at least one Dockerfile
19+
run: .github/workflows/scripts/5_prototype_analysis.sh check-dockerfiles
20+
21+
- name: Lint Dockerfile
22+
uses: hadolint/hadolint-action@v3.1.0
23+
with:
24+
dockerfile: Dockerfile
25+
recursive: true
26+
failure-threshold: error
27+
override-error: DL3006, DL3000, DL3007, DL3008, DL3009, DL3013, DL3016, DL3018, DL3020, DL3028, DL3037, DL3047, DL4001, DL4003, DL4004
28+
29+
- name: Check docker-compose.yml
30+
run: .github/workflows/scripts/5_prototype_analysis.sh check-compose
31+
32+
- name: Build docker-compose
33+
run: .github/workflows/scripts/5_prototype_analysis.sh build
34+
35+
- name: Run docker-compose
36+
run: .github/workflows/scripts/5_prototype_analysis.sh run
37+
38+
- name: Check containers are alive
39+
run: .github/workflows/scripts/5_prototype_analysis.sh check-containers
40+
41+
- name: check_tag
42+
run: .github/workflows/scripts/5_prototype_analysis.sh check-tag

.github/workflows/6_report.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: "6. Пояснительная записка"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check_reports:
10+
name: "Проверка наличия пояснительной записки (report.doc / report.docx / report.odt + report.pdf в корне репо)"
11+
runs-on: ubuntu-24.04
12+
steps:
13+
- uses: actions/checkout@v4
14+
name: Check out current commit
15+
16+
- name: check
17+
run: .github/workflows/scripts/6_report.sh
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: "7. App is ready"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
check_app_is_ready:
10+
name: "Проверка наличия тега 1.0 и клиента"
11+
runs-on: ubuntu-24.04
12+
steps:
13+
- uses: actions/checkout@v4
14+
name: Check out current commit
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Build docker-compose
19+
run: .github/workflows/scripts/7_app_is_ready.sh build
20+
21+
- name: Run docker-compose
22+
run: .github/workflows/scripts/7_app_is_ready.sh run
23+
24+
- name: Check web client root page
25+
run: .github/workflows/scripts/7_app_is_ready.sh check-web
26+
27+
- name: check
28+
run: .github/workflows/scripts/7_app_is_ready.sh check-tag
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
dir="./hello_world/"
4+
if [ -d "${dir}" ]; then
5+
if [ "$(ls -A ${dir})" ]; then
6+
echo "::notice::Предварительная проверка пройдена - каталог ${dir} создан и не пуст"
7+
exit 0
8+
else
9+
echo "::error::Предварительная проверка не пройдена - каталог ${dir} пуст"
10+
exit 1
11+
fi
12+
else
13+
echo "::error::Предварительная проверка не пройдена - каталог не найден ${dir}"
14+
exit 1
15+
fi
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/bash
2+
3+
page="Макет-и-сценарий-использования.md"
4+
mockup_header="Макет UI"
5+
uc_header="Сценарий использования"
6+
7+
if ! [[ -f "${page}" ]]; then
8+
echo "::error::Предварительная проверка не пройдена - не найдена вики-страница \"Макет и сценарий использования\""
9+
exit 1
10+
fi
11+
12+
if ! cat "${page}" | grep -q "${mockup_header}"; then
13+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${mockup_header}"
14+
exit 1
15+
fi
16+
17+
if ! cat "${page}" | grep -q "${uc_header}"; then
18+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${uc_header}"
19+
exit 1
20+
fi
21+
22+
if ! cat "${page}" | grep -iq "импорт"; then
23+
echo "::error::Предварительная проверка не пройдена - не найден сценарий, связанный с импортом данных в систему"
24+
exit 1
25+
fi
26+
27+
if ! cat "${page}" | grep -iq "экспорт"; then
28+
echo "::error::Предварительная проверка не пройдена - не найден сценарий, связанный с экспортом данных в систему"
29+
exit 1
30+
fi
31+
32+
if ! cat "${page}" | grep -iq "статистик"; then
33+
echo "::error::Предварительная проверка не пройдена - не найден сценарий, связанный с подсчетом статистики в системе"
34+
exit 1
35+
fi
36+
37+
if ! cat "${page}" | grep -iq '!\[[^]]*\](http[^)]*)'; then
38+
echo "::error::Предварительная проверка не пройдена - не найдено изображение макета из репозитория. Вставьте его через ![название_картинки](полная_ссылка)."
39+
exit 1
40+
fi
41+
42+
echo "::notice::Предварительная проверка пройдена - вики-страница найдена, нужные заголовки присутствуют"
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/bash
2+
3+
page="Модель-данных.md"
4+
nosql_model="Нереляционная модель"
5+
sql_model="Реляционная модель"
6+
comparison="Сравнение моделей"
7+
conclusion="Вывод"
8+
query_examples="Примеры запросов"
9+
data_examples="Примеры данных"
10+
redundancy="Избыточность данных"
11+
12+
if ! [[ -f "${page}" ]]; then
13+
echo "::error::Предварительная проверка не пройдена - не найдена вики-страница \"Модель данных\""
14+
exit 1
15+
fi
16+
17+
if ! cat "${page}" | grep -q "${nosql_model}"; then
18+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${nosql_model}"
19+
exit 1
20+
fi
21+
22+
if ! cat "${page}" | grep -q "${sql_model}"; then
23+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${sql_model}"
24+
exit 1
25+
fi
26+
27+
image_count=`cat "${page}" | grep '!\[[^]]*\](http[^)]*)' | wc -l`
28+
if [[ ${image_count} -lt 2 ]]; then
29+
echo "::error::Предварительная проверка не пройдена - не найдены изображения для схем моделей данных. Для реляционной и нереляционной модели необходимо разместить изображения схем моделей данных. Вставьте их через ![название_картинки](полная_ссылка)."
30+
exit 1
31+
fi
32+
33+
query_examples_count=`cat "${page}" | grep "${query_examples}" | wc -l`
34+
if [[ "${query_examples_count}" != "2" ]]; then
35+
echo "::error::Предварительная проверка не пройдена - не найдены заголовки ${query_examples} (соответствующие подразделы должны быть в разделах с нереляционной и реляционной моделями)."
36+
exit 1
37+
fi
38+
39+
data_examples_count=`cat "${page}" | grep "${data_examples}" | wc -l`
40+
if [[ "${data_examples_count}" != "2" ]]; then
41+
echo "::error::Предварительная проверка не пройдена - не найдены заголовки ${data_examples} (соответствующие подразделы должны быть в разделах с нереляционной и реляционной моделями)."
42+
exit 1
43+
fi
44+
45+
redundancy_count=`cat "${page}" | grep "${redundancy}" | wc -l`
46+
if [[ "${redundancy_count}" != "2" ]]; then
47+
echo "::error::Предварительная проверка не пройдена - не найдены заголовки ${redundancy} (соответствующие подразделы должны быть в разделах с нереляционной и реляционной моделями)."
48+
exit 1
49+
fi
50+
51+
if ! cat "${page}" | grep -q "${comparison}"; then
52+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${comparison}"
53+
exit 1
54+
fi
55+
56+
if ! cat "${page}" | grep -q "${conclusion}"; then
57+
echo "::error::Предварительная проверка не пройдена - не найден заголовок ${conclusion}"
58+
exit 1
59+
fi
60+
echo "::notice::Предварительная проверка пройдена - вики-страница найдена, нужные заголовки присутствуют "

0 commit comments

Comments
 (0)