Lucianpedia Wiki
Lucianpedia Wiki

Overview[]

Lucian CI/CD tests and builds repositories. They can be in Prolog or other programming languages. Modifications to List Prolog Package Manager to include the user's repositories are required.

Bottom-Up Version[]

The bottom-up version of Lucian CI/CD detects dependencies in the Prolog predicates, tests predicates in the repository branches using post-order depth-first search (bottom-up) and adjusts the code using the current and immediate past versions. Only comments in the current version are retained, and multiple repository branches and repositories are supported. A web page may display the recent passed or failed results by test summary and code diffs. Each output variable in tests is tested to be a non-variable (preventing tests from always working). Commands without output in `keep1//1` in `keep.pl` are kept instead of deleted because they don't have output to test.

Features[]

  • README.md - Contains installation and use instructions.
  • ci.pl - Contains the diff algorithm at the centre of the algorithm, which identifies changes, additions and deletions to lines in the repositories to find the combinations of and test.
  • luciancicd.pl - Contains the set_up_luciancicd (to keep all changes without running tests), luciancicd (to find modified files, find tests, merge and build repositories, run tests and update repository) and modification_dates (find modified files) predicates.
  • ci3.pl - Contains the code to load code to find changes against.
  • find_tests_from_repos.pl - finds tests in Prolog code (where non-Prolog can be tested by a Prolog algorithm).
  • move_to_repository_or_back.pl - Contains the move_to_repository_or_back predicate, which undoes updating the repository.
  • save_diff_html.pl - code to display changes made to the repository before updating it, showing changes, additions and deletions.

Link at https://github.com/luciangreen/luciancicd