Loading .gitlab-ci.yml +71 −25 Original line number Diff line number Diff line Loading @@ -6,32 +6,43 @@ stages: maven-build: stage: build image: redmic/maven-gitlab image: registry.gitlab.com/redmic-project/docker/maven variables: MAVEN_OPTS: -Dmaven.repo.local=.m2/repository SPRING_PROFILES_ACTIVE: test MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dspring.datasource.username=${DEV_SPRING_DATASOURCE_USERNAME} -Dspring.datasource.password=${DEV_SPRING_DATASOURCE_PASSWORD}" LOGGING_LEVEL_ROOT: error LOGGING_LEVEL_ORG_SPRINGFRAMEWORK: error SPRING_DATASOURCE_USERNAME: ${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD: ${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME: ${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD: ${DEV_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY: ${DEV_AWS_ACCESS_KEY} AWS_SECRET_KEY: ${DEV_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER: ${DEV_ELASTIC_XPACKSECURITYUSER} only: - branches cache: paths: - .m2/repository/ script: - mvn verify ${MAVEN_OPTS} spring-boot:repackage -B ${MAVEN_OPTS} - mvn verify spring-boot:repackage -B - "COVERAGE=$(xmllint --html --xpath '//table[@id=\"coveragetable\"]/tfoot//td[@class=\"ctr2\"][1]/text()' target/site/jacoco/index.html)" - 'echo "Coverage: ${COVERAGE}"' after_script: - rm -r .m2/repository/es artifacts: name: "${CI_PROJECT_NAME}" name: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}" expire_in: '6 months' paths: - dist/*.jar docker-build-commit: docker-build-commit-non-master-branches: stage: package image: redmic/docker-gitlab image: docker:stable variables: DOCKER_DRIVER: overlay2 PARENT_IMAGE_NAME: registry.gitlab.com/redmic-project/docker/redmic-server PARENT_IMAGE_TAG: latest services: - docker:dind only: Loading @@ -40,12 +51,32 @@ docker-build-commit: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - > docker build --build-arg PARENT_IMAGE_NAME=${PARENT_IMAGE_NAME} --build-arg PARENT_IMAGE_TAG=${PARENT_IMAGE_TAG} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - docker push ${CI_REGISTRY_IMAGE} docker-build-tag: docker-build-commit-master-branch: stage: package image: redmic/docker-gitlab image: docker:stable variables: DOCKER_DRIVER: overlay2 PARENT_IMAGE_NAME: registry.gitlab.com/redmic-project/docker/redmic-server PARENT_IMAGE_TAG: latest services: - docker:dind only: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - > docker build --build-arg PARENT_IMAGE_NAME=${PARENT_IMAGE_NAME} --build-arg PARENT_IMAGE_TAG=${PARENT_IMAGE_TAG} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:latest . - docker push ${CI_REGISTRY_IMAGE} docker-tag-already-built-image: stage: package image: docker:stable variables: DOCKER_DRIVER: overlay2 services: Loading @@ -54,10 +85,10 @@ docker-build-tag: - tags script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} -t ${CI_REGISTRY_IMAGE}:latest . - docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} - docker push ${CI_REGISTRY_IMAGE} container_scanning: container-scanning: stage: test-package image: docker:stable variables: Loading @@ -67,8 +98,6 @@ container_scanning: - docker:stable-dind only: - branches except: - master script: - docker run -d --name db arminc/clair-db:latest - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 Loading @@ -79,24 +108,31 @@ container_scanning: - mv clair-scanner_linux_amd64 clair-scanner - chmod +x clair-scanner - touch clair-whitelist.yml - ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true - > ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true artifacts: paths: [gl-sast-container-report.json] deploy-dev: stage: deploy image: redmic/docker-gitlab image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: DOCKER_DRIVER: overlay2 SSH_REMOTE: ${DEV_SSH_REMOTE} SERVICE: ${CI_PROJECT_NAME} IMAGE_NAME: ${DOCKER_ENV_CI_REGISTRY_IMAGE} IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml services: - docker:dind script: - deploy.sh SPRING_PROFILES_ACTIVE=pre IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY=${DEV_AWS_ACCESS_KEY} AWS_SECRET_KEY=${DEV_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} Loading @@ -105,18 +141,23 @@ deploy-dev: deploy-supporting-branch: stage: deploy image: redmic/docker-gitlab image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: DOCKER_DRIVER: overlay2 SSH_REMOTE: ${DEV_SSH_REMOTE} SERVICE: ${CI_PROJECT_NAME} IMAGE_NAME: ${DOCKER_ENV_CI_REGISTRY_IMAGE} IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml services: - docker:dind script: - deploy.sh SPRING_PROFILES_ACTIVE=pre IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY=${DEV_AWS_ACCESS_KEY} AWS_SECRET_KEY=${DEV_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} Loading @@ -129,21 +170,26 @@ deploy-supporting-branch: deploy-pro: stage: deploy image: redmic/docker-gitlab image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: DOCKER_DRIVER: overlay2 SSH_REMOTE: ${PRO_SSH_REMOTE} SERVICE: ${CI_PROJECT_NAME} IMAGE_NAME: ${DOCKER_ENV_CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_TAG} IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml services: - docker:dind script: - deploy.sh SPRING_PROFILES_ACTIVE=prod IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_DATASOURCE_USERNAME=${PRO_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${PRO_SPRING_DATASOURCE_PASSWORD} - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=prod SPRING_DATASOURCE_USERNAME=${PRO_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${PRO_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${PRO_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${PRO_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY=${PRO_AWS_ACCESS_KEY} AWS_SECRET_KEY=${PRO_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${PRO_ELASTIC_XPACKSECURITYUSER} environment: name: pro url: https://${PRO_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} only: - tags - master when: manual Dockerfile +7 −5 Original line number Diff line number Diff line FROM redmic/redmic-server ARG PARENT_IMAGE_NAME ARG PARENT_IMAGE_TAG FROM ${PARENT_IMAGE_NAME}:${PARENT_IMAGE_TAG} COPY /dist/*.jar ./ EXPOSE 8080 EXPOSE ${MICROSERVICE_PORT} ENTRYPOINT java $JAVA_OPTS \ ENTRYPOINT java ${JAVA_OPTS} \ -Djava.security.egd=file:/dev/./urandom \ -Dlogging.level.org.springframework=${LOG_LEVEL} \ -jar ${DIRPATH}/tasks.jar -jar ${DIRPATH}/${MICROSERVICE_NAME}.jar docker-compose.prod.yml +0 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,6 @@ version: '3.5' services: tasks: ports: - ${MICROSERVICE_PORT} networks: - traefik-net deploy: Loading docker-compose.tmpl.yml +10 −1 Original line number Diff line number Diff line Loading @@ -2,9 +2,18 @@ version: '3.5' services: tasks: image: registry.redmic.net/redmic-server/${MICROSERVICE_NAME}:${IMAGE_TAG:-latest} image: ${IMAGE_NAME}:${IMAGE_TAG:-latest} environment: - MICROSERVICE_NAME - MICROSERVICE_PORT - SPRING_PROFILES_ACTIVE - SPRING_DATASOURCE_USERNAME - SPRING_DATASOURCE_PASSWORD - JOBS_DATASOURCE_USERNAME - JOBS_DATASOURCE_PASSWORD - AWS_ACCESS_KEY - AWS_SECRET_KEY - ELASTIC_XPACKSECURITYUSER - JAVA_OPTS=-Xmx1g -Xss1g networks: - elastic-net Loading pom.xml +125 −19 Original line number Diff line number Diff line Loading @@ -3,64 +3,94 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>es.redmic</groupId> <artifactId>redmic</artifactId> <version>0.6.0</version> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>es.redmic</groupId> <artifactId>tasks</artifactId> <packaging>jar</packaging> <version>0.6.0</version> <name>Tasks</name> <description>Tasks server</description> <dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <java.version>1.8</java.version> <tomcat.version>8.5.28</tomcat.version> <!-- REDMIC --> <redmic.db.version>0.6.0</redmic.db.version> <redmic.reports.version>0.6.0</redmic.reports.version> <redmic.elasticsearch.version>0.6.0</redmic.elasticsearch.version> <redmic.utils.version>0.6.0</redmic.utils.version> <redmic.exceptions.version>0.6.0</redmic.exceptions.version> <redmic.models.version>0.6.0</redmic.models.version> <redmic.mediastorage.version>0.6.0</redmic.mediastorage.version> <redmic.broker-lib.version>0.6.0</redmic.broker-lib.version> <redmic.test-utils.version>0.6.0</redmic.test-utils.version> <!-- OTHER --> <powermock.version>1.7.3</powermock.version> <kafka.version>1.1.0</kafka.version> <!-- Plugins --> <jacoco.version>0.8.1</jacoco.version> </properties> <dependencies> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>db</artifactId> <version>${redmic.version}</version> <version>${redmic.db.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>reports</artifactId> <version>${redmic.version}</version> <version>${redmic.reports.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>elasticsearch</artifactId> <version>${redmic.version}</version> <version>${redmic.elasticsearch.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>utils</artifactId> <version>${redmic.version}</version> <version>${redmic.utils.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>exceptions</artifactId> <version>${redmic.version}</version> <version>${redmic.exceptions.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>models</artifactId> <version>${redmic.version}</version> <version>${redmic.models.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>mediastorage</artifactId> <version>${redmic.version}</version> <version>${redmic.mediastorage.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>broker-lib</artifactId> <version>${redmic.version}</version> <version>${redmic.broker-lib.version}</version> </dependency> <!-- Spring --> Loading Loading @@ -91,6 +121,17 @@ <artifactId>micrometer-registry-prometheus</artifactId> </dependency> <!-- Logs --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> <!-- Test --> <dependency> Loading @@ -104,16 +145,54 @@ <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency> <!-- Override kafkaClient version --> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.version}</version> <classifier>test</classifier> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>${kafka.version}</version> <classifier>test</classifier> <scope>test</scope> </dependency> <!-- --> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>test-utils</artifactId> <version>${redmic.test-utils.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-easymock</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> </dependencies> <repositories> <repository> <id>confluent</id> <name>Confluent</name> <url>https://packages.confluent.io/maven/</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> Loading @@ -130,6 +209,33 @@ </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <reuseForks>false</reuseForks> </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>pre-unit-test</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>post-unit-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> Loading
.gitlab-ci.yml +71 −25 Original line number Diff line number Diff line Loading @@ -6,32 +6,43 @@ stages: maven-build: stage: build image: redmic/maven-gitlab image: registry.gitlab.com/redmic-project/docker/maven variables: MAVEN_OPTS: -Dmaven.repo.local=.m2/repository SPRING_PROFILES_ACTIVE: test MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dspring.datasource.username=${DEV_SPRING_DATASOURCE_USERNAME} -Dspring.datasource.password=${DEV_SPRING_DATASOURCE_PASSWORD}" LOGGING_LEVEL_ROOT: error LOGGING_LEVEL_ORG_SPRINGFRAMEWORK: error SPRING_DATASOURCE_USERNAME: ${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD: ${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME: ${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD: ${DEV_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY: ${DEV_AWS_ACCESS_KEY} AWS_SECRET_KEY: ${DEV_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER: ${DEV_ELASTIC_XPACKSECURITYUSER} only: - branches cache: paths: - .m2/repository/ script: - mvn verify ${MAVEN_OPTS} spring-boot:repackage -B ${MAVEN_OPTS} - mvn verify spring-boot:repackage -B - "COVERAGE=$(xmllint --html --xpath '//table[@id=\"coveragetable\"]/tfoot//td[@class=\"ctr2\"][1]/text()' target/site/jacoco/index.html)" - 'echo "Coverage: ${COVERAGE}"' after_script: - rm -r .m2/repository/es artifacts: name: "${CI_PROJECT_NAME}" name: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}" expire_in: '6 months' paths: - dist/*.jar docker-build-commit: docker-build-commit-non-master-branches: stage: package image: redmic/docker-gitlab image: docker:stable variables: DOCKER_DRIVER: overlay2 PARENT_IMAGE_NAME: registry.gitlab.com/redmic-project/docker/redmic-server PARENT_IMAGE_TAG: latest services: - docker:dind only: Loading @@ -40,12 +51,32 @@ docker-build-commit: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - > docker build --build-arg PARENT_IMAGE_NAME=${PARENT_IMAGE_NAME} --build-arg PARENT_IMAGE_TAG=${PARENT_IMAGE_TAG} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest . - docker push ${CI_REGISTRY_IMAGE} docker-build-tag: docker-build-commit-master-branch: stage: package image: redmic/docker-gitlab image: docker:stable variables: DOCKER_DRIVER: overlay2 PARENT_IMAGE_NAME: registry.gitlab.com/redmic-project/docker/redmic-server PARENT_IMAGE_TAG: latest services: - docker:dind only: - master script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - > docker build --build-arg PARENT_IMAGE_NAME=${PARENT_IMAGE_NAME} --build-arg PARENT_IMAGE_TAG=${PARENT_IMAGE_TAG} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:latest . - docker push ${CI_REGISTRY_IMAGE} docker-tag-already-built-image: stage: package image: docker:stable variables: DOCKER_DRIVER: overlay2 services: Loading @@ -54,10 +85,10 @@ docker-build-tag: - tags script: - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY} - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} -t ${CI_REGISTRY_IMAGE}:latest . - docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} - docker push ${CI_REGISTRY_IMAGE} container_scanning: container-scanning: stage: test-package image: docker:stable variables: Loading @@ -67,8 +98,6 @@ container_scanning: - docker:stable-dind only: - branches except: - master script: - docker run -d --name db arminc/clair-db:latest - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 Loading @@ -79,24 +108,31 @@ container_scanning: - mv clair-scanner_linux_amd64 clair-scanner - chmod +x clair-scanner - touch clair-whitelist.yml - ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true - > ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true artifacts: paths: [gl-sast-container-report.json] deploy-dev: stage: deploy image: redmic/docker-gitlab image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: DOCKER_DRIVER: overlay2 SSH_REMOTE: ${DEV_SSH_REMOTE} SERVICE: ${CI_PROJECT_NAME} IMAGE_NAME: ${DOCKER_ENV_CI_REGISTRY_IMAGE} IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml services: - docker:dind script: - deploy.sh SPRING_PROFILES_ACTIVE=pre IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY=${DEV_AWS_ACCESS_KEY} AWS_SECRET_KEY=${DEV_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} Loading @@ -105,18 +141,23 @@ deploy-dev: deploy-supporting-branch: stage: deploy image: redmic/docker-gitlab image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: DOCKER_DRIVER: overlay2 SSH_REMOTE: ${DEV_SSH_REMOTE} SERVICE: ${CI_PROJECT_NAME} IMAGE_NAME: ${DOCKER_ENV_CI_REGISTRY_IMAGE} IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml services: - docker:dind script: - deploy.sh SPRING_PROFILES_ACTIVE=pre IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=pre SPRING_DATASOURCE_USERNAME=${DEV_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${DEV_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${DEV_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${DEV_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY=${DEV_AWS_ACCESS_KEY} AWS_SECRET_KEY=${DEV_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${DEV_ELASTIC_XPACKSECURITYUSER} environment: name: dev url: https://appdev.${DEV_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} Loading @@ -129,21 +170,26 @@ deploy-supporting-branch: deploy-pro: stage: deploy image: redmic/docker-gitlab image: registry.gitlab.com/redmic-project/docker/docker-deploy variables: DOCKER_DRIVER: overlay2 SSH_REMOTE: ${PRO_SSH_REMOTE} SERVICE: ${CI_PROJECT_NAME} IMAGE_NAME: ${DOCKER_ENV_CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_TAG} IMAGE_NAME: ${CI_REGISTRY_IMAGE} IMAGE_TAG: ${CI_COMMIT_SHA} COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml services: - docker:dind script: - deploy.sh SPRING_PROFILES_ACTIVE=prod IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_DATASOURCE_USERNAME=${PRO_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${PRO_SPRING_DATASOURCE_PASSWORD} - > deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} SPRING_PROFILES_ACTIVE=prod SPRING_DATASOURCE_USERNAME=${PRO_SPRING_DATASOURCE_USERNAME} SPRING_DATASOURCE_PASSWORD=${PRO_SPRING_DATASOURCE_PASSWORD} JOBS_DATASOURCE_USERNAME=${PRO_JOBS_DATASOURCE_USERNAME} JOBS_DATASOURCE_PASSWORD=${PRO_JOBS_DATASOURCE_PASSWORD} AWS_ACCESS_KEY=${PRO_AWS_ACCESS_KEY} AWS_SECRET_KEY=${PRO_AWS_SECRET_KEY} ELASTIC_XPACKSECURITYUSER=${PRO_ELASTIC_XPACKSECURITYUSER} environment: name: pro url: https://${PRO_PUBLIC_HOSTNAME}/api/${CI_PROJECT_NAME} only: - tags - master when: manual
Dockerfile +7 −5 Original line number Diff line number Diff line FROM redmic/redmic-server ARG PARENT_IMAGE_NAME ARG PARENT_IMAGE_TAG FROM ${PARENT_IMAGE_NAME}:${PARENT_IMAGE_TAG} COPY /dist/*.jar ./ EXPOSE 8080 EXPOSE ${MICROSERVICE_PORT} ENTRYPOINT java $JAVA_OPTS \ ENTRYPOINT java ${JAVA_OPTS} \ -Djava.security.egd=file:/dev/./urandom \ -Dlogging.level.org.springframework=${LOG_LEVEL} \ -jar ${DIRPATH}/tasks.jar -jar ${DIRPATH}/${MICROSERVICE_NAME}.jar
docker-compose.prod.yml +0 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,6 @@ version: '3.5' services: tasks: ports: - ${MICROSERVICE_PORT} networks: - traefik-net deploy: Loading
docker-compose.tmpl.yml +10 −1 Original line number Diff line number Diff line Loading @@ -2,9 +2,18 @@ version: '3.5' services: tasks: image: registry.redmic.net/redmic-server/${MICROSERVICE_NAME}:${IMAGE_TAG:-latest} image: ${IMAGE_NAME}:${IMAGE_TAG:-latest} environment: - MICROSERVICE_NAME - MICROSERVICE_PORT - SPRING_PROFILES_ACTIVE - SPRING_DATASOURCE_USERNAME - SPRING_DATASOURCE_PASSWORD - JOBS_DATASOURCE_USERNAME - JOBS_DATASOURCE_PASSWORD - AWS_ACCESS_KEY - AWS_SECRET_KEY - ELASTIC_XPACKSECURITYUSER - JAVA_OPTS=-Xmx1g -Xss1g networks: - elastic-net Loading
pom.xml +125 −19 Original line number Diff line number Diff line Loading @@ -3,64 +3,94 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>es.redmic</groupId> <artifactId>redmic</artifactId> <version>0.6.0</version> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>es.redmic</groupId> <artifactId>tasks</artifactId> <packaging>jar</packaging> <version>0.6.0</version> <name>Tasks</name> <description>Tasks server</description> <dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <java.version>1.8</java.version> <tomcat.version>8.5.28</tomcat.version> <!-- REDMIC --> <redmic.db.version>0.6.0</redmic.db.version> <redmic.reports.version>0.6.0</redmic.reports.version> <redmic.elasticsearch.version>0.6.0</redmic.elasticsearch.version> <redmic.utils.version>0.6.0</redmic.utils.version> <redmic.exceptions.version>0.6.0</redmic.exceptions.version> <redmic.models.version>0.6.0</redmic.models.version> <redmic.mediastorage.version>0.6.0</redmic.mediastorage.version> <redmic.broker-lib.version>0.6.0</redmic.broker-lib.version> <redmic.test-utils.version>0.6.0</redmic.test-utils.version> <!-- OTHER --> <powermock.version>1.7.3</powermock.version> <kafka.version>1.1.0</kafka.version> <!-- Plugins --> <jacoco.version>0.8.1</jacoco.version> </properties> <dependencies> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>db</artifactId> <version>${redmic.version}</version> <version>${redmic.db.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>reports</artifactId> <version>${redmic.version}</version> <version>${redmic.reports.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>elasticsearch</artifactId> <version>${redmic.version}</version> <version>${redmic.elasticsearch.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>utils</artifactId> <version>${redmic.version}</version> <version>${redmic.utils.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>exceptions</artifactId> <version>${redmic.version}</version> <version>${redmic.exceptions.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>models</artifactId> <version>${redmic.version}</version> <version>${redmic.models.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>mediastorage</artifactId> <version>${redmic.version}</version> <version>${redmic.mediastorage.version}</version> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>broker-lib</artifactId> <version>${redmic.version}</version> <version>${redmic.broker-lib.version}</version> </dependency> <!-- Spring --> Loading Loading @@ -91,6 +121,17 @@ <artifactId>micrometer-registry-prometheus</artifactId> </dependency> <!-- Logs --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> <!-- Test --> <dependency> Loading @@ -104,16 +145,54 @@ <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency> <!-- Override kafkaClient version --> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.version}</version> <classifier>test</classifier> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>${kafka.version}</version> <classifier>test</classifier> <scope>test</scope> </dependency> <!-- --> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>test-utils</artifactId> <version>${redmic.test-utils.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-easymock</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> </dependencies> <repositories> <repository> <id>confluent</id> <name>Confluent</name> <url>https://packages.confluent.io/maven/</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> Loading @@ -130,6 +209,33 @@ </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <reuseForks>false</reuseForks> </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>pre-unit-test</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>post-unit-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>