mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-09-10 14:02:35 +03:00
Merge pull request #8 from mabdullahadeel/update-actions
Update actions
This commit is contained in:
commit
af508588e7
12
.github/workflows/ci.yml
vendored
12
.github/workflows/ci.yml
vendored
|
@ -43,10 +43,14 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
script:
|
script:
|
||||||
- name: Basic
|
- name: Basic - Postgres
|
||||||
args: "database_engine=postgresql database_version=postgresql@14.1"
|
args: "database_engine=postgresql database_version='postgresql@14.1'"
|
||||||
- name: Extended
|
- name: Extended - Postgres
|
||||||
args: "use_celery=y use_drf=y js_task_runner=Gulp database_engine=postgresql database_version=postgresql@14.1"
|
args: "use_celery=y use_drf=y js_task_runner=Gulp database_engine=postgresql database_version='postgresql@14.1'"
|
||||||
|
- name: Basic - MySQL
|
||||||
|
args: "database_engine=mysql database_version='mysql@8.0.28'"
|
||||||
|
- name: Extended - MySQL
|
||||||
|
args: "use_celery=y use_drf=y js_task_runner=Gulp database_engine=mysql database_version='mysql@8.0.28'"
|
||||||
|
|
||||||
name: "${{ matrix.script.name }} Docker"
|
name: "${{ matrix.script.name }} Docker"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -257,7 +257,7 @@ def set_database_user(file_path: str, value: str, database_engine: str):
|
||||||
def set_database_password(file_path: str, database_engine: str, value: str = None):
|
def set_database_password(file_path: str, database_engine: str, value: str = None):
|
||||||
database_password = set_flag(
|
database_password = set_flag(
|
||||||
file_path,
|
file_path,
|
||||||
f"!!!SET {database_engine.upper()}_USER!!!",
|
f"!!!SET {database_engine.upper()}_PASSWORD!!!",
|
||||||
value=value,
|
value=value,
|
||||||
length=64,
|
length=64,
|
||||||
using_digits=True,
|
using_digits=True,
|
||||||
|
@ -266,6 +266,18 @@ def set_database_password(file_path: str, database_engine: str, value: str = Non
|
||||||
return database_password
|
return database_password
|
||||||
|
|
||||||
|
|
||||||
|
def set_mysql_root_password(file_path: str, database_engine: str, value: str = None):
|
||||||
|
database_root_password = set_flag(
|
||||||
|
file_path,
|
||||||
|
f"!!!SET {database_engine.upper()}_ROOT_PASSWORD!!!",
|
||||||
|
value=value,
|
||||||
|
length=74,
|
||||||
|
using_digits=True,
|
||||||
|
using_ascii_letters=True,
|
||||||
|
)
|
||||||
|
return database_root_password
|
||||||
|
|
||||||
|
|
||||||
def get_database_env_path(env: str, database_engine: str):
|
def get_database_env_path(env: str, database_engine: str):
|
||||||
local_postgres_envs_path = os.path.join(".envs", ".local", ".postgres")
|
local_postgres_envs_path = os.path.join(".envs", ".local", ".postgres")
|
||||||
production_postgres_envs_path = os.path.join(".envs", ".production", ".postgres")
|
production_postgres_envs_path = os.path.join(".envs", ".production", ".postgres")
|
||||||
|
@ -345,6 +357,19 @@ def set_flags_in_envs(database_user, celery_flower_user, debug=False):
|
||||||
value=DEBUG_VALUE if debug else None,
|
value=DEBUG_VALUE if debug else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if selected_database == "mysql":
|
||||||
|
set_mysql_root_password(
|
||||||
|
get_database_env_path(env="local", database_engine=selected_database),
|
||||||
|
database_engine=selected_database,
|
||||||
|
value=DEBUG_VALUE if debug else None,
|
||||||
|
)
|
||||||
|
|
||||||
|
set_mysql_root_password(
|
||||||
|
get_database_env_path(env="prod", database_engine=selected_database),
|
||||||
|
database_engine=selected_database,
|
||||||
|
value=DEBUG_VALUE if debug else None,
|
||||||
|
)
|
||||||
|
|
||||||
set_celery_flower_user(local_django_envs_path, value=celery_flower_user)
|
set_celery_flower_user(local_django_envs_path, value=celery_flower_user)
|
||||||
set_celery_flower_password(
|
set_celery_flower_password(
|
||||||
local_django_envs_path, value=DEBUG_VALUE if debug else None
|
local_django_envs_path, value=DEBUG_VALUE if debug else None
|
||||||
|
|
|
@ -6,4 +6,3 @@ MYSQL_DATABASE={{ cookiecutter.project_slug }}
|
||||||
MYSQL_USER=!!!SET MYSQL_USER!!!
|
MYSQL_USER=!!!SET MYSQL_USER!!!
|
||||||
MYSQL_PASSWORD=!!!SET MYSQL_PASSWORD!!!
|
MYSQL_PASSWORD=!!!SET MYSQL_PASSWORD!!!
|
||||||
MYSQL_ROOT_PASSWORD=!!!SET MYSQL_ROOT_PASSWORD!!!
|
MYSQL_ROOT_PASSWORD=!!!SET MYSQL_ROOT_PASSWORD!!!
|
||||||
|
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
POSTGRES_HOST=postgres
|
POSTGRES_HOST=postgres
|
||||||
POSTGRES_PORT=5432
|
POSTGRES_PORT=5432
|
||||||
POSTGRES_DB={{ cookiecutter.project_slug }}
|
POSTGRES_DB={{ cookiecutter.project_slug }}
|
||||||
POSTGRES_USER=!!!SET POSTGRES_USER!!!
|
POSTGRES_USER=!!!SET POSTGRESQL_USER!!!
|
||||||
POSTGRES_PASSWORD=!!!SET POSTGRES_PASSWORD!!!
|
POSTGRES_PASSWORD=!!!SET POSTGRESQL_PASSWORD!!!
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
POSTGRES_HOST=postgres
|
POSTGRES_HOST=postgres
|
||||||
POSTGRES_PORT=5432
|
POSTGRES_PORT=5432
|
||||||
POSTGRES_DB={{ cookiecutter.project_slug }}
|
POSTGRES_DB={{ cookiecutter.project_slug }}
|
||||||
POSTGRES_USER=!!!SET POSTGRES_USER!!!
|
POSTGRES_USER=!!!SET POSTGRESQL_USER!!!
|
||||||
POSTGRES_PASSWORD=!!!SET POSTGRES_PASSWORD!!!
|
POSTGRES_PASSWORD=!!!SET POSTGRESQL_PASSWORD!!!
|
||||||
|
|
|
@ -12,8 +12,13 @@ ENV PYTHONDONTWRITEBYTECODE 1
|
||||||
RUN apt-get update && apt-get install --no-install-recommends -y \
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
# dependencies for building Python packages
|
# dependencies for building Python packages
|
||||||
build-essential \
|
build-essential \
|
||||||
|
{%- if cookiecutter.database_engine == "postgresql" %}
|
||||||
# psycopg2 dependencies
|
# psycopg2 dependencies
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
|
{%- elif cookiecutter.database_engine == "mysql" %}
|
||||||
|
# mysql dependency
|
||||||
|
default-libmysqlclient-dev \
|
||||||
|
{%- endif %}
|
||||||
# cleaning up unused files
|
# cleaning up unused files
|
||||||
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
|
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
@ -37,8 +42,13 @@ ENV PYTHONDONTWRITEBYTECODE 1
|
||||||
RUN apt-get update && apt-get install --no-install-recommends -y \
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
||||||
# To run the Makefile
|
# To run the Makefile
|
||||||
make \
|
make \
|
||||||
|
{%- if cookiecutter.database_engine == "postgresql" %}
|
||||||
# psycopg2 dependencies
|
# psycopg2 dependencies
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
|
{%- elif cookiecutter.database_engine == "mysql" %}
|
||||||
|
# mysql dependency
|
||||||
|
default-libmysqlclient-dev \
|
||||||
|
{%- endif %}
|
||||||
# Translations dependencies
|
# Translations dependencies
|
||||||
gettext \
|
gettext \
|
||||||
# Uncomment below lines to enable Sphinx output to latex and pdf
|
# Uncomment below lines to enable Sphinx output to latex and pdf
|
||||||
|
|
|
@ -19,7 +19,7 @@ export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.database_engine == 'mysql' %}
|
{%- if cookiecutter.database_engine == 'mysql' %}
|
||||||
if [ -z "${MYSQL_USER}" ]; then
|
if [ -z "${MYSQL_USER}" ]; then
|
||||||
base_mysql_image_default_user='mysql'
|
base_mysql_image_default_user='root'
|
||||||
export MYSQL_USER="${base_mysql_image_default_user}"
|
export MYSQL_USER="${base_mysql_image_default_user}"
|
||||||
fi
|
fi
|
||||||
export DATABASE_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}"
|
export DATABASE_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}"
|
||||||
|
|
|
@ -4,3 +4,7 @@ COPY ./compose/production/mysql/maintenance /usr/local/bin/maintenance
|
||||||
RUN chmod +x /usr/local/bin/maintenance/*
|
RUN chmod +x /usr/local/bin/maintenance/*
|
||||||
RUN mv /usr/local/bin/maintenance/* /usr/local/bin \
|
RUN mv /usr/local/bin/maintenance/* /usr/local/bin \
|
||||||
&& rmdir /usr/local/bin/maintenance
|
&& rmdir /usr/local/bin/maintenance
|
||||||
|
|
||||||
|
COPY ./compose/production/mysql/init.sh /docker-entrypoint-initdb.d
|
||||||
|
RUN sed -i 's/\r$//g' /docker-entrypoint-initdb.d/init.sh
|
||||||
|
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/init.sh
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
{
|
||||||
|
mysql_note "Giving user ${MYSQL_USER} access to schema test_${MYSQL_DATABASE}"
|
||||||
|
docker_process_sql --database=mysql <<<"GRANT ALL ON \`test_${MYSQL_DATABASE//_/\\_}\`.* TO '$MYSQL_USER'@'%' ;"
|
||||||
|
|
||||||
|
# exporting dummy MYSQL_ONETIME_PASSWORD to avoid -> MYSQL_ONETIME_PASSWORD: unbound variable
|
||||||
|
export DUMMY_ONETIME_PASSWORD="$MYSQL_ROOT_PASSWORD"
|
||||||
|
} || {
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_process_sql() {
|
||||||
|
if [ -n "$MYSQL_DATABASE" ]; then
|
||||||
|
set -- --database="$MYSQL_DATABASE" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mysql --protocol=socket -uroot --password="${MYSQL_ROOT_PASSWORD}" -hlocalhost --socket="${SOCKET}" --comments "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# logging functions
|
||||||
|
mysql_log() {
|
||||||
|
local type="$1"; shift
|
||||||
|
# accept argument string or stdin
|
||||||
|
local text="$*"; if [ "$#" -eq 0 ]; then text="$(cat)"; fi
|
||||||
|
local dt; dt="$(date --rfc-3339=seconds)"
|
||||||
|
printf '%s [%s] [Entrypoint]: %s\n' "$dt" "$type" "$text"
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_note() {
|
||||||
|
mysql_log Note "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
until (initialize); do
|
||||||
|
>&2 echo 'Waiting for MYSQL to execute init'
|
||||||
|
sleep 1
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user