Klantenreleases

Codering tegen de juiste AEM-versie

Voor eerdere AEM-oplossingen is de meest recente AEM-versie niet vaak gewijzigd (ongeveer jaarlijks met driemaandelijkse servicepakketten) en klanten zouden de productie-instanties op hun eigen tijd bijwerken naar de recentste snelstartversie, waarbij naar de API Jar wordt verwezen. Toepassingen op AEM as a Cloud Service worden echter vaker automatisch bijgewerkt naar de nieuwste versie van AEM, zodat aangepaste code voor interne releases moet worden gebaseerd op de nieuwste versie van AEM.

Net als bij bestaande niet-cloud AEM-versies, wordt een lokale, offline ontwikkeling ondersteund op basis van een specifieke QuickStart. Deze ontwikkeling is naar verwachting het meest geschikte instrument voor foutopsporing.

NOTE
Er zijn subtiele operationele verschillen tussen de werking van de toepassing op een lokale computer en die van de Adobe Cloud. Deze architecturale verschillen moeten tijdens de lokale ontwikkeling worden gerespecteerd en kunnen bij de implementatie op de cloudinfrastructuur tot een ander gedrag leiden. Vanwege deze verschillen is het belangrijk om de uitgebreide tests uit te voeren op ontwikkelings- en werkgebiedomgevingen voordat nieuwe aangepaste code in productie wordt geïmplementeerd.

Om douanecode voor een interne versie te ontwikkelen, zou de relevante versie van AEM as a Cloud Service SDKmoeten worden gedownload en worden geïnstalleerd. Voor extra informatie over het gebruiken van de Hulpmiddelen van AEM as a Cloud Service Dispatcher, zie Dispatcher in de Wolk.

De volgende video biedt een overzicht op hoog niveau over hoe u code kunt implementeren in AEM as a Cloud Service:

Inhoudspakketten implementeren via Cloud Manager en Package Manager

Inzet via Cloud Manager

Klanten implementeren aangepaste code in cloudomgevingen via Cloud Manager. Cloud Manager transformeert lokaal geassembleerde inhoudspakketten naar een artefact dat voldoet aan het Sling Feature Model, dat is hoe een toepassing op AEM as a Cloud Service wordt beschreven wanneer deze in een cloudomgeving wordt uitgevoerd. Dientengevolge, wanneer het bekijken van de pakketten in Manager van het Pakketop de milieu's van de Wolk, omvat de naam "cp2fm"en de getransformeerde pakketten hebben alle meta-gegevens verwijderd. Er kan geen interactie met deze toepassingen plaatsvinden, wat betekent dat ze niet kunnen worden gedownload, gerepliceerd of geopend. Zie 🔗 voor gedetailleerde documentatie over de converter.
sling-org-apache-sling-feature-cpconverter op GitHub .

Inhoudspakketten die voor toepassingen op AEM as a Cloud Service zijn geschreven, moeten een duidelijke scheiding hebben tussen onveranderbare en muteerbare inhoud en Cloud Manager installeert alleen de veranderbare inhoud en voert ook een bericht uit zoals:

Generated content-package <PACKAGE_ID> located in file <PATH> is of MIXED type

De rest van deze sectie beschrijft de samenstelling en implicaties van onveranderbare en veranderbare pakketten.

Onveranderbare inhoudspakketten

Alle inhoud en code die in de onveranderlijke gegevensopslagplaats voortkomen moeten in git worden gecontroleerd en door Cloud Manager worden opgesteld. Met andere woorden, in tegenstelling tot de huidige AEM-oplossingen, wordt code nooit rechtstreeks geïmplementeerd op een actieve AEM-instantie. Deze workflow zorgt ervoor dat de code die voor een bepaalde release in een Cloud-omgeving wordt uitgevoerd, identiek is, waardoor het risico van onbedoelde codevariatie tijdens de productie wordt uitgesloten. Als voorbeeld, zou de configuratie OSGI aan broncontrole eerder dan beheerd bij runtime door middel van de configuratiemanager van de Webconsole van AEM moeten worden geëngageerd.

