From a84f449468a26bbb9200b35d3ac06169c8ba8117 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 15 Mar 2023 09:27:12 -0500 Subject: [PATCH 01/42] Update iamPatterns.adoc --- iamPatterns.adoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/iamPatterns.adoc b/iamPatterns.adoc index abfaeee..44061dc 100644 --- a/iamPatterns.adoc +++ b/iamPatterns.adoc @@ -1,5 +1,10 @@ ### IAM Patterns Ideas +https://docs.google.com/spreadsheets/d/1c7k2871uY6fm_Wz7M-bW-e1ZP511-uYWJf0tCbABGOQ/edit#gid=44522133 + <- iamCapFunc + + https://drive.google.com/file/d/14N45a0Wu0BeapmChRxj27uILA1OJqf_L/view?usp=sharing + <- T&I Reference Architecture + + #### Level X: Use Cases with base architecture *- Use Case 1 - Federation Enablement -* + From b6ba895d4d24646cea2991e5e9d7473b3192488b Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Fri, 17 Mar 2023 08:16:56 -0500 Subject: [PATCH 02/42] Add files via upload --- file/iamChecklist.docx | Bin 0 -> 5689 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 file/iamChecklist.docx diff --git a/file/iamChecklist.docx b/file/iamChecklist.docx new file mode 100644 index 0000000000000000000000000000000000000000..4082a03a3901d2f734d67f18ba98f9d8efccfc11 GIT binary patch literal 5689 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 Date: Fri, 24 Mar 2023 10:15:01 -0500 Subject: [PATCH 03/42] Create connector-howto.adoc --- connector-howto.adoc | 231 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 connector-howto.adoc diff --git a/connector-howto.adoc b/connector-howto.adoc new file mode 100644 index 0000000..784e503 --- /dev/null +++ b/connector-howto.adoc @@ -0,0 +1,231 @@ +=== connectors.adoc + +SEE workbench.adoc + +permalink: https://github.internet2.edu/internet2/iam-knowledge-bits/blob/main/connectors.adoc + +next] LDAP/AD provisioning with midPoint + +- - - +_2023-03-22 19:12:40 Connector Howto_ + +*- Reset Workbench to pristine state -* + +``` +ssh csprootuser@khazelton.workbench.incommon.org +cd /csp-tap/InCommonTAP-Examples/Workbench + +docker-compose down -v +docker-compose up -d +``` + +==== Add the Artists' Collective, a new CSV resource, to the Workbench + +*- First, Where is the MIDPOINT_HOME directory? -* + +` In the Workbench host for the containers, MIDPOINT_HOME is: + +` /csp-tap/InCommonTAP-Examples/Workbench/midpoint_server/container_files/mp-home + +` Everything in MIDPOINT_HOME is mapped to + +` /opt/midpoint/var + +` inside the running container + + +*- Artists Collective demo -* + +` User schema extension .xsd files go into MIDPOINT_HOME/schema + +` .csv data file for the Artist Collective resource also goes into MIDPOINT_HOME + + +``` +cd $MIDPOINT_HOME +ls -la schema +ls -la usertype_export.csv +``` + +*- Complete the Artists' Collective resource definition, 100-mnt0.xml -* + +` Edit resource definition file on local computer: + +` ~/opt/kh-wb/objects/resources/100-mnt0.xml + +` fill in the essential parameter definitions section by section: + +` Connector section + +` Schema section + +` Schema Handling section + +` Capabilities section + +` Synchronization section + + +*- The Artist Collective resource config goes into MIDPOINT_HOME/objects/resources on the Workbench host -* + +` Use MidPoint Studio to connect to the workbench host and upload the above files to their proper locations + + +*- Once the files are in place, Open the Workbench UI and select Midpoint -* + +` go to Resources / Import Resource Definition, Browse to 100-mnt0.xml on local host + +` click Import + + +` Back to 'All Resources / TMNT System', select Accounts, scroll down and press the Import button + +` Open 'Accounts' on the new resource, Scroll down to the list of users and select one for viewing + +*- Now browse to the Users tab, scroll to 2nd page and note that Cesare Borgia from the Artists' Collective is now recognized as a User in midPoint + +*- This process can be used as a template for adding any other csv-based resource -* + +*- TBD: native install -* + +` replicate artist/hr resource on MBProMax: ~/opt/midpoint-4.6 + +` ~/Users/khazelton/opt/midpoint-4.6 <- MIDPOINT_HOME + +` MIDPOINT_HOME/bin <- All the start/stop/etc scripts + +``` +cd $MIDPOINT_HOME +./bin/start.sh <- To Start midPoint +``` +- - - + +next: replicate artist/hr resource on MBProMax:midpoint-4.6 + +- - - +_2023-03-22 14:36:48 csv connector, resource configuration_ + +/csp-tap/InCommonTAP-Examples/Workbench/midpoint_server/container_files/mp-home +/csp-tap/InCommonTAP-Examples/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/ +resources/100-mnt.xml + +if you make changes in the midpoint files on the host running docker, you must bring the running containers down with the option that clears out the existing mapped files in the container: + +``` +docker-compose down -v +... +docker-compose up -d +``` +*- working tmnt resource def -* + +~/opt/kh.wb/objects/resources/SourceTMNTSystem.xml + +- - - +_2023-03-21 17:42:32 csv connector, resource configuration_ + +*- Host for containerize workbench -* + +``` +Workbench/midpoint_server/container_files/mp-home + +COPY ../Workbench/midpoint_server/container_files/mp-home/ /opt/midpoint/var/ + | | + base in container host base inside connector +``` + +*- in the container -* + +``` +├── container_files +│ ├── csv +│ │ ├── source-hr.csv +│ │ └── UserType_export.csv // <- +│ ├── httpd +│ │ ├── 00-shib.conf +│ │ ├── host-cert.pem +│ │ ├── host-key.pem +│ │ ├── midpoint-shib.conf +│ │ └── vhosts.conf +│ ├── mp-home +│ │ ├── config.xml +│ │ ├── cs-portal.csv +│ │ ├── faculty-portal.csv +│ │ ├── icf-connectors +│ │ │ ├── connector-grouper-rest-0.7.jar +│ │ │ ├── connector-rest-wordpress-.23-SNAPSHOT.jar +│ │ │ ├── connector-sympa-1.0.2-connector.jar +│ │ │ └── net.tirasa.connid.bundles.db.scriptedsql-2.2.-SNAPSHOT.jar +│ │ ├── lib +│ │ │ ├── mariadb-java-client-3.0.jar +│ │ │ └── mysql-connector-java-8.0.30.jar +│ │ ├── mailing-lists.csv +│ │ ├── post-initial-objects +│ │ │ ├── archetypes +│ │ │ │ ├── 300-archetype-affiliation.xml +│ │ │ │ ├── 300-archetype-course.xml +│ │ │ │ ├── 300-archetype-department.xml +│ │ │ │ ├── 300-archetype-external-person.xml +│ │ │ │ ├── 300-archetype-generic-grouper-group.xml +│ │ │ │ ├── 300-archetype-mailing-list.xml +│ │ │ │ ├── 300-archetype-midpoint-group.xml +│ │ │ │ ├── 300-archetype-sis-person.xml +│ │ │ │ ├── 400-archetype-guest-person.xml +│ │ │ │ └── 500-archetype-hr-person.xml +│ │ │ ├── bulkActions +│ │ │ │ ├── 900-test-all-resources.xml +│ │ │ │ └── 910-recompute-grouper-objects.xml +│ │ │ ├── functionLibraries +│ │ │ │ └── 100-function-library-grouper.xml +│ │ │ ├── objectTemplates +│ │ │ │ └── 100-template-user.xml +│ │ │ ├── ordering.txt +│ │ │ ├── orgs +│ │ │ │ ├── 100-org-affiliations.xml +│ │ │ │ ├── 100-org-courses.xml +│ │ │ │ ├── 100-org-departments.xml +│ │ │ │ ├── 100-org-generic-groups.xml +│ │ │ │ ├── 100-org-mailing-lists.xml +│ │ │ │ ├── 100-org-midpoint-groups.xml +│ │ │ │ ├── 400-org-grouper-sysadmin.xml +│ │ │ │ ├── 500-org-hr-sor.xml +│ │ │ │ └── 600-org-guest-sor.xml +│ │ │ ├── resources // <- +│ │ │ │ ├── 100-connector-rest-wordpress.xml +│ │ │ │ ├── 100-grouper.xml +│ │ │ │ ├── 100-guest-db.xml +│ │ │ │ ├── 100-ldap-main.xml +│ │ │ │ ├── 100-source-hr-sor.xml +│ │ │ │ ├── 100-source-sis-persons.xml +│ │ │ │ ├── 100-target-cs-portal.xml +│ │ │ │ ├── 100-target-faculty-portal.xml +│ │ │ │ └── 100-target-mailing-lists.xml +│ │ │ ├── roles +│ │ │ │ ├── 200-metarole-grouper-provided-group.xml +│ │ │ │ ├── 200-metarole-ldap-group.xml +│ │ │ │ ├── 200-metarole-role-wordpress-admin.xml +│ │ │ │ ├── 200-metarole-role-wordpress-editor.xml +│ │ │ │ ├── 200-role-ldap-basic.xml +│ │ │ │ ├── 300-direct-wordpress-role-admin.xml +│ │ │ │ └── 300-direct-wordpress-role-editor.xml +│ │ │ ├── securityPolicy +│ │ │ │ └── 000-security-policy.xml +│ │ │ ├── systemConfigurations +│ │ │ │ └── 010-system-configuration.xml +│ │ │ ├── tasks +│ │ │ │ ├── 300-task-hr-import.xml +│ │ │ │ ├── 300-task-import-guests-sql.xml +│ │ │ │ ├── 300-task-import-sis-persons.xml +│ │ │ │ ├── 500-task-import-guests-sql-livesync.xml +│ │ │ │ ├── 995-task-group-scavenger.xml +│ │ │ │ ├── 997-task-async-update-grouper.xml +│ │ │ │ ├── 998-task-reconciliation-grouper-groups.xml +│ │ │ │ └── 999-task-recomputation-users.xml +│ │ │ └── users +│ │ │ └── 600-user-banderson.xml +│ │ ├── res +│ │ │ └── sis-persons +│ │ │ ├── SchemaScript.groovy +│ │ │ ├── SearchScript.groovy +│ │ │ └── TestScript.groovy +│ │ ├── schema +│ │ │ ├── fanner.xsd +│ │ │ └── internet2.xsd +│ │ ├── source-external.csv +│ │ ├── staff-portal.csv +│ │ └── UserType_export.csv +│ ├── shibboleth +│ │ ├── attribute-map.xml +│ │ ├── idp-metadata.xml +│ │ ├── shibboleth2.xml +│ │ ├── shibd.logger +│ │ ├── sp-encrypt-cert.pem +│ │ ├── sp-encrypt-key.pem +│ │ ├── sp-signing-cert.pem +│ │ └── sp-signing-key.pem +│ └── system +│ └── setservername.sh +└── Dockerfile +``` + +- - - + From 69e4d3660213b6df2af787c3b5b16bbc0284a6ae Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Fri, 24 Mar 2023 10:15:30 -0500 Subject: [PATCH 04/42] Update connector-howto.adoc --- connector-howto.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector-howto.adoc b/connector-howto.adoc index 784e503..89b16c1 100644 --- a/connector-howto.adoc +++ b/connector-howto.adoc @@ -1,4 +1,4 @@ -=== connectors.adoc +=== connector-howto.adoc SEE workbench.adoc + permalink: https://github.internet2.edu/internet2/iam-knowledge-bits/blob/main/connectors.adoc + From 258e156c3a074a2debef31d19b4f4927ad4c9b39 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Fri, 24 Mar 2023 10:18:54 -0500 Subject: [PATCH 05/42] Update connectors.adoc --- connectors.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connectors.adoc b/connectors.adoc index 7d44b49..c72a399 100644 --- a/connectors.adoc +++ b/connectors.adoc @@ -1,5 +1,5 @@ === connectors.adoc -permalink: https://github.internet2.edu/internet2/iam-knowledge-bits/blob/main/connectors.adoc + +permalink: https://github.internet2.edu/internet2/iam-knowledge-bits/blob/main/connector-howto.adoc + next] LDAP/AD provisioning with midPoint - - - From 3030e7f4204988abbb428780fa921fad39a9696f Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Fri, 24 Mar 2023 10:20:27 -0500 Subject: [PATCH 06/42] Update connector-howto.adoc --- connector-howto.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector-howto.adoc b/connector-howto.adoc index 89b16c1..49fa3a9 100644 --- a/connector-howto.adoc +++ b/connector-howto.adoc @@ -1,7 +1,7 @@ === connector-howto.adoc SEE workbench.adoc + -permalink: https://github.internet2.edu/internet2/iam-knowledge-bits/blob/main/connectors.adoc + +permalink: https://github.internet2.edu/internet2/iam-knowledge-bits/blob/main/connector-howto.adoc + next] LDAP/AD provisioning with midPoint - - - From f649979dfd1a0ad2d6ffa6e8a130d39daa071b71 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 29 Mar 2023 19:15:14 -0500 Subject: [PATCH 07/42] Update connector-howto.adoc --- connector-howto.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector-howto.adoc b/connector-howto.adoc index 49fa3a9..14fd6e8 100644 --- a/connector-howto.adoc +++ b/connector-howto.adoc @@ -53,7 +53,7 @@ ls -la usertype_export.csv ` Capabilities section + ` Synchronization section + -*- The Artist Collective resource config goes into MIDPOINT_HOME/objects/resources on the Workbench host -* +*- The Artist Collective resource config goes into MIDPOINT_HOME/post-initial-objects/resources on the Workbench host -* ` Use MidPoint Studio to connect to the workbench host and upload the above files to their proper locations + From 8c2d89e3b25d7e38118971d0830cc09977942907 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:24:56 -0500 Subject: [PATCH 08/42] Create edu.adoc --- id/Internet2/edu.adoc | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 id/Internet2/edu.adoc diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc new file mode 100644 index 0000000..8fc9e87 --- /dev/null +++ b/id/Internet2/edu.adoc @@ -0,0 +1,35 @@ +===== T&I namespaces and assigned identifiers belong to one of the following Types + + +* OIDs +* URNs +* URLs +* Namespaces +* Specs +* Schema +* Fed entities(?) + +===== Consolidated registry for the above + + +* Construct a Trust and Identity registry tree, top level of which should be 'https://id.internet2.edu/ti'. +* Next path element under /ti is one item from the controlled enum: oid', 'urn', 'url', 'spec', 'schema' +** E.g.'https://id.internet2.edu/ti/urn' +* Final fragment (after #) is an identifier of the type labeled by the parent node and must be unique within the scope of that parent +** E.g. https://id.internet2.edu/ti/urn#mace:osu.edu +* All Registry URLs must be +** Resolvahle +** Immutable +* What should the unique identifier resolve to? +** A populated instance of a defined data structure TBD + +* Open Issue: What should be included in the Entry data structure? + +====== Management of the Registry + +* There must be defined processes for assigning URLs of each Type +** The current process for assigning MACE URNs provides a starting point model for such processes +* There should be a Registrar responsible for Registry operations overall +* Delegated admins may be assigned responsibilities for specific entry Types +* Processes mush be reliable and timely + From fb9bac43a910a6b60946122289b035bf45f757b8 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:29:21 -0500 Subject: [PATCH 09/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index 8fc9e87..ffb6726 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -13,7 +13,7 @@ * Construct a Trust and Identity registry tree, top level of which should be 'https://id.internet2.edu/ti'. -* Next path element under /ti is one item from the controlled enum: oid', 'urn', 'url', 'spec', 'schema' +* Next path element under /ti is selected from the extensible controlled vocabulary: oid', 'urn', 'url', 'namespace', 'spec', 'schema', 'fed' ** E.g.'https://id.internet2.edu/ti/urn' * Final fragment (after #) is an identifier of the type labeled by the parent node and must be unique within the scope of that parent ** E.g. https://id.internet2.edu/ti/urn#mace:osu.edu From 567ba5ce7df2cde90d612bffd1a7dc85f3a60080 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:33:55 -0500 Subject: [PATCH 10/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index ffb6726..b3dae5c 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -13,7 +13,7 @@ * Construct a Trust and Identity registry tree, top level of which should be 'https://id.internet2.edu/ti'. -* Next path element under /ti is selected from the extensible controlled vocabulary: oid', 'urn', 'url', 'namespace', 'spec', 'schema', 'fed' +* Next path element under /ti is selected from the extensible controlled vocabulary: oid', 'urn', 'url', 'namespace', 'spec', 'schema', 'fed?' ** E.g.'https://id.internet2.edu/ti/urn' * Final fragment (after #) is an identifier of the type labeled by the parent node and must be unique within the scope of that parent ** E.g. https://id.internet2.edu/ti/urn#mace:osu.edu From aa5386b4a4d8221a323d1affbff4e95a381861dc Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:35:18 -0500 Subject: [PATCH 11/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index b3dae5c..6ba3c00 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -1,3 +1,5 @@ +== Trust and Identity Registry of Namespaces and Identifiers + ===== T&I namespaces and assigned identifiers belong to one of the following Types From c18beaf250a26b75c12520021db42dafc9c23a12 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:43:34 -0500 Subject: [PATCH 12/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index 6ba3c00..516c01e 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -1,4 +1,4 @@ -== Trust and Identity Registry of Namespaces and Identifiers +== Initial Proposal for a Trust and Identity Registry of Namespaces and Identifiers ===== T&I namespaces and assigned identifiers belong to one of the following Types From 064510610ec2657cdb94bba34b048aff175a00f1 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:55:41 -0500 Subject: [PATCH 13/42] Update edu.adoc --- id/Internet2/edu.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index 516c01e..59fff03 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -20,8 +20,11 @@ * Final fragment (after #) is an identifier of the type labeled by the parent node and must be unique within the scope of that parent ** E.g. https://id.internet2.edu/ti/urn#mace:osu.edu * All Registry URLs must be +** Under a single entry point ** Resolvahle ** Immutable +* What should https://id.internet2.edu/ti resolve to? +** A home page with a navigable and foldable tree of registry contents * What should the unique identifier resolve to? ** A populated instance of a defined data structure TBD From dd01231717425d7b75191868a251e5226b73a3c3 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 10:56:54 -0500 Subject: [PATCH 14/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index 59fff03..fd75ae6 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -25,7 +25,7 @@ ** Immutable * What should https://id.internet2.edu/ti resolve to? ** A home page with a navigable and foldable tree of registry contents -* What should the unique identifier resolve to? +* What should each unique identifier (leaf) resolve to? ** A populated instance of a defined data structure TBD * Open Issue: What should be included in the Entry data structure? From 4a07328cffb3edbe88d1b73735335219331412b3 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 11:36:30 -0500 Subject: [PATCH 15/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index fd75ae6..1893df6 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -21,7 +21,7 @@ ** E.g. https://id.internet2.edu/ti/urn#mace:osu.edu * All Registry URLs must be ** Under a single entry point -** Resolvahle +** Resolvable ** Immutable * What should https://id.internet2.edu/ti resolve to? ** A home page with a navigable and foldable tree of registry contents From bff44f9f8cfed325d949cd0a7c58b66e1abf7097 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 5 Apr 2023 11:37:27 -0500 Subject: [PATCH 16/42] Update edu.adoc --- id/Internet2/edu.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/id/Internet2/edu.adoc b/id/Internet2/edu.adoc index 1893df6..bf8b1ca 100644 --- a/id/Internet2/edu.adoc +++ b/id/Internet2/edu.adoc @@ -36,5 +36,5 @@ ** The current process for assigning MACE URNs provides a starting point model for such processes * There should be a Registrar responsible for Registry operations overall * Delegated admins may be assigned responsibilities for specific entry Types -* Processes mush be reliable and timely +* Processes must be reliable and timely From 20a403204b3be843991288e05422402c713c9594 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 19 Apr 2023 09:46:30 -0500 Subject: [PATCH 17/42] Add files via upload --- file/nSpaceApi.pdf | Bin 0 -> 55938 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 file/nSpaceApi.pdf diff --git a/file/nSpaceApi.pdf b/file/nSpaceApi.pdf new file mode 100644 index 0000000000000000000000000000000000000000..91f688d6025edb9fb534e64bc18f596c301cf596 GIT binary patch literal 55938 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ËM&VcT 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 OoZPU$&O8MP*#8S&RxxM* literal 0 HcmV?d00001 From 1c4b401b04e4566f4ace5e6ca918073ef0554a80 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 09:18:45 -0500 Subject: [PATCH 18/42] Create Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Documentation-as-DevOps.adoc diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc new file mode 100644 index 0000000..29f5724 --- /dev/null +++ b/Documentation-as-DevOps.adoc @@ -0,0 +1,7 @@ +==== DevOps approach to Documentation: Options to consider +- Intro to Evolveum Documentation Processes +- Asciidoc +- Antora: Writing Evolveum Documentation +- Gitlab Pages +- Demo: ‘source’: https://gitlab.com/antora/demo +- Demo: published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html From 62197ab398367d663a4e086adc19bb3fc827f301 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 09:32:26 -0500 Subject: [PATCH 19/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 29f5724..f61f9a2 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,7 +1,7 @@ ==== DevOps approach to Documentation: Options to consider - Intro to Evolveum Documentation Processes -- Asciidoc -- Antora: Writing Evolveum Documentation -- Gitlab Pages -- Demo: ‘source’: https://gitlab.com/antora/demo -- Demo: published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html +- Asciidoc: https://asciidoc.org/ +- Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" +- Github Pages or Gitlab Pages +- Gitlab Demo: ‘source’: https://gitlab.com/antora/demo +- Gitlab Demo: published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html From c4e88ba1b478935999ec8bede7e9857846f8b1b6 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 09:43:20 -0500 Subject: [PATCH 20/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index f61f9a2..76e1015 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -2,6 +2,7 @@ - Intro to Evolveum Documentation Processes - Asciidoc: https://asciidoc.org/ - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" -- Github Pages or Gitlab Pages -- Gitlab Demo: ‘source’: https://gitlab.com/antora/demo -- Gitlab Demo: published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html +- Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) +- https://pages.github.com, https://pages.github.com +- Gitlab Demo ‘source’: https://gitlab.com/antora/demo +- Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html From 3064ad920eb7fbb3c3299edd62b202ac1b084319 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 09:44:38 -0500 Subject: [PATCH 21/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 76e1015..38a8d00 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -3,6 +3,6 @@ - Asciidoc: https://asciidoc.org/ - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" - Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) -- https://pages.github.com, https://pages.github.com +- https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ - Gitlab Demo ‘source’: https://gitlab.com/antora/demo - Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html From 6d7ed9ee65f640bd85982e87ef0b446f3556ec8a Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 09:46:33 -0500 Subject: [PATCH 22/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 38a8d00..5e0eeee 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,6 +1,6 @@ ==== DevOps approach to Documentation: Options to consider - Intro to Evolveum Documentation Processes -- Asciidoc: https://asciidoc.org/ +- Asciidoc: https://asciidoc.org - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" - Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) - https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ From f78f8541a19ead1db33c253669b7cbdf56fe91ff Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:27:17 -0500 Subject: [PATCH 23/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 5e0eeee..a2614df 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -6,3 +6,9 @@ - https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ - Gitlab Demo ‘source’: https://gitlab.com/antora/demo - Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html + +==== One Option +. Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ +. Create and edit new and existing files with asciidoc, push to a github repo +. Create an Antora site to host the asciidoc files +. Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From 14d3e308faab041a985a4c03393267c72cb5244b Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:28:34 -0500 Subject: [PATCH 24/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index a2614df..00ead04 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,5 +1,5 @@ ==== DevOps approach to Documentation: Options to consider -- Intro to Evolveum Documentation Processes +- Review Evolveum Documentation Processes - Asciidoc: https://asciidoc.org - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" - Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) From 8eb8b8c88027ff044c3c2ac9e7baf32e1eb8e9f5 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:34:00 -0500 Subject: [PATCH 25/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 00ead04..c03eb28 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,3 +1,9 @@ +==== One Option +. Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ +. Create and edit new and existing files with asciidoc, push to a github repo +. Create an Antora site to host the asciidoc files +. Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm + ==== DevOps approach to Documentation: Options to consider - Review Evolveum Documentation Processes - Asciidoc: https://asciidoc.org @@ -7,8 +13,3 @@ - Gitlab Demo ‘source’: https://gitlab.com/antora/demo - Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html -==== One Option -. Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ -. Create and edit new and existing files with asciidoc, push to a github repo -. Create an Antora site to host the asciidoc files -. Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From 7f054b9267a1229abf806b908d6a9432a78a5c5b Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:39:12 -0500 Subject: [PATCH 26/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index c03eb28..4201d71 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,6 +1,7 @@ ==== One Option . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo +. Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Create an Antora site to host the asciidoc files . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From 58e9aac1aa55df1d998a37faee7d048c44ecc5b1 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:46:08 -0500 Subject: [PATCH 27/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 4201d71..980b6cc 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,6 +1,7 @@ ==== One Option . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo +. Include PlanntUML, C4, and other diagramming tools with the asciidoctor extension for kroki: ttps://github.com/ggrossetie/asciidoctor-kroki . Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Create an Antora site to host the asciidoc files . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From d88347f36d7da7aa8b8dffda596a4ede14bf9723 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:46:31 -0500 Subject: [PATCH 28/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 980b6cc..dd00631 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,7 +1,7 @@ ==== One Option . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo -. Include PlanntUML, C4, and other diagramming tools with the asciidoctor extension for kroki: ttps://github.com/ggrossetie/asciidoctor-kroki +. Include PlanntUML, C4, and other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki . Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Create an Antora site to host the asciidoc files . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From e8e165cb2b2e7c09c892809456976253b7e7acd1 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:47:29 -0500 Subject: [PATCH 29/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index dd00631..52276a0 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -2,8 +2,8 @@ . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo . Include PlanntUML, C4, and other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki -. Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Create an Antora site to host the asciidoc files +. Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm ==== DevOps approach to Documentation: Options to consider From 08dcb3e9472480232e1fccecb810fc7a595ac97a Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 10:48:05 -0500 Subject: [PATCH 30/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 52276a0..ddf0735 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,7 +1,7 @@ ==== One Option . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo -. Include PlanntUML, C4, and other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki +. Include PlanntUML, C4, and output from other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki . Create an Antora site to host the asciidoc files . Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From 8d7af871cd2271b7c9ff4e7c6918a477dab87033 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:00:15 -0500 Subject: [PATCH 31/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index ddf0735..1a6eb1b 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,7 +1,7 @@ ==== One Option . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo -. Include PlanntUML, C4, and output from other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki +. Include PlanntUML, C4, and output from other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki, https://kroki.io/ . Create an Antora site to host the asciidoc files . Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From 63d5f61f3500540bbffa4aa9094798c23ce34f2f Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:07:29 -0500 Subject: [PATCH 32/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 1a6eb1b..d4dd523 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -7,7 +7,7 @@ . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm ==== DevOps approach to Documentation: Options to consider -- Review Evolveum Documentation Processes +- Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/ - Asciidoc: https://asciidoc.org - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" - Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) From e023c639059dc52bcca0aa8e47d0b4c4d1bbf080 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:09:04 -0500 Subject: [PATCH 33/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index d4dd523..8ea0acc 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,7 +1,7 @@ ==== One Option . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo -. Include PlanntUML, C4, and output from other diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki, https://kroki.io/ +. Include PlanntUML, C4, and output from additional diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki, https://kroki.io/ . Create an Antora site to host the asciidoc files . Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm From c3d9fae126773d0a581c2bead85d49e4b19e842e Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:17:46 -0500 Subject: [PATCH 34/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 8ea0acc..a4031f6 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,4 +1,5 @@ ==== One Option +. Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/ . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo . Include PlanntUML, C4, and output from additional diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki, https://kroki.io/ @@ -7,7 +8,7 @@ . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm ==== DevOps approach to Documentation: Options to consider -- Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/ +- Evolveum documentation site: https://docs.evolveum.com - Asciidoc: https://asciidoc.org - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" - Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) From 0acce0c646b4a41eb0875c56c48a965a1dc1f966 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:19:15 -0500 Subject: [PATCH 35/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index a4031f6..07b51c0 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,5 +1,5 @@ ==== One Option -. Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/ +. Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/, https://docs.evolveum.com/about/writing-documentation/ . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo . Include PlanntUML, C4, and output from additional diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki, https://kroki.io/ From 5f254331fc77978fc1f629f9664b85f850cc5062 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:20:31 -0500 Subject: [PATCH 36/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 07b51c0..c78b41b 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,5 +1,5 @@ ==== One Option -. Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/, https://docs.evolveum.com/about/writing-documentation/ +. Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/, https://docs.evolveum.com/about/asciidoc/ . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo . Include PlanntUML, C4, and output from additional diagramming tools with the asciidoctor extension for kroki: https://github.com/ggrossetie/asciidoctor-kroki, https://kroki.io/ From 923876481cc1867000150acdf887df614d8371a2 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Mon, 1 May 2023 12:31:38 -0500 Subject: [PATCH 37/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index c78b41b..7d9dae9 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -7,7 +7,7 @@ . Anrtora Assembler: add-on library and extension that assembles content from multiple pages into aggregate documents, converts them to the specified output format, and publishes them alongside other files in the site https://gitlab.com/antora/antora-assembler . Follow Antora guidance to create a pipeline to rebuild the site whenever content is added, edited, or deleted: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiB5IfittT-AhWVk4kEHR9zBwQQFnoECBcQAQ&url=https%3A%2F%2Fdocs.antora.org%2Fantora%2Flatest%2Fpublish-to-gitlab-pages%2F&usg=AOvVaw3vOCafAF8DhwsRqTQbeFcm -==== DevOps approach to Documentation: Options to consider +==== DevOps approach to Documentation: Reference materials - Evolveum documentation site: https://docs.evolveum.com - Asciidoc: https://asciidoc.org - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" From 0ef24530642a65c2a76b63721590e855992806d0 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Tue, 2 May 2023 14:28:11 -0400 Subject: [PATCH 38/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 7d9dae9..e27eade 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -1,4 +1,7 @@ +=== Documentation-as-DevOps + ==== One Option + . Review Evolveum Documentation: https://docs.evolveum.com/, and their writing processes: https://docs.evolveum.com/about/writing-documentation/, https://docs.evolveum.com/about/asciidoc/ . Migrate existing content from Confluence XHTML to asciidoc: https://docs.asciidoctor.org/asciidoctor/latest/migrate/confluence-xhtml/ . Create and edit new and existing files with asciidoc, push to a github repo From 4129a1d11e5c178307e114ed9aa040491e295817 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Wed, 3 May 2023 14:56:46 -0400 Subject: [PATCH 39/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index e27eade..de2c115 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -13,6 +13,7 @@ ==== DevOps approach to Documentation: Reference materials - Evolveum documentation site: https://docs.evolveum.com - Asciidoc: https://asciidoc.org +- Markdown: https://www.markdownguide.org/ - Antora: https://antora.org/ "multi-repository documentation site generator for tech writers writing in AsciiDoc" - Github Pages or Gitlab Pages (Auto Re-Publication on commit to repo) - https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ From 226263c469673f9b0e6db1592aa897c865a39d7b Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Sun, 14 May 2023 12:06:42 -0500 Subject: [PATCH 40/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index de2c115..2bcdcab 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -19,4 +19,5 @@ - https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ - Gitlab Demo ‘source’: https://gitlab.com/antora/demo - Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html +- Jeff Sandberg, "I wish asciidoc was more popular: https://pdx.su/blog/2023-02-05-asciidoc-and-markdown/ From ceb48ee1255c14dcd2f64962d0f8808b62d1aa55 Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Sun, 14 May 2023 12:07:01 -0500 Subject: [PATCH 41/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 2bcdcab..80c0fd9 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -19,5 +19,5 @@ - https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ - Gitlab Demo ‘source’: https://gitlab.com/antora/demo - Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html -- Jeff Sandberg, "I wish asciidoc was more popular: https://pdx.su/blog/2023-02-05-asciidoc-and-markdown/ +- Jeff Sandberg, "I wish asciidoc was more popular": https://pdx.su/blog/2023-02-05-asciidoc-and-markdown/ From 3890b74e7325879cd9b51b60f2caf56a3e59569d Mon Sep 17 00:00:00 2001 From: Keith Hazelton Date: Sun, 14 May 2023 12:11:08 -0500 Subject: [PATCH 42/42] Update Documentation-as-DevOps.adoc --- Documentation-as-DevOps.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation-as-DevOps.adoc b/Documentation-as-DevOps.adoc index 80c0fd9..a863a4f 100644 --- a/Documentation-as-DevOps.adoc +++ b/Documentation-as-DevOps.adoc @@ -19,5 +19,6 @@ - https://pages.github.com, https://docs.gitlab.com/ee/user/project/pages/ - Gitlab Demo ‘source’: https://gitlab.com/antora/demo - Gitlab Demo published version: https://antora.gitlab.io/demo/docs-site/component-b/2.0/index.html +- Pros and Cons of Markdown vs Asciidoc: https://www.slant.co/versus/1903/23065/~markdown_vs_asciidoc - Jeff Sandberg, "I wish asciidoc was more popular": https://pdx.su/blog/2023-02-05-asciidoc-and-markdown/