From 673dad651a4f50cad407236854aa5479d86dddde Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Sat, 15 Jun 2019 23:55:37 +0800 Subject: [PATCH] feat(database): support postgres --- defaults/main.yml | 5 +++++ tasks/drone-database.yml | 27 +++++++++++++++++++++++++++ tasks/drone-server.yml | 26 +++++++++++++++++++++++--- tasks/main.yml | 2 ++ templates/drone-server.env.j2 | 6 ++++++ 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 tasks/drone-database.yml diff --git a/defaults/main.yml b/defaults/main.yml index dccc7bf..7fb415e 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -16,3 +16,8 @@ drone_runner_capacity: "3" drone_host_port: "8080" drone_database_driver: "sqlite" drone_sqlite_dir: "/var/lib/drone" +drone_postgress_data_dir: "/var/lib/postgresql/data" +drone_postgress_password: "drone" +drone_postgress_user: "drone" +drone_postgress_db: "drone" +drone_database_datasource: "" diff --git a/tasks/drone-database.yml b/tasks/drone-database.yml new file mode 100644 index 0000000..db74716 --- /dev/null +++ b/tasks/drone-database.yml @@ -0,0 +1,27 @@ +--- +- name: Creates postgres directory + file: + path: "{{ drone_postgress_data_dir }}" + state: directory + mode: 0755 + register: drone_postgress_data_dir + tags: + - postgres + +- name: start postgres for drone ci + docker_container: + name: postgres + image: postgres:11 + state: started + restart_policy: always + ports: + - "5432:5432" + volumes: + - "{{ drone_postgress_data_dir }}:/var/lib/postgresql/data" + env: + POSTGRES_PASSWORD: "{{ drone_postgress_password }}" + POSTGRES_USER: "{{ drone_postgress_user }}" + POSTGRES_DB: "{{ drone_postgress_db }}" + when: drone_postgress_data_dir is defined and drone_postgress_data_dir.changed + tags: + - postgres diff --git a/tasks/drone-server.yml b/tasks/drone-server.yml index 6f2790e..598fdb7 100644 --- a/tasks/drone-server.yml +++ b/tasks/drone-server.yml @@ -17,7 +17,7 @@ tags: - drone-server -- name: run drone server +- name: run drone server with sqlite database docker_container: name: drone-server image: "drone/drone:{{ drone_version }}" @@ -28,7 +28,27 @@ volumes: - "{{ drone_sqlite_dir }}:/data" env_file: /etc/drone/drone-server.env - when: (drone_server_config is defined and drone_server_config.changed) or - (drone_sqlite_folder is defined and drone_sqlite_folder.changed) + when: ((drone_server_config is defined and drone_server_config.changed) or + (drone_sqlite_folder is defined and drone_sqlite_folder.changed)) and + drone_database_driver == "sqlite" + tags: + - drone-server + +- name: run drone server with postgres or mysql database + docker_container: + name: drone-server + image: "drone/drone:{{ drone_version }}" + state: started + restart_policy: always + ports: + - "{{ drone_host_port }}:80" + links: + - "{{ drone_database_driver }}" + volumes: + - "{{ drone_sqlite_dir }}:/data" + env_file: /etc/drone/drone-server.env + when: ((drone_server_config is defined and drone_server_config.changed) or + (drone_postgress_data_dir is defined and drone_postgress_data_dir.changed)) and + drone_database_driver != "sqlite" tags: - drone-server diff --git a/tasks/main.yml b/tasks/main.yml index 86e41a3..2dde5aa 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,5 +1,7 @@ --- - include: setup.yml + - include: drone-database.yml + when: drone_server_enable == "true" and drone_database_driver != "sqlite" - include: drone-server.yml when: drone_server_enable == "true" - include: drone-agent.yml diff --git a/templates/drone-server.env.j2 b/templates/drone-server.env.j2 index b9933df..bcc6b2b 100644 --- a/templates/drone-server.env.j2 +++ b/templates/drone-server.env.j2 @@ -23,3 +23,9 @@ DRONE_LOGS_PRETTY={{ drone_logs_pretty }} DRONE_LOGS_COLOR={{ drone_logs_color }} {% endif %} DRONE_LOGS_DEBUG=true +{% if drone_database_driver is defined and drone_database_driver != "sqlite" %} +DRONE_DATABASE_DRIVER={{ drone_database_driver }} +{% endif %} +{% if drone_database_datasource is defined and drone_database_driver != "sqlite" %} +DRONE_DATABASE_DATASOURCE={{ drone_database_datasource }} +{% endif %}