Aangezien de toepassingsveranderingen toe te schrijven aan het plaatsingspatroon door een schakelaar worden toegelaten, kunnen zij niet van veranderingen in de veranderbare bewaarplaats behalve de dienstgebruikers, hun ACLs, nodetypes, en de veranderingen van de indexdefinitie afhangen.

Voor klanten met bestaande codebases is het van essentieel belang dat de in AEM-documentatie beschreven herstructureringsoefening in de repository wordt doorlopen om ervoor te zorgen dat inhoud die voorheen onder de /etc. viel, naar de juiste locatie wordt verplaatst.

Sommige extra beperkingen zijn van toepassing voor deze codepakketten, bijvoorbeeld, installeert hakenniet worden gesteund.

OSGI-configuratie

Zoals hierboven vermeld, zou de configuratie OSGI aan broncontrole eerder dan door de Webconsole moeten worden geëngageerd. Te dien einde zijn onder meer de volgende technieken van toepassing:

  • De benodigde wijzigingen aanbrengen in de lokale AEM-omgeving van de ontwikkelaar met de configuratiemanager van de AEM-webconsole en de resultaten vervolgens exporteren naar het AEM-project op het lokale bestandssysteem
  • Creërend manueel de configuratie OSGI in het project van AEM op het lokale dossiersysteem, het van verwijzingen voorzien van de configuratiemanager van de console van AEM voor de bezitsnamen.

Lees meer over configuratie OSGI bij het Vormen OSGi voor AEM as a Cloud Service.

Mabelinhoud

Soms, zou het nuttig kunnen zijn om inhoudsveranderingen in broncontrole voor te bereiden zodat kan het door Cloud Manager worden opgesteld wanneer een milieu werd bijgewerkt. Het kan bijvoorbeeld redelijk zijn om bepaalde basismapstructuren uit te breiden. Of, regelup veranderingen in editable malplaatjes om beleidscomponenten toe te laten die door de toepassingsplaatsing werden bijgewerkt.

Er zijn twee strategieën om de inhoud te beschrijven die door Cloud Manager wordt geïmplementeerd in de gemuteerde opslagplaats, pakketten met gemuteerde inhoud en repoinit -instructies.

Tabelinhoudspakketten

Inhoud zoals de hiërarchieën van de omslagweg, de dienstgebruikers, en toegangscontroles (ACLs) worden typisch toegewijd in een bepaald archetype-Gebaseerd AEM project. Tot de technieken behoren exporteren vanuit AEM of rechtstreeks schrijven als XML. Tijdens het ontwikkelings- en implementatieproces verpakt Cloud Manager het resulterende veranderbare inhoudspakket. De veranderlijke inhoud wordt geïnstalleerd bij drie verschillende tijden tijdens de opstellen fase in de pijpleiding:

Voor het opstarten van een nieuwe versie van de toepassing:

  • indexdefinities (toevoegen, wijzigen, verwijderen)

Tijdens het opstarten van een nieuwe versie van de toepassing, maar vóór de omschakeling:

  • Servicegebruikers (toevoegen)
  • ACLs van de Gebruiker van de dienst (toevoegen)
  • knooppunttypen (toevoegen)

Na de overgang naar de nieuwe versie van de toepassing:

  • Alle andere inhoud die kan worden gedefinieerd door middel van een Jackrabbit-vault. Bijvoorbeeld:

    • Mappen (toevoegen, wijzigen, verwijderen)
    • Bewerkbare sjablonen (toevoegen, wijzigen, verwijderen)
    • Contextbewuste configuratie (alles onder /conf) (toevoegen, wijzigen, verwijderen)
    • Scripts (pakketten kunnen installatiekoppen activeren in verschillende stadia van het installatieproces van de pakketinstallatie. Zie het filevault documentatie van het Jasrabbitover installeert haken. AEM CS gebruikt momenteel FileVault versie 3.4.0, die installatiekoppen beperkt tot beheergebruikers, systeemgebruikers en leden van de beheerdersgroep).

