Merge pull request #96 from sartography/feature/fix_docker_script_in_ci
Feature/fix docker script in ci
This commit is contained in:
commit
eb87ef6c96
|
@ -215,12 +215,16 @@ jobs:
|
||||||
with:
|
with:
|
||||||
# Disabling shallow clone is recommended for improving relevancy of reporting in sonarcloud
|
# Disabling shallow clone is recommended for improving relevancy of reporting in sonarcloud
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
- name: Checkout Samples
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
repository: sartography/sample-process-models
|
||||||
|
path: sample-process-models
|
||||||
- name: start_backend
|
- name: start_backend
|
||||||
run: ./bin/build_and_run_with_docker_compose
|
run: ./bin/build_and_run_with_docker_compose
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
env:
|
env:
|
||||||
SPIFFWORKFLOW_BACKEND_RUN_DATA_SETUP: "false"
|
SPIFFWORKFLOW_BACKEND_RUN_DATA_SETUP: "false"
|
||||||
SPIFFWORKFLOW_BACKEND_LOAD_FIXTURE_DATA: "true"
|
|
||||||
- name: wait_for_backend
|
- name: wait_for_backend
|
||||||
run: ./bin/wait_for_server_to_be_up 5
|
run: ./bin/wait_for_server_to_be_up 5
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,8 @@ function error_handler() {
|
||||||
trap 'error_handler ${LINENO} $?' ERR
|
trap 'error_handler ${LINENO} $?' ERR
|
||||||
set -o errtrace -o errexit -o nounset -o pipefail
|
set -o errtrace -o errexit -o nounset -o pipefail
|
||||||
|
|
||||||
if [[ -z "${BPMN_SPEC_ABSOLUTE_DIR:-}" ]]; then
|
BPMN_SPEC_ABSOLUTE_DIR=$(./bin/find_sample_process_models)
|
||||||
script_dir="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
export BPMN_SPEC_ABSOLUTE_DIR
|
||||||
export BPMN_SPEC_ABSOLUTE_DIR="$script_dir/../../../sample-process-models"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "${SPIFFWORKFLOW_BACKEND_DOCKER_COMPOSE_PROFILE:-}" ]]; then
|
if [[ -z "${SPIFFWORKFLOW_BACKEND_DOCKER_COMPOSE_PROFILE:-}" ]]; then
|
||||||
export SPIFFWORKFLOW_BACKEND_DOCKER_COMPOSE_PROFILE=run
|
export SPIFFWORKFLOW_BACKEND_DOCKER_COMPOSE_PROFILE=run
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function error_handler() {
|
||||||
|
>&2 echo "Exited with BAD EXIT CODE '${2}' in ${0} script at line: ${1}."
|
||||||
|
exit "$2"
|
||||||
|
}
|
||||||
|
trap 'error_handler ${LINENO} $?' ERR
|
||||||
|
set -o errtrace -o errexit -o nounset -o pipefail
|
||||||
|
|
||||||
|
if [[ -z "${BPMN_SPEC_ABSOLUTE_DIR:-}" ]]; then
|
||||||
|
script_dir="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
|
|
||||||
|
BPMN_SPEC_ABSOLUTE_DIR="${script_dir}/../../../sample-process-models"
|
||||||
|
if [[ ! -d "$BPMN_SPEC_ABSOLUTE_DIR" ]]; then
|
||||||
|
BPMN_SPEC_ABSOLUTE_DIR="${script_dir}/../../sample-process-models"
|
||||||
|
if [[ ! -d "$BPMN_SPEC_ABSOLUTE_DIR" ]]; then
|
||||||
|
>&2 echo "ERROR: Could not find a location for the sample processes. Last tried: $BPMN_SPEC_ABSOLUTE_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "$BPMN_SPEC_ABSOLUTE_DIR" >/dev/null 2>&1
|
||||||
|
if [[ "$(git rev-parse --abbrev-ref HEAD)" == "main" ]]; then
|
||||||
|
>&2 echo "ERROR: please do not use the main branch of sample-process-models. use dev"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
popd >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
realpath "$BPMN_SPEC_ABSOLUTE_DIR"
|
|
@ -17,25 +17,8 @@ if [[ -z "${SPIFFWORKFLOW_BACKEND_ENV:-}" ]]; then
|
||||||
export SPIFFWORKFLOW_BACKEND_ENV=development
|
export SPIFFWORKFLOW_BACKEND_ENV=development
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${BPMN_SPEC_ABSOLUTE_DIR:-}" ]]; then
|
BPMN_SPEC_ABSOLUTE_DIR=$(./bin/find_sample_process_models)
|
||||||
script_dir="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
|
||||||
|
|
||||||
BPMN_SPEC_ABSOLUTE_DIR="${script_dir}/../../../sample-process-models"
|
|
||||||
if [[ ! -d "$BPMN_SPEC_ABSOLUTE_DIR" ]]; then
|
|
||||||
BPMN_SPEC_ABSOLUTE_DIR="${script_dir}/../../sample-process-models"
|
|
||||||
if [[ ! -d "$BPMN_SPEC_ABSOLUTE_DIR" ]]; then
|
|
||||||
>&2 echo "ERROR: Could not find a location for the sample processes. Last tried: $BPMN_SPEC_ABSOLUTE_DIR"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
export BPMN_SPEC_ABSOLUTE_DIR
|
export BPMN_SPEC_ABSOLUTE_DIR
|
||||||
pushd "$BPMN_SPEC_ABSOLUTE_DIR"
|
|
||||||
if [[ "$(git rev-parse --abbrev-ref HEAD)" == "main" ]]; then
|
|
||||||
>&2 echo "ERROR: please do not use the main branch of sample-process-models. use dev"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
popd
|
|
||||||
fi
|
|
||||||
|
|
||||||
export FLASK_SESSION_SECRET_KEY=super_secret_key
|
export FLASK_SESSION_SECRET_KEY=super_secret_key
|
||||||
export APPLICATION_ROOT="/"
|
export APPLICATION_ROOT="/"
|
||||||
|
|
|
@ -9,6 +9,7 @@ def main() -> None:
|
||||||
"""Main."""
|
"""Main."""
|
||||||
app = create_app()
|
app = create_app()
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
|
print("HEY")
|
||||||
failing_process_models = DataSetupService.save_all_process_models()
|
failing_process_models = DataSetupService.save_all_process_models()
|
||||||
for bpmn_errors in failing_process_models:
|
for bpmn_errors in failing_process_models:
|
||||||
print(bpmn_errors)
|
print(bpmn_errors)
|
||||||
|
|
|
@ -1851,7 +1851,7 @@ lxml = "*"
|
||||||
type = "git"
|
type = "git"
|
||||||
url = "https://github.com/sartography/SpiffWorkflow"
|
url = "https://github.com/sartography/SpiffWorkflow"
|
||||||
reference = "main"
|
reference = "main"
|
||||||
resolved_reference = "4195453a46638f23e87c3ffdb038717c2d8abd00"
|
resolved_reference = "5eed83ab12f67c01c7836424a22fc425a33fc55d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "SQLAlchemy"
|
name = "SQLAlchemy"
|
||||||
|
@ -2222,7 +2222,7 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools"
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = ">=3.9,<3.12"
|
python-versions = ">=3.9,<3.12"
|
||||||
content-hash = "bbbd1c8bdce7f3dd7ec17c62b85dc7c95045fe500a759bb1a89c93add58a2a25"
|
content-hash = "832c1b6cd8d9aebc8529fdce11167bddcb3634fd0767dd2e490b74ababcf2714"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
alabaster = [
|
alabaster = [
|
||||||
|
|
|
@ -79,7 +79,7 @@ pytest = "*"
|
||||||
coverage = {extras = ["toml"], version = "^6.1"}
|
coverage = {extras = ["toml"], version = "^6.1"}
|
||||||
safety = "^2.3.1"
|
safety = "^2.3.1"
|
||||||
mypy = ">=0.961"
|
mypy = ">=0.961"
|
||||||
typeguard = "^2.13.2"
|
typeguard = "^2"
|
||||||
xdoctest = {extras = ["colors"], version = "^1.0.1"}
|
xdoctest = {extras = ["colors"], version = "^1.0.1"}
|
||||||
sphinx = "^5.0.2"
|
sphinx = "^5.0.2"
|
||||||
sphinx-autobuild = ">=2021.3.14"
|
sphinx-autobuild = ">=2021.3.14"
|
||||||
|
|
|
@ -42,7 +42,7 @@ from spiffworkflow_backend.services.spec_file_service import SpecFileService
|
||||||
|
|
||||||
|
|
||||||
def process_model_create(
|
def process_model_create(
|
||||||
modified_process_group_id: str, body: Dict[str, Union[str, bool, int]]
|
modified_process_group_id: str, body: Dict[str, Union[str, bool, int, None, list]]
|
||||||
) -> flask.wrappers.Response:
|
) -> flask.wrappers.Response:
|
||||||
"""Process_model_create."""
|
"""Process_model_create."""
|
||||||
body_include_list = [
|
body_include_list = [
|
||||||
|
@ -93,7 +93,8 @@ def process_model_delete(
|
||||||
|
|
||||||
|
|
||||||
def process_model_update(
|
def process_model_update(
|
||||||
modified_process_model_identifier: str, body: Dict[str, Union[str, bool, int]]
|
modified_process_model_identifier: str,
|
||||||
|
body: Dict[str, Union[str, bool, int, None, list]],
|
||||||
) -> Any:
|
) -> Any:
|
||||||
"""Process_model_update."""
|
"""Process_model_update."""
|
||||||
process_model_identifier = modified_process_model_identifier.replace(":", "/")
|
process_model_identifier = modified_process_model_identifier.replace(":", "/")
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
"""APIs for dealing with process groups, process models, and process instances."""
|
"""APIs for dealing with process groups, process models, and process instances."""
|
||||||
import json
|
import json
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from flask import g
|
from flask import g
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
|
@ -15,9 +14,10 @@ from spiffworkflow_backend.services.secret_service import SecretService
|
||||||
from spiffworkflow_backend.services.user_service import UserService
|
from spiffworkflow_backend.services.user_service import UserService
|
||||||
|
|
||||||
|
|
||||||
def secret_show(key: str) -> Optional[str]:
|
def secret_show(key: str) -> Response:
|
||||||
"""Secret_show."""
|
"""Secret_show."""
|
||||||
return SecretService.get_secret(key)
|
secret = SecretService.get_secret(key)
|
||||||
|
return make_response(jsonify(secret), 200)
|
||||||
|
|
||||||
|
|
||||||
def secret_list(
|
def secret_list(
|
||||||
|
|
|
@ -50,8 +50,6 @@ class DataSetupService:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
current_app.logger.debug(
|
current_app.logger.debug("DataSetupService.save_all_process_models() end")
|
||||||
"DataSetupService.save_all_process_models() end"
|
|
||||||
)
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return failing_process_models
|
return failing_process_models
|
||||||
|
|
|
@ -3,10 +3,11 @@ import re
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from typing import Type
|
||||||
|
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
from flask_bpmn.api.api_error import ApiError
|
from flask_bpmn.api.api_error import ApiError
|
||||||
from flask_bpmn.models.db import db
|
from flask_bpmn.models.db import SpiffworkflowBaseDBModel
|
||||||
from sqlalchemy import and_
|
from sqlalchemy import and_
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func
|
||||||
from sqlalchemy import or_
|
from sqlalchemy import or_
|
||||||
|
@ -113,16 +114,16 @@ class ProcessInstanceReportService:
|
||||||
{"Header": "status", "accessor": "status"},
|
{"Header": "status", "accessor": "status"},
|
||||||
],
|
],
|
||||||
"filter_by": [
|
"filter_by": [
|
||||||
{"field_name": "initiated_by_me", "field_value": True},
|
{"field_name": "initiated_by_me", "field_value": "true"},
|
||||||
{"field_name": "has_terminal_status", "field_value": True},
|
{"field_name": "has_terminal_status", "field_value": "true"},
|
||||||
],
|
],
|
||||||
"order_by": ["-start_in_seconds", "-id"],
|
"order_by": ["-start_in_seconds", "-id"],
|
||||||
},
|
},
|
||||||
"system_report_completed_instances_with_tasks_completed_by_me": {
|
"system_report_completed_instances_with_tasks_completed_by_me": {
|
||||||
"columns": cls.builtin_column_options(),
|
"columns": cls.builtin_column_options(),
|
||||||
"filter_by": [
|
"filter_by": [
|
||||||
{"field_name": "with_tasks_completed_by_me", "field_value": True},
|
{"field_name": "with_tasks_completed_by_me", "field_value": "true"},
|
||||||
{"field_name": "has_terminal_status", "field_value": True},
|
{"field_name": "has_terminal_status", "field_value": "true"},
|
||||||
],
|
],
|
||||||
"order_by": ["-start_in_seconds", "-id"],
|
"order_by": ["-start_in_seconds", "-id"],
|
||||||
},
|
},
|
||||||
|
@ -131,9 +132,9 @@ class ProcessInstanceReportService:
|
||||||
"filter_by": [
|
"filter_by": [
|
||||||
{
|
{
|
||||||
"field_name": "with_tasks_assigned_to_my_group",
|
"field_name": "with_tasks_assigned_to_my_group",
|
||||||
"field_value": True,
|
"field_value": "true",
|
||||||
},
|
},
|
||||||
{"field_name": "has_terminal_status", "field_value": True},
|
{"field_name": "has_terminal_status", "field_value": "true"},
|
||||||
],
|
],
|
||||||
"order_by": ["-start_in_seconds", "-id"],
|
"order_by": ["-start_in_seconds", "-id"],
|
||||||
},
|
},
|
||||||
|
@ -319,7 +320,9 @@ class ProcessInstanceReportService:
|
||||||
return results
|
return results
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_column_names_for_model(cls, model: db.Model) -> list[str]: # type: ignore
|
def get_column_names_for_model(
|
||||||
|
cls, model: Type[SpiffworkflowBaseDBModel]
|
||||||
|
) -> list[str]:
|
||||||
"""Get_column_names_for_model."""
|
"""Get_column_names_for_model."""
|
||||||
return [i.name for i in model.__table__.columns]
|
return [i.name for i in model.__table__.columns]
|
||||||
|
|
||||||
|
|
|
@ -24,12 +24,9 @@ const deleteVideosOnSuccess = (on) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = defineConfig({
|
const cypressConfig = {
|
||||||
projectId: 'crax1q',
|
projectId: 'crax1q',
|
||||||
|
|
||||||
// since it's slow
|
|
||||||
videoCompression: useVideoCompression,
|
|
||||||
|
|
||||||
videoUploadOnPasses: false,
|
videoUploadOnPasses: false,
|
||||||
chromeWebSecurity: false,
|
chromeWebSecurity: false,
|
||||||
e2e: {
|
e2e: {
|
||||||
|
@ -45,4 +42,11 @@ module.exports = defineConfig({
|
||||||
// https://github.com/cypress-io/cypress/issues/2353
|
// https://github.com/cypress-io/cypress/issues/2353
|
||||||
// https://docs.cypress.io/guides/core-concepts/interacting-with-elements#Scrolling
|
// https://docs.cypress.io/guides/core-concepts/interacting-with-elements#Scrolling
|
||||||
scrollBehavior: "center",
|
scrollBehavior: "center",
|
||||||
});
|
}
|
||||||
|
|
||||||
|
if (!process.env.CYPRESS_RECORD_KEY) {
|
||||||
|
// since it's slow
|
||||||
|
cypressConfig.videoCompression = false
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = defineConfig(cypressConfig)
|
||||||
|
|
|
@ -264,11 +264,13 @@ export default function ReactDiagramEditor({
|
||||||
handleLaunchMarkdownEditor(element, value, eventBus);
|
handleLaunchMarkdownEditor(element, value, eventBus);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* fixme: this is not in use yet, we need the ability to find bpmn files by id.
|
|
||||||
*/
|
|
||||||
diagramModeler.on('spiff.callactivity.edit', (event: any) => {
|
diagramModeler.on('spiff.callactivity.edit', (event: any) => {
|
||||||
|
console.log('Received event spiff.callactivity.edit');
|
||||||
if (onLaunchBpmnEditor) {
|
if (onLaunchBpmnEditor) {
|
||||||
|
console.log(
|
||||||
|
'Calling function onLaunchBpmnEditor with ',
|
||||||
|
event.processId
|
||||||
|
);
|
||||||
onLaunchBpmnEditor(event.processId);
|
onLaunchBpmnEditor(event.processId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -826,10 +826,13 @@ export default function ProcessModelEditDiagram() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const onLaunchBpmnEditor = (processId: string) => {
|
const onLaunchBpmnEditor = (processId: string) => {
|
||||||
|
console.log('onLaunchBpmnEditor - processId: ', processId);
|
||||||
|
console.log('processes', processes);
|
||||||
const processRef = processes.find((p) => {
|
const processRef = processes.find((p) => {
|
||||||
return p.identifier === processId;
|
return p.identifier === processId;
|
||||||
});
|
});
|
||||||
if (processRef) {
|
if (processRef) {
|
||||||
|
console.log('Found ProcessRef: ', processRef);
|
||||||
const path = generatePath(
|
const path = generatePath(
|
||||||
'/admin/process-models/:process_model_path/files/:file_name',
|
'/admin/process-models/:process_model_path/files/:file_name',
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue