diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9ab993739542aed2f33c1f1e3ac9bcbae79ea109..ae6400dff411cd66ee9e9acc288a52c666df537f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,16 +5,21 @@ stages: variables: tag_dev: "dev" imagedb_name: "stacomi_db" - db_version: "0.6.1" + db_version: "0.6.0" postgres_version: "14" postgis_version: "3.2" + POSTGRES_PASSWORD: postgres imager_name: "environnement_test_r" r_version: "0.1" imageR_name: "r4stacomi" r_base_version: "4.x" docker_version: "20.10" docker_version_dind: "${docker_version}-dind" - POSTGRES_PASSWORD: postgres + PG_USER: stacomi_test + PG_USER_PASSWORD: stacomi_test + PG_DB: bd_contmig_nat + PG_HOST: host_db + PG_PORT: 5432 include: - local: '/gitlab-ci/rules.gitlab-ci.yml' # generic rules to be used for main branch or others diff --git a/README.md b/README.md index 127c67f35d805d3a913b4af95b1e5fdf52cf6ac2..01e60300cbbf512483730e203165628d0b5184d3 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,8 @@ The arguments (`ARG`or when building the image `--build-arg`) `postgresql_versio - You should have [docker installed](https://docs.docker.com/get-docker/) in your machine (computer or server). - You should pull the desired image using one of the following line depending if you want the latest version or [a - given version](https://forgemia.inra.fr/stacomi/stacomi_db/container_registry/368) + given version](https://forgemia.inra.fr/stacomi/stacomi_db/container_registry/368), eventually after [being authenticate to the registry](https://docs.gitlab.com/user/packages/container_registry/authenticate_with_container_registry/) + ~~~ shell docker pull registry.forgemia.inra.fr/stacomi/stacomi_db/stacomi_db:latest docker pull registry.forgemia.inra.fr/stacomi/stacomi_db/stacomi_db:0.6.0-pg9.6-ps3.2 diff --git a/gitlab-ci/R/test_BDD.R b/gitlab-ci/R/test_BDD.R index 7a21b7cae42401710f469fd63a579dd77980f19a..4d3bf4ce227d1b114f2cb9bd001d487969ba1968 100644 --- a/gitlab-ci/R/test_BDD.R +++ b/gitlab-ci/R/test_BDD.R @@ -1,11 +1,45 @@ require("RPostgreSQL") require("sqldf") -options(sqldf.RPostgreSQL.user = "postgres", - sqldf.RPostgreSQL.password = "postgres", +options( + sqldf.RPostgreSQL.user = "stacomi_test", + sqldf.RPostgreSQL.password = "stacomi_test", sqldf.RPostgreSQL.dbname = "bd_contmig_nat", sqldf.RPostgreSQL.host = "host_db", - sqldf.RPostgreSQL.port = 5432) + sqldf.RPostgreSQL.port = 5432 +) + +check_postgres_connection <- function( + host = getOption("sqldf.RPostgreSQL.host"), + port = getOption("sqldf.RPostgreSQL.port"), + dbname = getOption("sqldf.RPostgreSQL.dbname"), + user = getOption("sqldf.RPostgreSQL.user"), + password = getOption("sqldf.RPostgreSQL.password"), + timeout = 3 +) { + tryCatch( + { + drv <- dbDriver("PostgreSQL") + con <- dbConnect(drv, + host = host, + port = port, + dbname = dbname, + user = user, + password = password + ) + + dbDisconnect(con) + return(TRUE) + }, + error = function(e) { + return(FALSE) + } + ) +} + +cat("Waiting postgresql\n") +while(check_postgres_connection() == FALSE) + cat(".") cat("###################") cat("Version postgresql") diff --git a/gitlab-ci/build_images_docker.gitlab-ci.yml b/gitlab-ci/build_images_docker.gitlab-ci.yml index 32298064c601b906620e275365ce96d3789b92ab..ef10f753eec3d4eaf15bb07e38b406cef1d111da 100644 --- a/gitlab-ci/build_images_docker.gitlab-ci.yml +++ b/gitlab-ci/build_images_docker.gitlab-ci.yml @@ -6,7 +6,7 @@ ####################### # for any branch, but main build_db-dev: - image: docker:$docker_version + image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:$docker_version stage: build_images services: - docker:$docker_version_dind @@ -21,7 +21,7 @@ build_db-dev: ####################### # for main banch only build_db-prod: - image: docker:$docker_version + image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:$docker_version stage: build_images services: - docker:$docker_version_dind @@ -41,7 +41,7 @@ build_db-prod: ####################### # for any branch, but main build_R-dev: - image: docker:$docker_version + image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:$docker_version stage: build_images services: - docker:$docker_version_dind @@ -55,7 +55,7 @@ build_R-dev: ####################### # for main banch only build_R-prod: - image: docker:$docker_version + image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:$docker_version stage: build_images services: - docker:$docker_version_dind diff --git a/gitlab-ci/services.gitlab-ci.yml b/gitlab-ci/services.gitlab-ci.yml index 4821c2769a539220aaba0ade5fb7407c613bfd2e..39919fe76ebacd9829c8bfdee26d08c2b1a6cae1 100644 --- a/gitlab-ci/services.gitlab-ci.yml +++ b/gitlab-ci/services.gitlab-ci.yml @@ -2,14 +2,14 @@ ####################### # for any branch, but main -.service-dev: +.service-pg-dev: services: - name: $CI_REGISTRY_IMAGE/$imagedb_name:$db_version-pg$postgres_version-ps$postgis_version-$tag_dev - alias: host_db + alias: $PG_HOST ####################### # for main banch only -.service-prod: +.service-pg-prod: services: - name: $CI_REGISTRY_IMAGE/$imagedb_name:latest - alias: host_db \ No newline at end of file + alias: $PG_HOST \ No newline at end of file diff --git a/gitlab-ci/test_psql.gitlab-ci.yml b/gitlab-ci/test_psql.gitlab-ci.yml index 33ac420ea5d145685b5ab83991e6299b400e9174..997d65a5a1b8d6456c92f6dcf4fb824c863414b1 100644 --- a/gitlab-ci/test_psql.gitlab-ci.yml +++ b/gitlab-ci/test_psql.gitlab-ci.yml @@ -6,13 +6,17 @@ stage: test image: postgres:${postgres_version} before_script: - - sleep 120 # waiting postgresql + - echo "En attente de la disponibilité de PostgreSQL" + - | + until pg_isready -U $PG_USER -h $PG_HOST -p $PG_PORT -d $PG_DB; do + sleep 2 + done - psql --version - - export PGPASSWORD=$POSTGRES_PASSWORD + - export PGPASSWORD=$PG_USER_PASSWORD script: - - psql -U postgres -h host_db -c "SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema';" - - psql -U postgres -h host_db -c "select * from test.t_dispositifcomptage_dic" bd_contmig_nat - - export PGPASSWORD=test && psql -U test -h host_db -c "select * from test.t_dispositifcomptage_dic" bd_contmig_nat # test avec l'utilisateur iav pour vérfier les droits + - psql -U $PG_USER -h $PG_HOST -p $PG_PORT -d $PG_DB -c "SELECT version();" + - psql -U $PG_USER -h $PG_HOST -p $PG_PORT -d $PG_DB -c "SELECT postgis_version();" + - psql -U $PG_USER -h $PG_HOST -p $PG_PORT -d $PG_DB -c "SELECT * from test.t_dispositifcomptage_dic" ####################### # for any branch, but main @@ -21,7 +25,7 @@ test_psql-dev: - build_db-dev extends: - .rules_other - - .service-dev + - .service-pg-dev - .test_psql_template @@ -32,5 +36,5 @@ test_psql-prod: - build_db-prod extends: - .rules_main - - .service-prod + - .service-pg-prod - .test_psql_template diff --git a/gitlab-ci/test_r.gitlab-ci.yml b/gitlab-ci/test_r.gitlab-ci.yml index e2a948d2250390f1b419cff26d1b738039f30e01..01ea043be426106afd5fc32ab2483034df00c614 100644 --- a/gitlab-ci/test_r.gitlab-ci.yml +++ b/gitlab-ci/test_r.gitlab-ci.yml @@ -4,8 +4,6 @@ # template for the test .test_r_template: stage: test - before_script: - - sleep 120 # waiting postgresql script: - Rscript -e '1+1' - Rscript -e 'a<-1; a+1' @@ -22,7 +20,7 @@ test_r-dev: - test_psql-dev extends: - .rules_other - - .service-dev + - .service-pg-dev - .test_r_template @@ -35,5 +33,5 @@ test_r-prod: - build_R-prod extends: - .rules_main - - .service-prod + - .service-pg-prod - .test_r_template diff --git a/initdb/11_role_extension.sql b/initdb/11_role_extension.sql index 572ab4d12662558d3f488cb4ec0a4317482d66ec..db2d75054fb4d800b8e6c89e5cb4b3da2f2cfac0 100644 --- a/initdb/11_role_extension.sql +++ b/initdb/11_role_extension.sql @@ -1,5 +1,3 @@ -CREATE ROLE iav LOGIN PASSWORD 'iav'; -CREATE ROLE invite LOGIN PASSWORD 'invite'; CREATE ROLE user_1 LOGIN PASSWORD 'user_1'; CREATE ROLE stacomi_test LOGIN PASSWORD 'stacomi_test'; --CREATE ROLE group_stacomi_sequence NOINHERIT NOLOGIN; -- no inherit ensures that the privileges cannot be passed to another group role created later diff --git a/initdb/20_create_ref.sql b/initdb/20_create_ref.sql index 9063e4fd59ae2c00751e936d9951889fb911c351..492766530f185546f74f4371c1b208179504841e 100644 --- a/initdb/20_create_ref.sql +++ b/initdb/20_create_ref.sql @@ -3688,7 +3688,6 @@ GRANT ALL ON SCHEMA ref TO PUBLIC; -- Name: TABLE tg_parametre_par; Type: ACL; Schema: ref; Owner: postgres -- -GRANT SELECT ON TABLE ref.tg_parametre_par TO invite; GRANT SELECT ON TABLE ref.tg_parametre_par TO stacomi_test; @@ -3699,7 +3698,6 @@ GRANT SELECT ON TABLE ref.tg_parametre_par TO stacomi_test; -- GRANT SELECT ON TABLE ref.tr_devenirlot_dev TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_devenirlot_dev TO invite; -- @@ -3709,7 +3707,6 @@ GRANT SELECT ON TABLE ref.tr_devenirlot_dev TO invite; -- GRANT SELECT ON TABLE ref.tr_importancepatho_imp TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_importancepatho_imp TO invite; -- @@ -3719,7 +3716,6 @@ GRANT SELECT ON TABLE ref.tr_importancepatho_imp TO invite; -- GRANT SELECT ON TABLE ref.tr_localisationanatomique_loc TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_localisationanatomique_loc TO invite; -- @@ -3729,7 +3725,6 @@ GRANT SELECT ON TABLE ref.tr_localisationanatomique_loc TO invite; -- GRANT SELECT ON TABLE ref.tr_naturemarque_nmq TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_naturemarque_nmq TO invite; -- @@ -3739,7 +3734,6 @@ GRANT SELECT ON TABLE ref.tr_naturemarque_nmq TO invite; -- GRANT SELECT ON TABLE ref.tr_natureouvrage_nov TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_natureouvrage_nov TO invite; -- @@ -3749,7 +3743,6 @@ GRANT SELECT ON TABLE ref.tr_natureouvrage_nov TO invite; -- GRANT SELECT ON TABLE ref.tr_niveauechappement_ech TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_niveauechappement_ech TO invite; -- @@ -3759,8 +3752,6 @@ GRANT SELECT ON TABLE ref.tr_niveauechappement_ech TO invite; -- GRANT SELECT ON TABLE ref.tr_niveautaxonomique_ntx TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_niveautaxonomique_ntx TO invite; - -- -- TOC entry 4647 (class 0 OID 0) @@ -3769,7 +3760,6 @@ GRANT SELECT ON TABLE ref.tr_niveautaxonomique_ntx TO invite; -- GRANT SELECT ON TABLE ref.tr_parametrequalitatif_qal TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_parametrequalitatif_qal TO invite; -- @@ -3779,7 +3769,6 @@ GRANT SELECT ON TABLE ref.tr_parametrequalitatif_qal TO invite; -- GRANT SELECT ON TABLE ref.tr_parametrequantitatif_qan TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_parametrequantitatif_qan TO invite; -- @@ -3789,7 +3778,6 @@ GRANT SELECT ON TABLE ref.tr_parametrequantitatif_qan TO invite; -- GRANT SELECT ON TABLE ref.tr_pathologie_pat TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_pathologie_pat TO invite; -- @@ -3799,7 +3787,6 @@ GRANT SELECT ON TABLE ref.tr_pathologie_pat TO invite; -- GRANT SELECT ON TABLE ref.tr_prelevement_pre TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_prelevement_pre TO invite; -- @@ -3809,7 +3796,6 @@ GRANT SELECT ON TABLE ref.tr_prelevement_pre TO invite; -- GRANT SELECT ON TABLE ref.tr_stadedeveloppement_std TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_stadedeveloppement_std TO invite; -- @@ -3819,7 +3805,6 @@ GRANT SELECT ON TABLE ref.tr_stadedeveloppement_std TO invite; -- GRANT SELECT ON TABLE ref.tr_taxon_tax TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_taxon_tax TO invite; -- @@ -3829,7 +3814,6 @@ GRANT SELECT ON TABLE ref.tr_taxon_tax TO invite; -- GRANT SELECT ON TABLE ref.tr_typearretdisp_tar TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_typearretdisp_tar TO invite; -- @@ -3839,7 +3823,6 @@ GRANT SELECT ON TABLE ref.tr_typearretdisp_tar TO invite; -- GRANT SELECT ON TABLE ref.tr_typedc_tdc TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_typedc_tdc TO invite; -- @@ -3849,7 +3832,6 @@ GRANT SELECT ON TABLE ref.tr_typedc_tdc TO invite; -- GRANT SELECT ON TABLE ref.tr_typedf_tdf TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_typedf_tdf TO invite; -- @@ -3859,8 +3841,6 @@ GRANT SELECT ON TABLE ref.tr_typedf_tdf TO invite; -- GRANT SELECT ON TABLE ref.tr_typequantitelot_qte TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_typequantitelot_qte TO invite; - -- -- TOC entry 4657 (class 0 OID 0) @@ -3869,7 +3849,6 @@ GRANT SELECT ON TABLE ref.tr_typequantitelot_qte TO invite; -- GRANT SELECT ON TABLE ref.tr_valeurparametrequalitatif_val TO stacomi_test; -GRANT SELECT ON TABLE ref.tr_valeurparametrequalitatif_val TO invite; -- @@ -3879,7 +3858,6 @@ GRANT SELECT ON TABLE ref.tr_valeurparametrequalitatif_val TO invite; -- GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE ref.ts_maintenance_main TO stacomi_test; -GRANT SELECT ON TABLE ref.ts_maintenance_main TO invite; -- @@ -3889,7 +3867,6 @@ GRANT SELECT ON TABLE ref.ts_maintenance_main TO invite; -- GRANT SELECT ON TABLE ref.ts_messager_msr TO stacomi_test; -GRANT SELECT ON TABLE ref.ts_messager_msr TO invite; -- @@ -3899,7 +3876,6 @@ GRANT SELECT ON TABLE ref.ts_messager_msr TO invite; -- GRANT SELECT ON TABLE ref.ts_messagerlang_mrl TO stacomi_test; -GRANT SELECT ON TABLE ref.ts_messagerlang_mrl TO invite; -- @@ -3909,7 +3885,6 @@ GRANT SELECT ON TABLE ref.ts_messagerlang_mrl TO invite; -- GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE ref.ts_nomenclature_nom TO stacomi_test; -GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE ref.ts_nomenclature_nom TO invite; -- @@ -3918,7 +3893,6 @@ GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE ref.ts_nomenclature_nom TO invite; -- Name: TABLE ts_organisme_org; Type: ACL; Schema: ref; Owner: postgres -- -GRANT SELECT ON TABLE ref.ts_organisme_org TO invite; GRANT SELECT ON TABLE ref.ts_organisme_org TO stacomi_test; @@ -3929,7 +3903,6 @@ GRANT SELECT ON TABLE ref.ts_organisme_org TO stacomi_test; -- GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE ref.ts_sequence_seq TO stacomi_test; -GRANT SELECT ON TABLE ref.ts_sequence_seq TO invite; -- diff --git a/initdb/40_change_owner.sql b/initdb/40_change_owner.sql index bdd29a7689c9adfa414a66df4703023db2792e07..ec91d7f4db308560c77286b31b3d053b18054eff 100644 --- a/initdb/40_change_owner.sql +++ b/initdb/40_change_owner.sql @@ -42,7 +42,7 @@ ALTER VIEW test.vue_lot_ope_car OWNER TO stacomi_test; ALTER VIEW test.vue_lot_ope_car_qan OWNER TO stacomi_test; ALTER VIEW test.vue_ope_lot_ech_parqual OWNER TO stacomi_test; ALTER VIEW test.vue_ope_lot_ech_parquan OWNER TO stacomi_test; -REASSIGN OWNED BY test TO group_stacomi; +REASSIGN OWNED BY stacomi_test TO group_stacomi; -- below owned by just ensures that the sequence is dropped if the column is dropped also.