U kunt de installatie van veranderbare inhoud beperken tot auteur of publiceren door pakketten in te sluiten in de map install.auteur of install.publish onder /apps . De herstructurering om deze scheiding te weerspiegelen werd gedaan in AEM 6.5 en de details over geadviseerde projectherstructurering kunnen in AEM 6.5 documentatieworden gevonden.

NOTE
Inhoudspakketten worden geïmplementeerd op alle omgevingstypen (dev, stage, prod). Het is niet mogelijk de implementatie te beperken tot een specifieke omgeving. Deze beperking is van toepassing om ervoor te zorgen dat een testrun van geautomatiseerde uitvoering mogelijk is. De inhoud die voor een milieu specifiek is vereist handinstallatie als Manager van het Pakket.

Er is ook geen mechanisme om wijzigingen in het veranderbare inhoudspakket terug te draaien nadat deze zijn toegepast. Als klanten een probleem ontdekken, kunnen zij verkiezen om het in hun volgende codeversie of als laatste redmiddel te bevestigen, het volledige systeem aan een punt in tijd vóór de plaatsing herstellen.

Alle meegeleverde pakketten van derden moeten als compatibel met AEM as a Cloud Service worden gevalideerd, anders leidt de opname ervan tot een implementatiefout.

Zoals hierboven vermeld, zouden de klanten met bestaande codebases aan de opbergordeherstructureringsoefening moeten in overeenstemming zijn nodig door de veranderingen van de 6.5 bewaarplaats die in AEM 6.5 documentatieworden beschreven.

Opnieuw plaatsen

In de volgende gevallen verdient het de voorkeur de handmatige codering van expliciete instructies repoinit voor het maken van inhoud in de OSGI-fabrieksconfiguraties te gebruiken:

  • Servicegebruikers maken/verwijderen/uitschakelen

  • Groepen maken/verwijderen

  • Gebruikers maken/verwijderen

  • Voeg ACLs toe

    NOTE
    De definitie van ACLs vereist dat de knoopstructuren reeds aanwezig zijn. Het is dus mogelijk dat u padinstructies moet maken.
  • Pad toevoegen (bijvoorbeeld voor basismapstructuren)

  • CND's toevoegen (geen typedefinities)

Het is aan te raden deze gevallen van wijziging van inhoud opnieuw te plaatsen om de volgende voordelen te bieden:

  • Repoinit maakt bij het opstarten bronnen, zodat logica het bestaan van deze bronnen vanzelfsprekend kan maken. In de veranderlijke benadering van het inhoudspakket, worden de middelen gecreeerd na opstarten, zodat de toepassingscode die op hen baseert kan ontbreken.
  • Repoinit is een relatief veilige instructieset omdat u expliciet bepaalt welke actie moet worden uitgevoerd. Bovendien zijn de enige ondersteunde bewerkingen additief, behalve enkele beveiligingsgerelateerde gevallen die verwijdering van Gebruikers, Gebruikers en Groepen toestaan. Een verwijdering van iets in de methode voor het muteerbare inhoudspakket is daarentegen expliciet. Wanneer u een filter definieert, wordt alle aanwezige elementen die door een filter worden gedekt, verwijderd. Toch moet voorzichtigheid worden betracht, aangezien er scenario's zijn waarin de aanwezigheid van nieuwe inhoud het gedrag van de toepassing kan veranderen.
  • Repoinit voert snelle en atomische bewerkingen uit. De uitvoerbare inhoudspakketten in tegenstelling tot kunnen sterk afhankelijk van prestaties van de structuren die door een filter worden behandeld. Zelfs als u één knooppunt bijwerkt, kan een momentopname van een grote boomstructuur worden gemaakt.
  • Het is mogelijk om repoinit verklaringen op een lokaal dev milieu bij runtime te bevestigen omdat zij in werking worden gesteld wanneer de configuratie OSGi wordt geregistreerd.
  • Repoinit -instructies zijn atomisch en expliciet en worden overgeslagen als de status al overeenkomt.

