Loading .gitlab-ci.yml +6 −0 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,12 @@ stages: - unit_test - unit_test - end2end_test - end2end_test workflow: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' when: always - when: never # include the individual .gitlab-ci.yml of each micro-service and tests # include the individual .gitlab-ci.yml of each micro-service and tests include: include: #- local: '/manifests/.gitlab-ci.yml' #- local: '/manifests/.gitlab-ci.yml' Loading src/device/service/drivers/ryu/RyuApiClient.py +18 −19 Original line number Original line Diff line number Diff line Loading @@ -143,19 +143,20 @@ class RyuApiClient: return result return result def add_flow_rule( def add_flow_rule( self, dpid : int, in_port : int, out_port : int, self, dpid : int, in_port : Optional[int], out_port : int, eth_type : int, ip_src_addr : str, ip_dst_addr : str, eth_type : Optional[int], ip_src_addr : Optional[str], ip_dst_addr : Optional[str], priority : int = 65535, priority : int = 65535, ) -> Union[bool, Exception]: ) -> Union[bool, Exception]: match = dict() if in_port is not None: match['in_port' ] = in_port if eth_type is not None: match['eth_type'] = eth_type if ip_src_addr is not None: match['ipv4_src'] = ip_src_addr if ip_dst_addr is not None: match['ipv4_dst'] = ip_dst_addr flow_entry = { flow_entry = { "dpid" : dpid, "dpid" : dpid, "priority": priority, "priority": priority, "match" : { "match" : match, "in_port" : in_port, "eth_type": eth_type, "ipv4_src": ip_src_addr, "ipv4_dst": ip_dst_addr, }, "instructions": [ "instructions": [ { { "type": "APPLY_ACTIONS", "type": "APPLY_ACTIONS", Loading Loading @@ -191,22 +192,20 @@ class RyuApiClient: def del_flow_rule( def del_flow_rule( self, dpid : int, in_port : int, out_port : int, self, dpid : int, in_port : Optional[int], out_port : int, eth_type : int, ip_src_addr : str, ip_dst_addr : str, eth_type : Optional[int], ip_src_addr : Optional[str], ip_dst_addr : Optional[str], priority : int = 65535, priority : int = 65535, ) -> Union[bool, Exception]: ) -> Union[bool, Exception]: match = dict(table_id=0, cookie=0, cookie_mask=0) if in_port is not None: match['in_port' ] = in_port if eth_type is not None: match['eth_type'] = eth_type if ip_src_addr is not None: match['ipv4_src'] = ip_src_addr if ip_dst_addr is not None: match['ipv4_dst'] = ip_dst_addr flow_entry = { flow_entry = { "dpid" : dpid, "dpid" : dpid, "priority": priority, "priority": priority, "match" : { "match" : match, "in_port" : in_port, "eth_type": eth_type, "ipv4_src": ip_src_addr, "ipv4_dst": ip_dst_addr, "table_id" : 0, "cookie" : 0, "cookie_mask": 0, }, "instructions": [ "instructions": [ { { "type": "APPLY_ACTIONS", "type": "APPLY_ACTIONS", Loading src/device/service/drivers/ryu/RyuDriver.py +6 −6 Original line number Original line Diff line number Diff line Loading @@ -91,8 +91,8 @@ class RyuDriver(_Driver): dpid = int(resource_value_dict["dpid"], 16) dpid = int(resource_value_dict["dpid"], 16) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) ip_src_addr = resource_value_dict.get("ip_address_source", "") src_ip_addr = resource_value_dict.get("src-ip-addr", "") ip_dst_addr = resource_value_dict.get("ip_address_destination", "") dst_ip_addr = resource_value_dict.get("dst-ip-addr", "") if "h1-h3" in resource_key: if "h1-h3" in resource_key: priority = 1000 priority = 1000 Loading @@ -111,7 +111,7 @@ class RyuDriver(_Driver): continue continue results.append(self.rac.add_flow_rule( results.append(self.rac.add_flow_rule( dpid, in_port, out_port, 0x0800, ip_src_addr, ip_dst_addr, dpid, in_port, out_port, 0x0800, src_ip_addr, dst_ip_addr, priority=priority priority=priority )) )) except Exception as e: except Exception as e: Loading Loading @@ -143,8 +143,8 @@ class RyuDriver(_Driver): dpid = int(resource_value_dict["dpid"], 16) dpid = int(resource_value_dict["dpid"], 16) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) ip_src_addr = resource_value_dict.get("ip_address_source", "") src_ip_addr = resource_value_dict.get("src-ip-addr", "") ip_dst_addr = resource_value_dict.get("ip_address_destination", "") dst_ip_addr = resource_value_dict.get("dst-ip-addr", "") if "h1-h3" in resource_key: if "h1-h3" in resource_key: priority = 1000 priority = 1000 Loading @@ -163,7 +163,7 @@ class RyuDriver(_Driver): continue continue results.append(self.rac.del_flow_rule( results.append(self.rac.del_flow_rule( dpid, in_port, out_port, 0x0800, ip_src_addr, ip_dst_addr, dpid, in_port, out_port, 0x0800, src_ip_addr, dst_ip_addr, priority=priority priority=priority )) )) except Exception as e: except Exception as e: Loading src/pathcomp/frontend/service/algorithms/tools/ResourceGroups.py +1 −1 Original line number Original line Diff line number Diff line Loading @@ -30,7 +30,7 @@ DEVICE_TYPE_TO_DEEPNESS = { DeviceTypeEnum.IP_SDN_CONTROLLER.value : 80, DeviceTypeEnum.IP_SDN_CONTROLLER.value : 80, DeviceTypeEnum.IETF_SLICE.value : 80, DeviceTypeEnum.IETF_SLICE.value : 80, DeviceTypeEnum.NCE.value : 80, DeviceTypeEnum.NCE.value : 80, DeviceTypeEnum.OPENFLOW_RYU_CONTROLLER.value : 80, DeviceTypeEnum.EMULATED_PACKET_ROUTER.value : 70, DeviceTypeEnum.EMULATED_PACKET_ROUTER.value : 70, DeviceTypeEnum.PACKET_POP.value : 70, DeviceTypeEnum.PACKET_POP.value : 70, Loading src/policy/.gitlab-ci.yml +10 −10 Original line number Original line Diff line number Diff line Loading @@ -24,10 +24,10 @@ build policy: - docker image prune --force - docker image prune --force - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: script: - export IMAGE_TAG=$(grep -m1 '<version>' ./src/$IMAGE_NAME_POLICY/pom.xml | grep -oP '(?<=>).*(?=<)') - export POL_IMAGE_TAG=$(grep -m1 '<version>' ./src/$IMAGE_NAME_POLICY/pom.xml | grep -oP '(?<=>).*(?=<)') - echo "IMAGE_TAG=${IMAGE_TAG}" >> ${BUILD_ENV_POLICY} - echo "POL_IMAGE_TAG=${POL_IMAGE_TAG}" >> ${BUILD_ENV_POLICY} - cat ${BUILD_ENV_POLICY} - cat ${BUILD_ENV_POLICY} - docker buildx build -t "$IMAGE_NAME_POLICY:$IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target builder - docker buildx build -t "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target builder after_script: after_script: - docker image prune --force - docker image prune --force artifacts: artifacts: Loading @@ -52,10 +52,10 @@ unit_test policy: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker rm ${REPORTS_CONTAINER} || true - docker rm ${REPORTS_CONTAINER} || true script: script: - echo "Running tests for image ${IMAGE_TAG}" - echo "Running tests for image ${POL_IMAGE_TAG}" - docker buildx build -t "$IMAGE_NAME_POLICY:$IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target unit-test - docker buildx build -t "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target unit-test # Transfer JaCoCo and Surefire reports from within tests image # Transfer JaCoCo and Surefire reports from within tests image - docker create --name ${REPORTS_CONTAINER} "$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker create --name ${REPORTS_CONTAINER} "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" - mkdir -p ${REPORTS_PATH_POLICY} - mkdir -p ${REPORTS_PATH_POLICY} - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/index.html ${REPORTS_PATH_POLICY}/coverage.html - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/index.html ${REPORTS_PATH_POLICY}/coverage.html - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/jacoco.xml ${REPORTS_PATH_POLICY}/jacoco.xml - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/jacoco.xml ${REPORTS_PATH_POLICY}/jacoco.xml Loading @@ -63,12 +63,12 @@ unit_test policy: - cat ${REPORTS_PATH_POLICY}/coverage.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/JaCoCo Coverage Total:/' - cat ${REPORTS_PATH_POLICY}/coverage.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/JaCoCo Coverage Total:/' - docker run -v "$(pwd)/src/${IMAGE_NAME_POLICY}:/${IMAGE_NAME_POLICY}" --rm registry.gitlab.com/haynes/jacoco2cobertura:1.0.7 python /opt/cover2cover.py ${IMAGE_NAME_POLICY}/reports/jacoco.xml ${IMAGE_NAME_POLICY}/src/main/java > ${REPORTS_PATH_POLICY}/cobertura.xml - docker run -v "$(pwd)/src/${IMAGE_NAME_POLICY}:/${IMAGE_NAME_POLICY}" --rm registry.gitlab.com/haynes/jacoco2cobertura:1.0.7 python /opt/cover2cover.py ${IMAGE_NAME_POLICY}/reports/jacoco.xml ${IMAGE_NAME_POLICY}/src/main/java > ${REPORTS_PATH_POLICY}/cobertura.xml # Build final image # Build final image - docker buildx build -t "$IMAGE_NAME_POLICY:$IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target release - docker buildx build -t "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target release - docker tag "$IMAGE_NAME_POLICY:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker tag "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" after_script: after_script: - docker rm ${REPORTS_CONTAINER} - docker rm ${REPORTS_CONTAINER} - docker rm -f "$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker rm -f "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" coverage: '/JaCoCo Coverage Total: ([0-9]{1,3})%/' coverage: '/JaCoCo Coverage Total: ([0-9]{1,3})%/' artifacts: artifacts: reports: reports: Loading Loading
.gitlab-ci.yml +6 −0 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,12 @@ stages: - unit_test - unit_test - end2end_test - end2end_test workflow: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' when: always - when: never # include the individual .gitlab-ci.yml of each micro-service and tests # include the individual .gitlab-ci.yml of each micro-service and tests include: include: #- local: '/manifests/.gitlab-ci.yml' #- local: '/manifests/.gitlab-ci.yml' Loading
src/device/service/drivers/ryu/RyuApiClient.py +18 −19 Original line number Original line Diff line number Diff line Loading @@ -143,19 +143,20 @@ class RyuApiClient: return result return result def add_flow_rule( def add_flow_rule( self, dpid : int, in_port : int, out_port : int, self, dpid : int, in_port : Optional[int], out_port : int, eth_type : int, ip_src_addr : str, ip_dst_addr : str, eth_type : Optional[int], ip_src_addr : Optional[str], ip_dst_addr : Optional[str], priority : int = 65535, priority : int = 65535, ) -> Union[bool, Exception]: ) -> Union[bool, Exception]: match = dict() if in_port is not None: match['in_port' ] = in_port if eth_type is not None: match['eth_type'] = eth_type if ip_src_addr is not None: match['ipv4_src'] = ip_src_addr if ip_dst_addr is not None: match['ipv4_dst'] = ip_dst_addr flow_entry = { flow_entry = { "dpid" : dpid, "dpid" : dpid, "priority": priority, "priority": priority, "match" : { "match" : match, "in_port" : in_port, "eth_type": eth_type, "ipv4_src": ip_src_addr, "ipv4_dst": ip_dst_addr, }, "instructions": [ "instructions": [ { { "type": "APPLY_ACTIONS", "type": "APPLY_ACTIONS", Loading Loading @@ -191,22 +192,20 @@ class RyuApiClient: def del_flow_rule( def del_flow_rule( self, dpid : int, in_port : int, out_port : int, self, dpid : int, in_port : Optional[int], out_port : int, eth_type : int, ip_src_addr : str, ip_dst_addr : str, eth_type : Optional[int], ip_src_addr : Optional[str], ip_dst_addr : Optional[str], priority : int = 65535, priority : int = 65535, ) -> Union[bool, Exception]: ) -> Union[bool, Exception]: match = dict(table_id=0, cookie=0, cookie_mask=0) if in_port is not None: match['in_port' ] = in_port if eth_type is not None: match['eth_type'] = eth_type if ip_src_addr is not None: match['ipv4_src'] = ip_src_addr if ip_dst_addr is not None: match['ipv4_dst'] = ip_dst_addr flow_entry = { flow_entry = { "dpid" : dpid, "dpid" : dpid, "priority": priority, "priority": priority, "match" : { "match" : match, "in_port" : in_port, "eth_type": eth_type, "ipv4_src": ip_src_addr, "ipv4_dst": ip_dst_addr, "table_id" : 0, "cookie" : 0, "cookie_mask": 0, }, "instructions": [ "instructions": [ { { "type": "APPLY_ACTIONS", "type": "APPLY_ACTIONS", Loading
src/device/service/drivers/ryu/RyuDriver.py +6 −6 Original line number Original line Diff line number Diff line Loading @@ -91,8 +91,8 @@ class RyuDriver(_Driver): dpid = int(resource_value_dict["dpid"], 16) dpid = int(resource_value_dict["dpid"], 16) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) ip_src_addr = resource_value_dict.get("ip_address_source", "") src_ip_addr = resource_value_dict.get("src-ip-addr", "") ip_dst_addr = resource_value_dict.get("ip_address_destination", "") dst_ip_addr = resource_value_dict.get("dst-ip-addr", "") if "h1-h3" in resource_key: if "h1-h3" in resource_key: priority = 1000 priority = 1000 Loading @@ -111,7 +111,7 @@ class RyuDriver(_Driver): continue continue results.append(self.rac.add_flow_rule( results.append(self.rac.add_flow_rule( dpid, in_port, out_port, 0x0800, ip_src_addr, ip_dst_addr, dpid, in_port, out_port, 0x0800, src_ip_addr, dst_ip_addr, priority=priority priority=priority )) )) except Exception as e: except Exception as e: Loading Loading @@ -143,8 +143,8 @@ class RyuDriver(_Driver): dpid = int(resource_value_dict["dpid"], 16) dpid = int(resource_value_dict["dpid"], 16) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) in_port = int(resource_value_dict["in-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) out_port = int(resource_value_dict["out-port"].split("-")[1][3:]) ip_src_addr = resource_value_dict.get("ip_address_source", "") src_ip_addr = resource_value_dict.get("src-ip-addr", "") ip_dst_addr = resource_value_dict.get("ip_address_destination", "") dst_ip_addr = resource_value_dict.get("dst-ip-addr", "") if "h1-h3" in resource_key: if "h1-h3" in resource_key: priority = 1000 priority = 1000 Loading @@ -163,7 +163,7 @@ class RyuDriver(_Driver): continue continue results.append(self.rac.del_flow_rule( results.append(self.rac.del_flow_rule( dpid, in_port, out_port, 0x0800, ip_src_addr, ip_dst_addr, dpid, in_port, out_port, 0x0800, src_ip_addr, dst_ip_addr, priority=priority priority=priority )) )) except Exception as e: except Exception as e: Loading
src/pathcomp/frontend/service/algorithms/tools/ResourceGroups.py +1 −1 Original line number Original line Diff line number Diff line Loading @@ -30,7 +30,7 @@ DEVICE_TYPE_TO_DEEPNESS = { DeviceTypeEnum.IP_SDN_CONTROLLER.value : 80, DeviceTypeEnum.IP_SDN_CONTROLLER.value : 80, DeviceTypeEnum.IETF_SLICE.value : 80, DeviceTypeEnum.IETF_SLICE.value : 80, DeviceTypeEnum.NCE.value : 80, DeviceTypeEnum.NCE.value : 80, DeviceTypeEnum.OPENFLOW_RYU_CONTROLLER.value : 80, DeviceTypeEnum.EMULATED_PACKET_ROUTER.value : 70, DeviceTypeEnum.EMULATED_PACKET_ROUTER.value : 70, DeviceTypeEnum.PACKET_POP.value : 70, DeviceTypeEnum.PACKET_POP.value : 70, Loading
src/policy/.gitlab-ci.yml +10 −10 Original line number Original line Diff line number Diff line Loading @@ -24,10 +24,10 @@ build policy: - docker image prune --force - docker image prune --force - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: script: - export IMAGE_TAG=$(grep -m1 '<version>' ./src/$IMAGE_NAME_POLICY/pom.xml | grep -oP '(?<=>).*(?=<)') - export POL_IMAGE_TAG=$(grep -m1 '<version>' ./src/$IMAGE_NAME_POLICY/pom.xml | grep -oP '(?<=>).*(?=<)') - echo "IMAGE_TAG=${IMAGE_TAG}" >> ${BUILD_ENV_POLICY} - echo "POL_IMAGE_TAG=${POL_IMAGE_TAG}" >> ${BUILD_ENV_POLICY} - cat ${BUILD_ENV_POLICY} - cat ${BUILD_ENV_POLICY} - docker buildx build -t "$IMAGE_NAME_POLICY:$IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target builder - docker buildx build -t "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target builder after_script: after_script: - docker image prune --force - docker image prune --force artifacts: artifacts: Loading @@ -52,10 +52,10 @@ unit_test policy: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker rm ${REPORTS_CONTAINER} || true - docker rm ${REPORTS_CONTAINER} || true script: script: - echo "Running tests for image ${IMAGE_TAG}" - echo "Running tests for image ${POL_IMAGE_TAG}" - docker buildx build -t "$IMAGE_NAME_POLICY:$IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target unit-test - docker buildx build -t "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target unit-test # Transfer JaCoCo and Surefire reports from within tests image # Transfer JaCoCo and Surefire reports from within tests image - docker create --name ${REPORTS_CONTAINER} "$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker create --name ${REPORTS_CONTAINER} "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" - mkdir -p ${REPORTS_PATH_POLICY} - mkdir -p ${REPORTS_PATH_POLICY} - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/index.html ${REPORTS_PATH_POLICY}/coverage.html - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/index.html ${REPORTS_PATH_POLICY}/coverage.html - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/jacoco.xml ${REPORTS_PATH_POLICY}/jacoco.xml - docker cp ${REPORTS_CONTAINER}:/app/target/site/jacoco/jacoco.xml ${REPORTS_PATH_POLICY}/jacoco.xml Loading @@ -63,12 +63,12 @@ unit_test policy: - cat ${REPORTS_PATH_POLICY}/coverage.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/JaCoCo Coverage Total:/' - cat ${REPORTS_PATH_POLICY}/coverage.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/JaCoCo Coverage Total:/' - docker run -v "$(pwd)/src/${IMAGE_NAME_POLICY}:/${IMAGE_NAME_POLICY}" --rm registry.gitlab.com/haynes/jacoco2cobertura:1.0.7 python /opt/cover2cover.py ${IMAGE_NAME_POLICY}/reports/jacoco.xml ${IMAGE_NAME_POLICY}/src/main/java > ${REPORTS_PATH_POLICY}/cobertura.xml - docker run -v "$(pwd)/src/${IMAGE_NAME_POLICY}:/${IMAGE_NAME_POLICY}" --rm registry.gitlab.com/haynes/jacoco2cobertura:1.0.7 python /opt/cover2cover.py ${IMAGE_NAME_POLICY}/reports/jacoco.xml ${IMAGE_NAME_POLICY}/src/main/java > ${REPORTS_PATH_POLICY}/cobertura.xml # Build final image # Build final image - docker buildx build -t "$IMAGE_NAME_POLICY:$IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target release - docker buildx build -t "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" -f ./src/$IMAGE_NAME_POLICY/src/main/docker/Dockerfile.multistage.jvm ./src/$IMAGE_NAME_POLICY/ --target release - docker tag "$IMAGE_NAME_POLICY:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker tag "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" after_script: after_script: - docker rm ${REPORTS_CONTAINER} - docker rm ${REPORTS_CONTAINER} - docker rm -f "$IMAGE_NAME_POLICY:$IMAGE_TAG" - docker rm -f "$IMAGE_NAME_POLICY:$POL_IMAGE_TAG" coverage: '/JaCoCo Coverage Total: ([0-9]{1,3})%/' coverage: '/JaCoCo Coverage Total: ([0-9]{1,3})%/' artifacts: artifacts: reports: reports: Loading