From 294fbe918a5f09bbab84cb784d99cbbb74dbb74c Mon Sep 17 00:00:00 2001 From: Sciocatti Date: Mon, 9 Jan 2023 11:32:06 +0200 Subject: [PATCH] Updated README.md --- README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/README.md b/README.md index 1b25f35..ab0a1b4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,63 @@ # Utility-DB-Postgres +A template repo for managing Postgres/postgis databases through Jenkins. + +> NOTE: The steps below are not for this repo, but for those using it as a template. + +## Bootstrapping +> If needed, steps starting with `[sudo]` require elevated permissions. + +1. Create a new repository by clicking the "Use this template" button on the template repo page. +1. Configure the new repo settings. At the bottom, select `Template Items` -> `Git Content`. +1. Create the new repo. +1. Pull new repo to local PC. +1. [sudo] Give the setup script permission to execute: + ```bash + chmod +x template/setup.sh + ``` +1. [sudo] Run the start script and fill in the prompts: + ```bash + ./template/setup.sh + ``` + +## Running Locally +> This works only if the required files have been made during the bootstrap process. +1. You need to have Docker locally installed +1. From the repository root directory: + ```bash + ./start.sh + ``` +1. You should see a `data` folder pop up. This is where the local DB data is stored. +1. Verify you can connect with the default user `postgres` and the password you provided. + +## Deploying +If you configured the Sciocatti Jenkins pipeline during bootstrap, deployment happens automatically on branch `main`. +The point is to serve as a GitOps "source of truth", so be wary when making changes as it will reflect. + +These will be deployed to node ports on the cluster with ports as per the `deployment.yaml` specs in the `cicd` folder. + +> Due note that branches eligible for deployments are configured on the Jenkins server, as deployments happen transparently to developers. + +> Note that the bootstrapped repo has to be in a organization where the Jenkins user has visibility, and the organization must be configured and linked to the Jenkins server. + +> Note that you have to configure a Jenkins secret, reachable by the script when deploying. This secret ID must be passed in during the bootstrap process. + +## MultiArch images +> For Mac M1 chips the standard postgis/postgis woooorks, but with warnings and without guarantees. + +I prefer using the image from postgis/postgis, but unfortunately their image only supports AMD. This is a issue for Mac M-series chips, and Raspberry Pi 4s. +A workaround I am using for both AMD and ARM support: +```bash +# Pull image from https://github.com/baosystems/docker-postgis/pkgs/container/postgis +docker pull ghcr.io/baosystems/postgis:11-3.3 +# Retag to save to my own registry +docker tag ghcr.io/baosystems/postgis:11-3.3 192.168.195.195:30000/postgis:11-3.3 +# Push to repo +docker push 192.168.195.195:30000/postgis:11-3.3 +``` + +If you don't want to depend on baosystems, or if they don't support your version, then you should also be able to build the image +for Arm yourself as per [this suggestion](https://github.com/postgis/docker-postgis/issues/216#issuecomment-809347656) + + +utils-postgres-stage-pwd \ No newline at end of file