Loading .gitlab-ci.yml +173 −19 Original line number Diff line number Diff line Loading @@ -11,34 +11,188 @@ include: - project: 'redmic-project/gitlab-ci-templates' ref: master file: '/deployment.yml' - project: 'redmic-project/gitlab-ci-templates' ref: master file: '/deployment-custom-image.yml' stages: - build - license-list - pre-package - package - test-package - post-package - deploy .maven-build: variables: DOCKER_BUILD_ARGS: --build-arg PARENT_IMAGE_NAME=${REDMIC_SERVER_IMAGE_NAME} --build-arg PARENT_IMAGE_TAG=${REDMIC_SERVER_IMAGE_TAG} STACK: api STATUS_CHECK_DELAY: 300 .deploy: script: POSTGRES_IMAGE_TAG: 10.13-alpine POSTGRES_DB: redmic POSTGRES_USER: postgres POSTGRES_PASSWORD: password OAUTH_IMAGE_NAME: registry.gitlab.com/redmic-project/server/oauth/master OAUTH_IMAGE_TAG: latest OAUTH_CLIENT_ID: oauth_id OAUTH_CLIENT_SECRET: oauth_secret USER_IMAGE_NAME: registry.gitlab.com/redmic-project/server/user/master USER_IMAGE_TAG: latest DIND_IMAGE_NAME: docker DIND_IMAGE_TAG: dind DOCKER_HOST: tcp://docker:2375 SPRING_DATASOURCE_URL: jdbc:postgresql://docker:5432/redmic?stringtype=unspecified ELASTIC_ADDRESSES: docker OAUTH_SERVER: http://docker:8081 PROPERTY_USER_API: http://docker:8082 ELASTICSEARCH_IMAGE_NAME: registry.gitlab.com/redmic-project/elastic/elasticsearch/master ELASTICSEARCH_IMAGE_TAG: latest SCHEMA_ES_IMAGE_NAME: registry.gitlab.com/redmic-project/elastic/schema-es/master SCHEMA_ES_IMAGE_TAG: latest ES_BOOTSTRAP_MEMORY_LOCK: 'true' OLD_ELASTIC_ADMIN_PASS: changeme ELASTIC_ADMIN_PASS: elastic_admin_pass ELASTIC_USER: elastic_user ELASTIC_USER_PASS: elastic_user_pass ELASTIC_USER_ROLE: redmic_user ES_JAVA_OPTS: '-Xms512m -Xmx512m -Djava.security.policy=file:///usr/share/elasticsearch/config/grovy-classes_whitelist.policy' ES_CLUSTER_NAME: elasticsearch_dev ES_NODE_NAME: node-1 ES_DISCOVERY_ZEN_MINIMUM_MASTER_NODES: 1 ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS: es-1 ES_XPACK_SECURITY_ENABLED: 'true' ELASTIC_HOSTS: es-1 ELASTIC_SCHEMA_VERSION: '0.1' ELASTIC_PORT: 9200 GITLAB_REGISTRY_HOST: registry.gitlab.com CI_DEPLOY_USER: ci_deploy_user CI_DEPLOY_PASSWORD: ci_deploy_password services: - ${DIND_IMAGE_NAME}:${DIND_IMAGE_TAG} before_script: - > deploy.sh SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE} SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD} OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID} OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET} AWS_ACCESS_KEY=${AWS_ACCESS_KEY} AWS_SECRET_KEY=${AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${ELASTIC_XPACKSECURITYUSER} AWS_REGION=${AWS_REGION} S3_BUCKET="${S3_BUCKET}" PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} environment: url: https://${PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} mkdir -p sql; chmod -R 755 sql; docker network create test; - > docker run -d --rm --name postgres \ -p 5432:5432 \ --network test \ --network-alias db \ -e POSTGRES_DB \ -e POSTGRES_USER \ -e POSTGRES_PASSWORD \ -v $(pwd)/sql:/sql \ postgres:${POSTGRES_IMAGE_TAG}; - > curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/oauth_database_structure_test.sql \ "https://gitlab.com/api/v4/snippets/${OAUTH_DATABASE_STRUCTURE_TEST_SNIPPET_ID}/raw"; curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/oauth_database_data_test.sql \ "https://gitlab.com/api/v4/snippets/${OAUTH_DATABASE_DATA_TEST_SNIPPET_ID}/raw"; curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/user_database_structure_test.sql \ "https://gitlab.com/api/v4/snippets/${USER_DATABASE_STRUCTURE_TEST_SNIPPET_ID}/raw"; curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/user_database_data_test.sql \ "https://gitlab.com/api/v4/snippets/${USER_DATABASE_DATA_TEST_SNIPPET_ID}/raw"; - > RETRIES=10; until docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -c 'select 1' > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do \ RETRIES=$((RETRIES-=1)) \ echo "Waiting for postgres server, ${RETRIES} remaining attempts..." \ sleep 1; done; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/oauth_database_structure_test.sql; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -c "ALTER ROLE ${SPRING_DATASOURCE_USERNAME} WITH PASSWORD '${SPRING_DATASOURCE_PASSWORD}'"; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/oauth_database_data_test.sql; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/user_database_structure_test.sql; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/user_database_data_test.sql; - > docker run -d --rm --name oauth \ -p 8081:8081 \ --network test \ -e SPRING_PROFILES_ACTIVE=dev \ -e SPRING_DATASOURCE_USERNAME \ -e SPRING_DATASOURCE_PASSWORD \ ${OAUTH_IMAGE_NAME}:${OAUTH_IMAGE_TAG}; - > docker run -d --rm --name user \ -p 8082:8082 \ --network test \ -e SPRING_PROFILES_ACTIVE=dev \ -e SPRING_DATASOURCE_USERNAME \ -e SPRING_DATASOURCE_PASSWORD \ -e OAUTH_CLIENT_ID \ -e OAUTH_CLIENT_SECRET \ ${USER_IMAGE_NAME}:${USER_IMAGE_TAG}; - > docker run -d --rm --name es-1 \ -p 9300:9300 \ -p 9200:9200 \ --network test \ --ulimit memlock=-1:-1 \ -e ES_BOOTSTRAP_MEMORY_LOCK \ -e OLD_ELASTIC_ADMIN_PASS \ -e ELASTIC_ADMIN_PASS \ -e ELASTIC_USER \ -e ELASTIC_USER_PASS \ -e ELASTIC_USER_ROLE \ -e ES_JAVA_OPTS \ -e ES_CLUSTER_NAME \ -e ES_NODE_NAME \ -e ES_DISCOVERY_ZEN_MINIMUM_MASTER_NODES \ -e ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS \ -e ES_XPACK_SECURITY_ENABLED \ ${ELASTICSEARCH_IMAGE_NAME}:${ELASTICSEARCH_IMAGE_TAG} - > HEALTH_CHECK_URL="${ELASTIC_HOSTS}:${ELASTIC_PORT}/_cat/health?h=status" RESPONSE=""; until [ "$RESPONSE" = 'green' ] do RESPONSE=$(curl --silent -u "${ELASTIC_USER}:${ELASTIC_USER_PASS}" "${HEALTH_CHECK_URL}") echo "Waiting for elasticsearch server, remaining attempts..." sleep 5 done docker login ${GITLAB_REGISTRY_HOST} -u ${CI_DEPLOY_USER} -p ${CI_DEPLOY_PASSWORD} docker run -d --rm --name schema-es \ --network test \ -e ELASTIC_USER \ -e ELASTIC_USER_PASS \ -e ELASTIC_HOSTS \ -e ELASTIC_SCHEMA_VERSION \ ${SCHEMA_ES_IMAGE_NAME}:${SCHEMA_ES_IMAGE_TAG} after_script: - docker stop user oauth postgres .deploy-development: .docker-build: variables: SPRING_PROFILES_ACTIVE: pre DBLD_PARENT_IMAGE_NAME: ${REDMIC_SERVER_IMAGE_NAME} DBLD_PARENT_IMAGE_TAG: ${REDMIC_SERVER_IMAGE_TAG} .deploy-production: .deploy: variables: SPRING_PROFILES_ACTIVE: prod STACK: api STATUS_CHECK_DELAY: 300 environment: url: https://${PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} Loading
.gitlab-ci.yml +173 −19 Original line number Diff line number Diff line Loading @@ -11,34 +11,188 @@ include: - project: 'redmic-project/gitlab-ci-templates' ref: master file: '/deployment.yml' - project: 'redmic-project/gitlab-ci-templates' ref: master file: '/deployment-custom-image.yml' stages: - build - license-list - pre-package - package - test-package - post-package - deploy .maven-build: variables: DOCKER_BUILD_ARGS: --build-arg PARENT_IMAGE_NAME=${REDMIC_SERVER_IMAGE_NAME} --build-arg PARENT_IMAGE_TAG=${REDMIC_SERVER_IMAGE_TAG} STACK: api STATUS_CHECK_DELAY: 300 .deploy: script: POSTGRES_IMAGE_TAG: 10.13-alpine POSTGRES_DB: redmic POSTGRES_USER: postgres POSTGRES_PASSWORD: password OAUTH_IMAGE_NAME: registry.gitlab.com/redmic-project/server/oauth/master OAUTH_IMAGE_TAG: latest OAUTH_CLIENT_ID: oauth_id OAUTH_CLIENT_SECRET: oauth_secret USER_IMAGE_NAME: registry.gitlab.com/redmic-project/server/user/master USER_IMAGE_TAG: latest DIND_IMAGE_NAME: docker DIND_IMAGE_TAG: dind DOCKER_HOST: tcp://docker:2375 SPRING_DATASOURCE_URL: jdbc:postgresql://docker:5432/redmic?stringtype=unspecified ELASTIC_ADDRESSES: docker OAUTH_SERVER: http://docker:8081 PROPERTY_USER_API: http://docker:8082 ELASTICSEARCH_IMAGE_NAME: registry.gitlab.com/redmic-project/elastic/elasticsearch/master ELASTICSEARCH_IMAGE_TAG: latest SCHEMA_ES_IMAGE_NAME: registry.gitlab.com/redmic-project/elastic/schema-es/master SCHEMA_ES_IMAGE_TAG: latest ES_BOOTSTRAP_MEMORY_LOCK: 'true' OLD_ELASTIC_ADMIN_PASS: changeme ELASTIC_ADMIN_PASS: elastic_admin_pass ELASTIC_USER: elastic_user ELASTIC_USER_PASS: elastic_user_pass ELASTIC_USER_ROLE: redmic_user ES_JAVA_OPTS: '-Xms512m -Xmx512m -Djava.security.policy=file:///usr/share/elasticsearch/config/grovy-classes_whitelist.policy' ES_CLUSTER_NAME: elasticsearch_dev ES_NODE_NAME: node-1 ES_DISCOVERY_ZEN_MINIMUM_MASTER_NODES: 1 ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS: es-1 ES_XPACK_SECURITY_ENABLED: 'true' ELASTIC_HOSTS: es-1 ELASTIC_SCHEMA_VERSION: '0.1' ELASTIC_PORT: 9200 GITLAB_REGISTRY_HOST: registry.gitlab.com CI_DEPLOY_USER: ci_deploy_user CI_DEPLOY_PASSWORD: ci_deploy_password services: - ${DIND_IMAGE_NAME}:${DIND_IMAGE_TAG} before_script: - > deploy.sh SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE} SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD} OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID} OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET} AWS_ACCESS_KEY=${AWS_ACCESS_KEY} AWS_SECRET_KEY=${AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${ELASTIC_XPACKSECURITYUSER} AWS_REGION=${AWS_REGION} S3_BUCKET="${S3_BUCKET}" PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME} environment: url: https://${PUBLIC_HOSTNAME}/${CI_PROJECT_NAME} mkdir -p sql; chmod -R 755 sql; docker network create test; - > docker run -d --rm --name postgres \ -p 5432:5432 \ --network test \ --network-alias db \ -e POSTGRES_DB \ -e POSTGRES_USER \ -e POSTGRES_PASSWORD \ -v $(pwd)/sql:/sql \ postgres:${POSTGRES_IMAGE_TAG}; - > curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/oauth_database_structure_test.sql \ "https://gitlab.com/api/v4/snippets/${OAUTH_DATABASE_STRUCTURE_TEST_SNIPPET_ID}/raw"; curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/oauth_database_data_test.sql \ "https://gitlab.com/api/v4/snippets/${OAUTH_DATABASE_DATA_TEST_SNIPPET_ID}/raw"; curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/user_database_structure_test.sql \ "https://gitlab.com/api/v4/snippets/${USER_DATABASE_STRUCTURE_TEST_SNIPPET_ID}/raw"; curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN_READ_API}" \ -o sql/user_database_data_test.sql \ "https://gitlab.com/api/v4/snippets/${USER_DATABASE_DATA_TEST_SNIPPET_ID}/raw"; - > RETRIES=10; until docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -c 'select 1' > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do \ RETRIES=$((RETRIES-=1)) \ echo "Waiting for postgres server, ${RETRIES} remaining attempts..." \ sleep 1; done; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/oauth_database_structure_test.sql; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -c "ALTER ROLE ${SPRING_DATASOURCE_USERNAME} WITH PASSWORD '${SPRING_DATASOURCE_PASSWORD}'"; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/oauth_database_data_test.sql; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/user_database_structure_test.sql; docker exec postgres psql -h localhost \ -d redmic \ -U ${POSTGRES_USER} \ -f /sql/user_database_data_test.sql; - > docker run -d --rm --name oauth \ -p 8081:8081 \ --network test \ -e SPRING_PROFILES_ACTIVE=dev \ -e SPRING_DATASOURCE_USERNAME \ -e SPRING_DATASOURCE_PASSWORD \ ${OAUTH_IMAGE_NAME}:${OAUTH_IMAGE_TAG}; - > docker run -d --rm --name user \ -p 8082:8082 \ --network test \ -e SPRING_PROFILES_ACTIVE=dev \ -e SPRING_DATASOURCE_USERNAME \ -e SPRING_DATASOURCE_PASSWORD \ -e OAUTH_CLIENT_ID \ -e OAUTH_CLIENT_SECRET \ ${USER_IMAGE_NAME}:${USER_IMAGE_TAG}; - > docker run -d --rm --name es-1 \ -p 9300:9300 \ -p 9200:9200 \ --network test \ --ulimit memlock=-1:-1 \ -e ES_BOOTSTRAP_MEMORY_LOCK \ -e OLD_ELASTIC_ADMIN_PASS \ -e ELASTIC_ADMIN_PASS \ -e ELASTIC_USER \ -e ELASTIC_USER_PASS \ -e ELASTIC_USER_ROLE \ -e ES_JAVA_OPTS \ -e ES_CLUSTER_NAME \ -e ES_NODE_NAME \ -e ES_DISCOVERY_ZEN_MINIMUM_MASTER_NODES \ -e ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS \ -e ES_XPACK_SECURITY_ENABLED \ ${ELASTICSEARCH_IMAGE_NAME}:${ELASTICSEARCH_IMAGE_TAG} - > HEALTH_CHECK_URL="${ELASTIC_HOSTS}:${ELASTIC_PORT}/_cat/health?h=status" RESPONSE=""; until [ "$RESPONSE" = 'green' ] do RESPONSE=$(curl --silent -u "${ELASTIC_USER}:${ELASTIC_USER_PASS}" "${HEALTH_CHECK_URL}") echo "Waiting for elasticsearch server, remaining attempts..." sleep 5 done docker login ${GITLAB_REGISTRY_HOST} -u ${CI_DEPLOY_USER} -p ${CI_DEPLOY_PASSWORD} docker run -d --rm --name schema-es \ --network test \ -e ELASTIC_USER \ -e ELASTIC_USER_PASS \ -e ELASTIC_HOSTS \ -e ELASTIC_SCHEMA_VERSION \ ${SCHEMA_ES_IMAGE_NAME}:${SCHEMA_ES_IMAGE_TAG} after_script: - docker stop user oauth postgres .deploy-development: .docker-build: variables: SPRING_PROFILES_ACTIVE: pre DBLD_PARENT_IMAGE_NAME: ${REDMIC_SERVER_IMAGE_NAME} DBLD_PARENT_IMAGE_TAG: ${REDMIC_SERVER_IMAGE_TAG} .deploy-production: .deploy: variables: SPRING_PROFILES_ACTIVE: prod STACK: api STATUS_CHECK_DELAY: 300 environment: url: https://${PUBLIC_HOSTNAME}/${CI_PROJECT_NAME}