diff --git a/Solution/Entities/lcs_ActivityLog/Entity.xml b/Solution/Entities/lcs_ActivityLog/Entity.xml new file mode 100644 index 00000000..56390c8f --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/Entity.xml @@ -0,0 +1,1072 @@ + + + lcs_ActivityLog + + + + + + + + + + + + + + lookup + createdby + createdby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + datetime + createdon + createdon + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + inactive + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 1 + 0 + datetime + 0 + 1 + + + + + + + + + lookup + createdonbehalfby + createdonbehalfby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + int + importsequencenumber + importsequencenumber + none + ValidForAdvancedFind + disabled + 0 + 1 + 1 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + -2147483648 + 2147483647 + + + + + + + + + nvarchar + lcs_action + lcs_action + required + PrimaryName|ValidForAdvancedFind|ValidForForm|ValidForGrid|RequiredForForm + auto + 1 + 1 + 1 + 1 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 1 + 0 + 1 + 0 + text + 100 + 200 + + + + + + + + + primarykey + lcs_activitylogid + lcs_activitylogid + systemrequired + ValidForAdvancedFind|RequiredForGrid + auto + 0 + 1 + 1 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 1 + 0 + + + + + + + + + datetime + lcs_created + lcs_created + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 1 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 + + 1 + 0 + 0 + 0 + datetime + 1 + 1 + + + + + + + + + nvarchar + lcs_description + lcs_description + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 1 + 0 + 1.0.0.202346 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + text + 100 + 200 + + + + + + + + + nvarchar + lcs_someguid + lcs_someguid + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 1 + 0 + 1.0.0.2023412 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + text + 100 + 200 + + + + + + + + + datetime + lcs_system_datetime + lcs_system_datetime + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 1 + 0 + 1.0.0.202491 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + datetime + 1 + 1 + + + + + + + + + datetime + lcs_updated + lcs_updated + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 1 + 0 + 0 + 1.0.0.202346 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 + + 1 + 0 + 0 + 0 + datetime + 1 + 1 + + + + + + + + + nvarchar + lcs_workaround + lcs_workaround + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 1 + 0 + 1.0.0.2023410 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + text + 100 + 200 + + + + + + + + + lookup + modifiedby + modifiedby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + datetime + modifiedon + modifiedon + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + inactive + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 1 + 0 + datetime + 0 + 1 + + + + + + + + + lookup + modifiedonbehalfby + modifiedonbehalfby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + datetime + overriddencreatedon + overriddencreatedon + none + ValidForAdvancedFind|ValidForGrid + inactive + 0 + 1 + 1 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + date + 0 + 1 + + + + + + + + + owner + ownerid + ownerid + systemrequired + ValidForAdvancedFind|ValidForForm|ValidForGrid|RequiredForForm + auto + 1 + 1 + 1 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 0 + 0 + single + + 8 + 9 + + + + + + + + + + lookup + owningbusinessunit + owningbusinessunit + none + auto + 0 + 1 + 0 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 0 + 0 + single + + + + + + + + + + lookup + owningteam + owningteam + none + auto + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + lookup + owninguser + owninguser + none + auto + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + state + statecode + statecode + systemrequired + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 0 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 0 + 0 + + state + 1.0.0.0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + status + statuscode + statuscode + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 0 + 1 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + status + 1.0.0.0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + int + timezoneruleversionnumber + timezoneruleversionnumber + none + auto + 1 + 1 + 1 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + -1 + 2147483647 + + + + + + + + + int + utcconversiontimezonecode + utcconversiontimezonecode + none + auto + 1 + 1 + 1 + 0 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + -1 + 2147483647 + + + + + + + + + lcs_activitylogs + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + UserOwned + 0 + 0 + 0 + 0 + CommunicationActivity + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + + 1 + 1 + 0 + 0 + 1.0.0.0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/FormXml/card/{1456353b-7610-4f7e-ae86-cefcefee2a2d}.xml b/Solution/Entities/lcs_ActivityLog/FormXml/card/{1456353b-7610-4f7e-ae86-cefcefee2a2d}.xml new file mode 100644 index 00000000..d0933333 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/FormXml/card/{1456353b-7610-4f7e-ae86-cefcefee2a2d}.xml @@ -0,0 +1,112 @@ + + + + {1456353b-7610-4f7e-ae86-cefcefee2a2d} + 1.0.0.0 + 1 + 1 +
+ + + + + + + +
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + + + + +
+
\ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/FormXml/main/{bc91a247-5131-499a-977c-030d59856ee7}.xml b/Solution/Entities/lcs_ActivityLog/FormXml/main/{bc91a247-5131-499a-977c-030d59856ee7}.xml new file mode 100644 index 00000000..b62c5cb0 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/FormXml/main/{bc91a247-5131-499a-977c-030d59856ee7}.xml @@ -0,0 +1,55 @@ + + + + {bc91a247-5131-499a-977c-030d59856ee7} + 1.0.0.0 + 1 + 1 +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + + + + +
+
\ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/FormXml/quick/{3460e4ad-e29b-4e5e-86f0-12709299fcc8}.xml b/Solution/Entities/lcs_ActivityLog/FormXml/quick/{3460e4ad-e29b-4e5e-86f0-12709299fcc8}.xml new file mode 100644 index 00000000..a62f2313 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/FormXml/quick/{3460e4ad-e29b-4e5e-86f0-12709299fcc8}.xml @@ -0,0 +1,52 @@ + + + + {3460e4ad-e29b-4e5e-86f0-12709299fcc8} + 1.0.0.0 + 1 + 1 +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + +
+
\ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/RibbonDiff.xml b/Solution/Entities/lcs_ActivityLog/RibbonDiff.xml new file mode 100644 index 00000000..6b56f485 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/RibbonDiff.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{1478620c-3fe6-4029-98d5-c6f2ac792f38}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{1478620c-3fe6-4029-98d5-c6f2ac792f38}.xml new file mode 100644 index 00000000..268cf73c --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{1478620c-3fe6-4029-98d5-c6f2ac792f38}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 1 + {1478620c-3fe6-4029-98d5-c6f2ac792f38} + + + + + + + + + 2 + + + + + + + + + + + + + + 1.0.0.0 + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{5cc14493-eece-4475-964b-05b02b6c5430}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{5cc14493-eece-4475-964b-05b02b6c5430}.xml new file mode 100644 index 00000000..6207b9b3 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{5cc14493-eece-4475-964b-05b02b6c5430}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 1 + {5cc14493-eece-4475-964b-05b02b6c5430} + + + + + + + + + 0 + + + + + + + + + + + + + + 1.0.0.0 + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{8e4cd2cc-75ac-45bd-879c-12591b8f19b4}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{8e4cd2cc-75ac-45bd-879c-12591b8f19b4}.xml new file mode 100644 index 00000000..82b7d994 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{8e4cd2cc-75ac-45bd-879c-12591b8f19b4}.xml @@ -0,0 +1,36 @@ + + + + 1 + 0 + 0 + 0 + 1 + {8e4cd2cc-75ac-45bd-879c-12591b8f19b4} + + + + + + + + + 64 + + + + + + + + + + + + + 1.0.0.0 + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{9c9e4262-2b4a-4eba-8243-b28ab63a42f9}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{9c9e4262-2b4a-4eba-8243-b28ab63a42f9}.xml new file mode 100644 index 00000000..490cd2bb --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{9c9e4262-2b4a-4eba-8243-b28ab63a42f9}.xml @@ -0,0 +1,34 @@ + + + + 1 + 0 + 0 + 0 + 1 + {9c9e4262-2b4a-4eba-8243-b28ab63a42f9} + + + + + + + + + 1 + + + + + + + + + + + 1.0.0.0 + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{ca85ec21-a1c8-4d0a-84a9-dab8da10cd57}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{ca85ec21-a1c8-4d0a-84a9-dab8da10cd57}.xml new file mode 100644 index 00000000..3b5efe98 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{ca85ec21-a1c8-4d0a-84a9-dab8da10cd57}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 0 + {ca85ec21-a1c8-4d0a-84a9-dab8da10cd57} + + + + + + + + + 0 + + + + + + + + + + + + + + 1.0.0.0 + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{f171521a-3ae2-ea11-a813-000d3af3ac0d}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{f171521a-3ae2-ea11-a813-000d3af3ac0d}.xml new file mode 100644 index 00000000..78fb46fb --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{f171521a-3ae2-ea11-a813-000d3af3ac0d}.xml @@ -0,0 +1,30 @@ + + + + 1 + 1 + 0 + 0 + 1 + {f171521a-3ae2-ea11-a813-000d3af3ac0d} + 8192 + + + + + + + + + + + + 1.0.0.0 + + + + + + + + \ No newline at end of file diff --git a/Solution/Entities/lcs_ActivityLog/SavedQueries/{f1f915a9-28c3-4e2a-8b12-de68ce6e6f5c}.xml b/Solution/Entities/lcs_ActivityLog/SavedQueries/{f1f915a9-28c3-4e2a-8b12-de68ce6e6f5c}.xml new file mode 100644 index 00000000..bfa7c567 --- /dev/null +++ b/Solution/Entities/lcs_ActivityLog/SavedQueries/{f1f915a9-28c3-4e2a-8b12-de68ce6e6f5c}.xml @@ -0,0 +1,40 @@ + + + + 1 + 0 + 1 + 0 + 1 + {f1f915a9-28c3-4e2a-8b12-de68ce6e6f5c} + + + + + + + + + 4 + + + + + + + + + + + + + + + + + 1.0.0.0 + + + + + \ No newline at end of file diff --git a/Solution/Other/Customizations.xml b/Solution/Other/Customizations.xml new file mode 100644 index 00000000..78b36cae --- /dev/null +++ b/Solution/Other/Customizations.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + 1033 + + \ No newline at end of file diff --git a/Solution/Other/Relationships.xml b/Solution/Other/Relationships.xml new file mode 100644 index 00000000..7e26d8cc --- /dev/null +++ b/Solution/Other/Relationships.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Solution/Other/Relationships/BusinessUnit.xml b/Solution/Other/Relationships/BusinessUnit.xml new file mode 100644 index 00000000..2c6e2382 --- /dev/null +++ b/Solution/Other/Relationships/BusinessUnit.xml @@ -0,0 +1,22 @@ + + + + OneToMany + 1 + 1.0.0.0 + 0 + lcs_ActivityLog + BusinessUnit + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwningBusinessUnit + + + + + + + \ No newline at end of file diff --git a/Solution/Other/Relationships/Owner.xml b/Solution/Other/Relationships/Owner.xml new file mode 100644 index 00000000..896fe43f --- /dev/null +++ b/Solution/Other/Relationships/Owner.xml @@ -0,0 +1,22 @@ + + + + OneToMany + 1 + 1.0.0.0 + 0 + lcs_ActivityLog + Owner + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwnerId + + + + + + + \ No newline at end of file diff --git a/Solution/Other/Relationships/SystemUser.xml b/Solution/Other/Relationships/SystemUser.xml new file mode 100644 index 00000000..b3332dbe --- /dev/null +++ b/Solution/Other/Relationships/SystemUser.xml @@ -0,0 +1,60 @@ + + + + OneToMany + 1 + 1.0.0.0 + 0 + lcs_ActivityLog + SystemUser + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + CreatedBy + + + + + + + + OneToMany + 1 + 1.0.0.0 + 0 + lcs_ActivityLog + SystemUser + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + ModifiedBy + + + + + + + + OneToMany + 1 + 1.0.0.0 + 0 + lcs_ActivityLog + SystemUser + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwningUser + + + + + + + \ No newline at end of file diff --git a/Solution/Other/Relationships/Team.xml b/Solution/Other/Relationships/Team.xml new file mode 100644 index 00000000..49a21352 --- /dev/null +++ b/Solution/Other/Relationships/Team.xml @@ -0,0 +1,22 @@ + + + + OneToMany + 1 + 1.0.0.0 + 0 + lcs_ActivityLog + Team + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwningTeam + + + + + + + \ No newline at end of file diff --git a/Solution/Other/Solution.xml b/Solution/Other/Solution.xml new file mode 100644 index 00000000..e35f5ad0 --- /dev/null +++ b/Solution/Other/Solution.xml @@ -0,0 +1,85 @@ + + + + SampleApp + + + + + 1.0.0.202491 + 0 + + like10inc + + + + + admin@like10.com + https://www.like10.com + lcs + 80216 + +
+ 1 + 1 + Toronto + + Canada + + + + + 100 King Street West + Suite 5700 + + + + M5X 1C7 + + + 1 + Ontario + 613-755-4055 + + + + + + +
+
+ 2 + 1 + + + + + + + + + + + + + + + + 1 + + + + + + + + +
+
+
+ + + + +
+
\ No newline at end of file diff --git a/azure-pipeline-samples/azure-pipelines-build-deploy.yml b/azure-pipeline-samples/azure-pipelines-build-deploy.yml new file mode 100644 index 00000000..16ff9dfe --- /dev/null +++ b/azure-pipeline-samples/azure-pipelines-build-deploy.yml @@ -0,0 +1,181 @@ +# multi-stage yaml pipelines +# build-test-staging-prod pipeline + +variables: + Version.Revision: $[counter(format('{0:yyyyMMdd}', pipeline.startTime), 0)] + Version.Major: 1 + Version.Minor: 0 + # Solution Details + Solution.Name: 'SampleApp' + Solution.Path: '$(Pipeline.Workspace)/s/Solution' + Solution.Version: '0.0.0.0' + +name: '$(Build.DefinitionName) $(Version.Major).$(Version.Minor).$(Date:yy)$(DayOfYear).$(Version.Revision)' + +# Only run against main +trigger: +- main + +# Don't run against pull requests (PRs) +pr: none + +stages: +- stage: build + jobs: + - job: package_managed_solution + pool: + vmImage: 'windows-latest' + steps: + - pwsh: | + $VersionString = [regex]::matches($Env:BUILD_BUILDNUMBER,"\d+\.\d+\.\d+\.\d+") + Write-Host "##vso[task.setvariable variable=Solution.Version;]$VersionString" + displayName: 'Get Version String' + + - task: PowerPlatformToolInstaller@0 + displayName: 'Power Platform Tool Installer' + inputs: + DefaultVersion: true + + - task: PowerPlatformPackSolution@0 + displayName: 'Pack Solution from Repository' + inputs: + SolutionSourceFolder: '$(Solution.Path)' + SolutionOutputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + + - task: PowerPlatformImportSolution@0 + displayName: 'Import Solution to JIT Build Environment' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-jit' + SolutionInputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + AsyncOperation: true + MaxAsyncWaitTime: '240' + + - task: PowerPlatformSetSolutionVersion@0 + displayName: 'Set Solution Version' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-jit' + SolutionName: '$(Solution.Name)' + SolutionVersionNumber: '$(Solution.Version)' + + - task: PowerPlatformExportSolution@0 + displayName: 'Export Managed Solution' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-jit' + SolutionName: '$(Solution.Name)' + SolutionOutputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name)_managed.zip' + Managed: true + + - publish: '$(Build.ArtifactStagingDirectory)' + artifact: 'PowerAppSolutions' + +- stage: checker + dependsOn: build + jobs: + - job: run_checker + pool: + vmImage: 'windows-latest' + steps: + - checkout: none + - download: current + artifact: 'PowerAppSolutions' + displayName: 'Download Solutions' + + - task: PowerPlatformToolInstaller@0 + displayName: 'Power Platform Tool Installer' + inputs: + DefaultVersion: true + + - task: PowerPlatformChecker@0 + displayName: 'Execute Power Platform Checker' + inputs: + PowerPlatformSPN: 'like10-jit' + FilesToAnalyze: '$(Pipeline.Workspace)\PowerAppSolutions\*.zip' + RuleSet: '0ad12346-e108-40b8-a956-9a8f95ea18c9' + ArtifactDestinationName: 'PowerPlatformChecker' + + + +- stage: test + dependsOn: checker + jobs: + - deployment: test + displayName: 'Deploy Test' + pool: + vmImage: 'windows-latest' + environment: 'd365-test' + strategy: + runOnce: + deploy: + steps: + - checkout: none + - download: none + - script: echo 'Deploy managed solution to Test' + + +- stage: uat + dependsOn: test + jobs: + - deployment: uat + displayName: 'Deploy to UAT' + pool: + vmImage: 'windows-latest' + environment: 'd365-uat' + strategy: + runOnce: + deploy: + steps: + - checkout: none + - download: none + - script: echo 'Deploy managed solution to UAT' + +- stage: preprod + dependsOn: uat + jobs: + - deployment: preprod + displayName: 'Deploy to Pre-Prod' + pool: + vmImage: 'windows-latest' + environment: 'd365-ppe' + strategy: + runOnce: + deploy: + steps: + - checkout: none + - download: current + artifact: 'PowerAppSolutions' + displayName: 'Download solutions' + + - script: echo 'Deploy managed solution to pre-prod' + + - task: PowerPlatformToolInstaller@0 + inputs: + DefaultVersion: true + - task: PowerPlatformWhoAmi@0 + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-ppe' + + - task: PowerPlatformImportSolution@0 + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-ppe' + SolutionInputFile: '$(Pipeline.Workspace)\PowerAppSolutions\$(Solution.Name)_managed.zip' + AsyncOperation: true + MaxAsyncWaitTime: '60' + +- stage: production + dependsOn: preprod + jobs: + - deployment: production + displayName: 'Deploy to Production' + pool: + vmImage: 'windows-latest' + environment: 'd365-prod' + strategy: + runOnce: + deploy: + steps: + - script: echo 'Deploy container to prodution slot/webapp' diff --git a/azure-pipeline-samples/build-managed-solution.yml b/azure-pipeline-samples/build-managed-solution.yml new file mode 100644 index 00000000..ae913827 --- /dev/null +++ b/azure-pipeline-samples/build-managed-solution.yml @@ -0,0 +1,57 @@ +# Build managed solution from git repository +# requires a Just-In-Time (JIT) environment in Power Apps +# umanaged solution is imported and a managed solution +# is exported +# The managed solution is saved as a pipeline artifact +# + +trigger: + - main + - develop + +pool: + vmImage: 'windows-latest' + +variables: + # Solution Details + Solution.Name: 'SampleApp' + Solution.Path: '$(Pipeline.Workspace)/s/Solution' + +steps: + +- task: PowerPlatformToolInstaller@0 + displayName: 'Power Platform Tool Installer' + inputs: + DefaultVersion: true + +- task: PowerPlatformPackSolution@0 + displayName: 'Pack Solution from Repository' + inputs: + SolutionSourceFolder: '$(Solution.Path)' + SolutionOutputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + +- task: PowerPlatformImportSolution@0 + displayName: 'Import Solution to JIT Build Environment' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-jit' + SolutionInputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + AsyncOperation: true + MaxAsyncWaitTime: '240' + +- task: PowerPlatformExportSolution@0 + displayName: 'Export Managed Solution' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-jit' + SolutionName: '$(Solution.Name)' + SolutionOutputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name)_managed.zip' + Managed: true + +- task: PublishPipelineArtifact@1 + displayName: 'Publish Artifacts managed and unmanaged solutions' + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)\' + artifact: 'PowerAppSolutions' + publishLocation: 'pipeline' + diff --git a/azure-pipeline-samples/create-export-from-dev.yml b/azure-pipeline-samples/create-export-from-dev.yml new file mode 100644 index 00000000..042a7b76 --- /dev/null +++ b/azure-pipeline-samples/create-export-from-dev.yml @@ -0,0 +1,67 @@ +# Get solution and commit +# to the same Git repository and branch used when pipeline +# is triggered +# +# PowerPlatformSPN values are Service connections which are defined in +# Service Connections under Project Settings using the Power Platform connection type and a Service Principal +# https://docs.microsoft.com/en-us/power-platform/alm/devops-build-tools#configure-service-connections-using-a-service-principal + +trigger: + - main + - develop +pool: + vmImage: 'windows-latest' + +variables: + # Git command output is done on stderr, not stdout + GIT_REDIRECT_STDERR: 2>&1 + # Solution Details + Solution.Name: 'SampleApp' + Solution.Path: '$(Pipeline.Workspace)/s/Solution' + + +steps: +- checkout: self + clean: true + persistCredentials: true + +- pwsh: write-host "##vso[task.setvariable variable=Build.SourceBranchFullName]$($env:build_sourceBranch.substring($env:build_sourceBranch.indexOf('/', 5) + 1))" + displayName: 'Create Build.SourceBranchFullName environment variable' + +- task: PowerPlatformToolInstaller@0 + displayName: 'Power Platform Tool Installer' + inputs: + DefaultVersion: true + +- task: PowerPlatformExportSolution@0 + displayName: 'Export Solution (unmanaged)' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-dev' + SolutionName: '$(Solution.Name)' + SolutionOutputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + Managed: false + +- task: PowerPlatformUnpackSolution@0 + displayName: 'Unpack solution' + inputs: + SolutionInputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + SolutionTargetFolder: '$(Solution.Path)' + +- pwsh: | + git config user.email "agent@dev.azure.com" + git config user.name "Azure Pipeline" + git checkout -b $env:Build_SourceBranchFullName + if (git status -s) + { + write-host "commit all changes" + git add --all + git commit -m "solution source updated by $env:BUILD_BUILDNUMBER [skip ci]" + write-host "push changes to repo" + git push origin $env:Build_SourceBranchFullName + } + else + { + write-host "Nothing to push, no changes detected" + } + displayName: "Commit/Push changes to Git repo" \ No newline at end of file diff --git a/azure-pipeline-samples/get-commit-solution.yml b/azure-pipeline-samples/get-commit-solution.yml new file mode 100644 index 00000000..f7ad4d51 --- /dev/null +++ b/azure-pipeline-samples/get-commit-solution.yml @@ -0,0 +1,98 @@ +# Get solution from Power Apps and +# Commit it to the same Git repository and branch in the pipeline +# +# Using the following variables to build a version string: Version.Major, Version.Minor, Version.Patch +# PowerPlatformSPN values are Service connections which are defined in +# Service Connections under Project Settings using the Power Platform connection type and a Service Principal +# https://docs.microsoft.com/en-us/power-platform/alm/devops-build-tools#configure-service-connections-using-a-service-principal + +trigger: + branches: + include: + - main + - develop + paths: + include: + - azure-pipeline-samples/* + +pool: + vmImage: 'windows-latest' + +variables: + # Git command output is done on stderr, not stdout + GIT_REDIRECT_STDERR: 2>&1 + # Solution Version Variables + Version.Revision: $[counter(format('{0:yyyyMMdd}', pipeline.startTime), 0)] + Version.Major: 1 + Version.Minor: 0 + Version.Patch: 0 + # Solution Details + Solution.Name: 'SampleApp' + Solution.Version: '0.0.0.0' + +name: '$(Build.DefinitionName) $(Version.Major).$(Version.Minor).$(Version.Patch).$(Date:yy)$(DayOfYear)$(Version.Revision)' + +steps: +- checkout: self + clean: true + persistCredentials: true + +- pwsh: | + $VersionRegex = "\d+\.\d+\.\d+\.\d+" + $VersionData = [regex]::matches($Env:BUILD_BUILDNUMBER,$VersionRegex) + Write-Host "##vso[task.setvariable variable=Solution.Version;]$VersionData" + displayName: 'Get Version String' + +- task: PowerPlatformToolInstaller@0 + displayName: 'Power Platform Tool Installer' + inputs: + DefaultVersion: true + +- task: PowerPlatformSetSolutionVersion@0 + displayName: 'Set Solution Version' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-dev' + SolutionName: '$(Solution.Name)' + SolutionVersionNumber: '$(Solution.Version)' + +- task: PowerPlatformPublishCustomizations@0 + displayName: 'Publish Customizations' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-dev' + +- task: PowerPlatformExportSolution@0 + displayName: 'Export Solution (unmanaged)' + inputs: + authenticationType: 'PowerPlatformSPN' + PowerPlatformSPN: 'like10-dev' + SolutionName: '$(Solution.Name)' + SolutionOutputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + Managed: false + +- task: PowerPlatformChecker@0 + displayName: 'Execute Power Platform Checker' + inputs: + PowerPlatformSPN: 'like10-dev' + FilesToAnalyze: '$(Build.ArtifactStagingDirectory)\*.zip' + RuleSet: '0ad12346-e108-40b8-a956-9a8f95ea18c9' + +- task: PowerPlatformUnpackSolution@0 + displayName: 'Unpack solution' + inputs: + SolutionInputFile: '$(Build.ArtifactStagingDirectory)\$(Solution.Name).zip' + SolutionTargetFolder: '$(Pipeline.Workspace)/s/Solution' + +- pwsh: | + write-host "commit all changes to $env:Build_SourceBranchName" + git config user.email "hosted.agent@dev.azure.com" + git config user.name "Azure Pipeline" + git checkout $env:Build_SourceBranchName -- + git add --all + git commit -m "solution source updated by $env:BUILD_BUILDNUMBER [skip ci]" + write-host "push code to repo" + git push origin $env:Build_SourceBranchName + displayName: "Commit changes to Git repo/branch" + + diff --git a/azure-pipeline-samples/starter-pipeline.yml b/azure-pipeline-samples/starter-pipeline.yml new file mode 100644 index 00000000..aa912913 --- /dev/null +++ b/azure-pipeline-samples/starter-pipeline.yml @@ -0,0 +1,19 @@ +# Starter pipeline +# Start with a minimal pipeline that you can customize to build and deploy your code. +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml + +trigger: +- master + +pool: + vmImage: 'ubuntu-latest' + +steps: +- script: echo Hello, world! + displayName: 'Run a one-line script' + +- script: | + echo Add other tasks to build, test, and deploy your project. + echo See https://aka.ms/yaml + displayName: 'Run a multi-line script'