From 442f8400657d88fc608719428fbbfd325112f923 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 17:07:29 +0100 Subject: [PATCH 01/15] First try at running a pipeline --- pipeline.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pipeline.py diff --git a/pipeline.py b/pipeline.py new file mode 100644 index 0000000..e69de29 From 48788d138fbbaf532d22ecbf49af2257759d802d Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 17:09:09 +0100 Subject: [PATCH 02/15] Add pipeline yaml --- bitbucket-pipelines.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bitbucket-pipelines.yml diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml new file mode 100644 index 0000000..e69de29 From cf5349dced72b364875ef8a2e28e51b5c0778851 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 17:11:57 +0100 Subject: [PATCH 03/15] Allow pipeline to be run manually --- bitbucket-pipelines.yml | 9 +++++++++ pipeline.py | 2 ++ 2 files changed, 11 insertions(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e69de29..9a5f522 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -0,0 +1,9 @@ +image: python:3.7.3 + +pipelines: + custom: + - step: + caches: + - pip + script: + - python pipeline.py \ No newline at end of file diff --git a/pipeline.py b/pipeline.py index e69de29..bbff9c0 100644 --- a/pipeline.py +++ b/pipeline.py @@ -0,0 +1,2 @@ +if __name__ == "__main__": + exit(1) # Fail the pipeline From 1946724be1c6837940b71cac3466a49d8a61d0c4 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 17:15:21 +0100 Subject: [PATCH 04/15] Fix syntax error --- bitbucket-pipelines.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 9a5f522..b951f5d 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -2,8 +2,9 @@ image: python:3.7.3 pipelines: custom: - - step: - caches: - - pip - script: - - python pipeline.py \ No newline at end of file + check_version: + - step: + caches: + - pip + script: + - python pipeline.py \ No newline at end of file From 517bd5dc4e352d2510485e2c1a0e0466e05f67f3 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 18:18:44 +0100 Subject: [PATCH 05/15] Pipeline now checks versions --- pipeline.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/pipeline.py b/pipeline.py index bbff9c0..ef88205 100644 --- a/pipeline.py +++ b/pipeline.py @@ -1,2 +1,36 @@ +import glob +import xml.etree.ElementTree as ET +import os + +VERSION_TAGS = {"**/*.Tc*": "ProductVersion", "**/*.tsproj": "TcVersion"} +CORRECT_VERSION = "3.1.4024.0" + + +def check_versions(): + """ + Checks the Twincat version used to create a file. + It assumes that the version is stored as an attribute on the top element of the file, the attribute names are + listed in VERSION_TAGS. + :return: A dictionary of incorrect files and their version numbers + """ + incorrect_files = dict() + for file_path, version_attrib in VERSION_TAGS.items(): + found_files = glob.glob(file_path, recursive=True) + if not found_files: + print("ERROR: No files of type {} found".format(file_path)) + for file in found_files: + tree = ET.parse(file) + try: + found_version = tree.getroot().attrib[version_attrib] + if found_version != CORRECT_VERSION: + incorrect_files[file] = found_version + except KeyError: + print("WARNING: No version found for {}".format(file)) + return incorrect_files + + if __name__ == "__main__": - exit(1) # Fail the pipeline + incorrect_files = check_versions() + for file, version in incorrect_files.items(): + print("ERROR: {} has incorrect version {}, expected version {}".format(file, version, CORRECT_VERSION)) + exit(len(incorrect_files)) # Exit with non-zero if any bad versions were found From b2b97f583cd0d1b90687a537b546dd61858fdb2b Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 18:23:32 +0100 Subject: [PATCH 06/15] Should now do submodules --- bitbucket-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index b951f5d..e262282 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -7,4 +7,5 @@ pipelines: caches: - pip script: + - git submodule update --init - python pipeline.py \ No newline at end of file From adff4d92d30beca10234d4d30e503896674cdda6 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 18:25:39 +0100 Subject: [PATCH 07/15] Just confirm we can pass a test --- pipeline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipeline.py b/pipeline.py index ef88205..33fe5e1 100644 --- a/pipeline.py +++ b/pipeline.py @@ -33,4 +33,4 @@ if __name__ == "__main__": incorrect_files = check_versions() for file, version in incorrect_files.items(): print("ERROR: {} has incorrect version {}, expected version {}".format(file, version, CORRECT_VERSION)) - exit(len(incorrect_files)) # Exit with non-zero if any bad versions were found + exit(0) # Exit with non-zero if any bad versions were found From 81b5d1f1dce0999d876e0edaae4d4ccfd4d980dc Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 18:38:05 +0100 Subject: [PATCH 08/15] Only do on PR --- bitbucket-pipelines.yml | 9 ++++----- pipeline.py => twincat_version_manager.py | 3 +-- 2 files changed, 5 insertions(+), 7 deletions(-) rename pipeline.py => twincat_version_manager.py (91%) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e262282..32f33bd 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -1,11 +1,10 @@ image: python:3.7.3 - +options: + max-time: 1 pipelines: custom: - check_version: + pull-requests: - step: - caches: - - pip script: - git submodule update --init - - python pipeline.py \ No newline at end of file + - python twincat_version_manager.py \ No newline at end of file diff --git a/pipeline.py b/twincat_version_manager.py similarity index 91% rename from pipeline.py rename to twincat_version_manager.py index 33fe5e1..58d9f07 100644 --- a/pipeline.py +++ b/twincat_version_manager.py @@ -1,6 +1,5 @@ import glob import xml.etree.ElementTree as ET -import os VERSION_TAGS = {"**/*.Tc*": "ProductVersion", "**/*.tsproj": "TcVersion"} CORRECT_VERSION = "3.1.4024.0" @@ -33,4 +32,4 @@ if __name__ == "__main__": incorrect_files = check_versions() for file, version in incorrect_files.items(): print("ERROR: {} has incorrect version {}, expected version {}".format(file, version, CORRECT_VERSION)) - exit(0) # Exit with non-zero if any bad versions were found + exit(len(incorrect_files)) # Exit with non-zero if any bad versions were found From edbb3e8cdbe190aa142dd134657d3f3635f9291a Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 18:51:00 +0100 Subject: [PATCH 09/15] Try and fix for pipelines --- bitbucket-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 32f33bd..f3e3890 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -2,8 +2,8 @@ image: python:3.7.3 options: max-time: 1 pipelines: - custom: - pull-requests: + pull-requests: + '**': - step: script: - git submodule update --init From 0adff94a4633938c36b9121b75801c2a130f70ea Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Fri, 11 Oct 2019 23:13:43 +0100 Subject: [PATCH 10/15] Updated version --- solution/solution.tsproj | 137 ++++++------------ solution/tc_project_app/GVLs/GVL_APP.TcGVL | 2 +- solution/tc_project_app/GlobalTextList.TcGTLO | 2 +- solution/tc_project_app/POUs/MAIN.TcPOU | 2 +- solution/tc_project_app/PlcTask.TcTTO | 2 +- .../Visualization Manager.TcVMO | 2 +- solution/tc_project_app/tc_mca_std_lib | 2 +- 7 files changed, 48 insertions(+), 101 deletions(-) diff --git a/solution/solution.tsproj b/solution/solution.tsproj index 9224788..d85e701 100644 --- a/solution/solution.tsproj +++ b/solution/solution.tsproj @@ -1,5 +1,5 @@ - - + + NCTOPLC_AXIS_REF_STATE @@ -411,8 +411,7 @@ AxisState UDINT - - - +]]> 32 64 @@ -440,8 +438,7 @@ External Setpoint Generation: HomingState UDINT - - - +]]> 32 128 CoupleState UDINT - - - +]]> 32 160 @@ -690,13 +684,13 @@ External Setpoint Generation: NCAXLESTRUCT_TOPLC4 - + - + - + @@ -913,30 +907,22 @@ External Setpoint Generation: PlcTask Inputs GVL.axes[1].inputs.bLimitFwd - - - + BOOL GVL.axes[1].inputs.bLimitBwd - - - + BOOL GVL.axes[1].inputs.bHomeSensor - - - + BOOL GVL.axes[1].inputs.bEncLAtch - - - + BOOL @@ -944,8 +930,7 @@ External Setpoint Generation: NCTOPLC_AXIS_REF AxisState - - - +]]> HomingState - - - +]]> CoupleState - - - +]]> GVL.axes[2].inputs.bLimitFwd - - - + BOOL GVL.axes[2].inputs.bLimitBwd - - - + BOOL GVL.axes[2].inputs.bHomeSensor - - - + BOOL GVL.axes[2].inputs.bEncLAtch - - - + BOOL @@ -1021,8 +993,7 @@ External Setpoint Generation: NCTOPLC_AXIS_REF AxisState - - - +]]> HomingState - - - +]]> CoupleState - - - +]]> GVL.axes[3].inputs.bLimitFwd - - - + BOOL GVL.axes[3].inputs.bLimitBwd - - - + BOOL GVL.axes[3].inputs.bHomeSensor - - - + BOOL GVL.axes[3].inputs.bEncLAtch - - - + BOOL @@ -1098,8 +1056,7 @@ External Setpoint Generation: NCTOPLC_AXIS_REF AxisState - - - +]]> HomingState - - - +]]> CoupleState - - - +]]> @@ -1147,9 +1099,7 @@ External Setpoint Generation: PlcTask Outputs MAIN.bOutput1 - - - + BOOL @@ -1172,7 +1122,4 @@ External Setpoint Generation: - - - diff --git a/solution/tc_project_app/GVLs/GVL_APP.TcGVL b/solution/tc_project_app/GVLs/GVL_APP.TcGVL index a366e64..2d96afa 100644 --- a/solution/tc_project_app/GVLs/GVL_APP.TcGVL +++ b/solution/tc_project_app/GVLs/GVL_APP.TcGVL @@ -1,5 +1,5 @@  - + - + diff --git a/solution/tc_project_app/POUs/MAIN.TcPOU b/solution/tc_project_app/POUs/MAIN.TcPOU index 1b367f8..50890c8 100644 --- a/solution/tc_project_app/POUs/MAIN.TcPOU +++ b/solution/tc_project_app/POUs/MAIN.TcPOU @@ -1,5 +1,5 @@  - + - + 1000 diff --git a/solution/tc_project_app/Visualization Manager.TcVMO b/solution/tc_project_app/Visualization Manager.TcVMO index d2e340f..83b1ee8 100644 --- a/solution/tc_project_app/Visualization Manager.TcVMO +++ b/solution/tc_project_app/Visualization Manager.TcVMO @@ -1,5 +1,5 @@  - + diff --git a/solution/tc_project_app/tc_mca_std_lib b/solution/tc_project_app/tc_mca_std_lib index f2b1862..7003429 160000 --- a/solution/tc_project_app/tc_mca_std_lib +++ b/solution/tc_project_app/tc_mca_std_lib @@ -1 +1 @@ -Subproject commit f2b186273119f71345ff25367b3145b07dfa66f4 +Subproject commit 7003429e2198b2e194ecb0583c6ea4ec83b898ec From 9ba0d7a67e42c5f0c5b6c396427365a8467ec7e7 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Mon, 14 Oct 2019 18:01:29 +0100 Subject: [PATCH 11/15] Provide better error codes --- twincat_version_manager.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/twincat_version_manager.py b/twincat_version_manager.py index 58d9f07..3483331 100644 --- a/twincat_version_manager.py +++ b/twincat_version_manager.py @@ -16,7 +16,7 @@ def check_versions(): for file_path, version_attrib in VERSION_TAGS.items(): found_files = glob.glob(file_path, recursive=True) if not found_files: - print("ERROR: No files of type {} found".format(file_path)) + raise IOError("ERROR: No files of type {} found".format(file_path)) for file in found_files: tree = ET.parse(file) try: @@ -29,7 +29,12 @@ def check_versions(): if __name__ == "__main__": - incorrect_files = check_versions() - for file, version in incorrect_files.items(): - print("ERROR: {} has incorrect version {}, expected version {}".format(file, version, CORRECT_VERSION)) - exit(len(incorrect_files)) # Exit with non-zero if any bad versions were found + try: + incorrect_files = check_versions() + for file, version in incorrect_files.items(): + print("ERROR: {} has incorrect version {}, expected version {}".format(file, version, CORRECT_VERSION)) + if incorrect_files: + exit(1) + except IOError as e: + print(e) # Likely no files found + exit(2) From d57ad738ee66967c9dc7cd415c78028ba8a4c74a Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Mon, 14 Oct 2019 18:12:31 +0100 Subject: [PATCH 12/15] Attempt to fix bitbucket being wierd --- twincat_version_manager.py | 1 + 1 file changed, 1 insertion(+) diff --git a/twincat_version_manager.py b/twincat_version_manager.py index 3483331..120547e 100644 --- a/twincat_version_manager.py +++ b/twincat_version_manager.py @@ -29,6 +29,7 @@ def check_versions(): if __name__ == "__main__": + exit(0) try: incorrect_files = check_versions() for file, version in incorrect_files.items(): From eeeaf8a3a1c8cb27462d85ce6d3447302cf8e071 Mon Sep 17 00:00:00 2001 From: Dominic Oram Date: Mon, 14 Oct 2019 18:17:55 +0100 Subject: [PATCH 13/15] Fix exit codes --- twincat_version_manager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/twincat_version_manager.py b/twincat_version_manager.py index 120547e..3483331 100644 --- a/twincat_version_manager.py +++ b/twincat_version_manager.py @@ -29,7 +29,6 @@ def check_versions(): if __name__ == "__main__": - exit(0) try: incorrect_files = check_versions() for file, version in incorrect_files.items(): From 9a0b8e98cc2637ac421609a2443630d8eb1a7d87 Mon Sep 17 00:00:00 2001 From: Federico Rojas Date: Tue, 15 Oct 2019 14:04:02 +0200 Subject: [PATCH 14/15] Update tc_epicscommodule to master for new 3024.0 --- solution/tc_epicscommodule | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/tc_epicscommodule b/solution/tc_epicscommodule index 6c86fc4..3794bb7 160000 --- a/solution/tc_epicscommodule +++ b/solution/tc_epicscommodule @@ -1 +1 @@ -Subproject commit 6c86fc4bd9250add709323079d3c84c63790648b +Subproject commit 3794bb7a9801d08901fe8efcf3e103582b5d7e2c From 8ced80123e8c9efb648db6e6160c8b52fbff4d50 Mon Sep 17 00:00:00 2001 From: Federico Rojas Date: Tue, 15 Oct 2019 14:05:11 +0200 Subject: [PATCH 15/15] Update tc_mca_std_lib to version 3024.0 --- solution/tc_project_app/tc_mca_std_lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/tc_project_app/tc_mca_std_lib b/solution/tc_project_app/tc_mca_std_lib index 7003429..c74a21a 160000 --- a/solution/tc_project_app/tc_mca_std_lib +++ b/solution/tc_project_app/tc_mca_std_lib @@ -1 +1 @@ -Subproject commit 7003429e2198b2e194ecb0583c6ea4ec83b898ec +Subproject commit c74a21a99d2749be86a12e4406bbfcfbb3618841