Merge pull request #96 from sartography/feature/fix_docker_script_in_ci

Feature/fix docker script in ci
This commit is contained in:
jasquat 2023-01-09 16:24:59 -05:00 committed by GitHub
commit 6202d7ef46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 78 additions and 51 deletions

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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 )" export BPMN_SPEC_ABSOLUTE_DIR
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
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="/"

View File

@ -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)

View File

@ -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 = [

View File

@ -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"

View File

@ -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(":", "/")

View File

@ -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(

View File

@ -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

View File

@ -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]

View File

@ -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)

View File

@ -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);
} }
}); });

View File

@ -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',
{ {