Wanneer Cloud Manager de toepassing implementeert, worden deze instructies onafhankelijk van de installatie van inhoudspakketten uitgevoerd.

Volg de onderstaande procedure om repoinit -instructies te maken:

  1. Voeg configuratie OSGi voor fabriek PID org.apache.sling.jcr.repoinit.RepositoryInitializer in een configuratiemap van het project toe. Gebruik een beschrijvende naam voor de configuratie als org.apache.sling.jcr.repoinit.RepositoryInitializer~initstructure.
  2. Voeg repoinit verklaringen aan het manuscripteigenschap van config toe. De syntaxis en de opties worden gedocumenteerd in het Verdelen documentatie. Er moet een bovenliggende map expliciet worden gemaakt voordat de onderliggende mappen worden gemaakt. Bijvoorbeeld, een expliciete verwezenlijking van /content before /content/myfolder, before /content/myfolder/mysubfolder. Voor ACLs die op laag-vlakke structuren worden geplaatst, wordt het geadviseerd om hen op een hoger niveau te plaatsen en met een rep:glob beperking te werken. Bijvoorbeeld (allow jcr:read on /apps restriction(rep:glob,/msm/wcm/rolloutconfigs)) .
  3. Valideren in de lokale ontwikkelomgeving bij uitvoering.
WARNING
Voor ACLs die voor knopen onder /apps of /libs wordt bepaald repoinit, begint de uitvoering op een lege bewaarplaats. De pakketten worden geïnstalleerd na repoinit , zodat instructies niet kunnen vertrouwen op iets dat in de pakketten is gedefinieerd, maar de voorwaarden moeten definiëren, zoals de bovenliggende structuren eronder.
TIP
Voor ACLs, zou de verwezenlijking van diepe structuren omslachtig kunnen zijn. Daarom is het redelijker om ACL op een hoger niveau te bepalen en te beperken waar het verondersteld is om als rep:glob beperking te handelen.

Meer detail over repoinit kan in de het Verdelen documentatieworden gevonden

Package Manager "one offs" voor Mutable Content Packages

Er zijn gebruiksgevallen waarin een inhoudspakket als "één uit" moet worden geïnstalleerd. Bijvoorbeeld, het invoeren van specifieke inhoud van productie aan het opvoeren om een productiekwestie te zuiveren. Voor deze scenario's, de Manager van het Pakketkan in milieu's op AEM as a Cloud Service worden gebruikt.

Aangezien Package Manager een runtimeconcept is, is het niet mogelijk om inhoud of code in de onveranderlijke opslagplaats te installeren, zodat zouden deze inhoudspakketten slechts uit veranderbare inhoud (hoofdzakelijk /content of /conf) moeten bestaan. Als het inhoudspakket inhoud bevat die gemengd is (zowel muteerbare als onveranderlijke inhoud), wordt alleen de veranderbare inhoud geïnstalleerd.

IMPORTANT
Het gebruikersinterface van de Manager van het Pakket zou een niet gedefiniëerd foutenmelding kunnen terugkeren als een pakket langer dan tien minuten om duurt te installeren.
Deze keer is niet het gevolg van een fout tijdens de installatie, maar van een time-out die Cloud Service heeft voor alle aanvragen.
Probeer de installatie niet opnieuw als er een dergelijke fout optreedt. De installatie verloopt op de juiste wijze op de achtergrond. Als u de installatie opnieuw start, kunnen er conflicten optreden tijdens meerdere importprocessen tegelijk.

Alle inhoudspakketten die in Cloud Manager (zowel mutabel als onveranderbaar) zijn geïnstalleerd, worden in de gebruikersinterface van AEM Package Manager bevroren weergegeven. Deze pakketten kunnen niet opnieuw worden geïnstalleerd, worden herbouwd, of zelfs worden gedownload, en zijn vermeld met a "cp2fm" achtervoegsel, erop wijzend dat hun installatie door Cloud Manager werd beheerd.