21 februari 2021 • februari 21, 2021 at 10:09 am Qdraw

Kruiend ijs Friesland (2021)

Nadat het een ander halve week behoorlijk heeft gevroren heeft de dooi ingezet. In combinatie met wind levert dit een bijzonder natuurfenomeen op: kruiend ijs. Het is afgelopen week op verschillende plekken waargenomen in Nederland waaronder in Friesland. Natuurfotografen zijn er dol op en proberen het zeldzame verschijnsel vast te leggen zolang het kan. De stukken ijs op het IJsselmeer zijn tegen de kust opgewaaid en opgehoopt. Dit zie je in Nederland niet vaak en komt erg Siberisch over. In deze foto serie ben ik in Laaxum, Stavoren en Makkum geweest.



Kruiend ijs Friesland (2021) ; Haven van Laaxum ; Kruiend ijs, IJsselmeer, Laaxum, Laaksum, IJs



Kruiend ijs Friesland (2021) ; Kruiend IJs (Laaxum) ; Kruiend ijs, IJsselmeer, Laaxum, Laaksum, IJs



Kruiend ijs Friesland (2021) ; Kruiend IJs (Laaxum) ; Kruiend ijs, IJsselmeer, Laaxum, Laaksum, IJs



Kruiend ijs Friesland (2021) ; Johan Frisosluis ; IJsselmeer, Stavoren, Starum, Johan Friso sluis



Kruiend ijs Friesland (2021) ; Kruiend IJs (Stavoren) ; Kruiend ijs, IJsselmeer, Stavoren, Starum, IJs



Kruiend ijs Friesland (2021) ; Kruiend IJs (Stavoren) ; Kruiend ijs, Stavoren, Starum, IJs



Kruiend ijs Friesland (2021) ; Kruiend IJs (Stavoren) ; Kruiend ijs, IJsselmeer, Stavoren, Starum



Kruiend ijs Friesland (2021) ; Kruiend IJs (Stavoren) ; Kruiend ijs, IJsselmeer, Stavoren, Starum, IJs



Kruiend ijs Friesland (2021) ; Kruiend IJs (Stavoren) ; Kruiend ijs, IJsselmeer, Stavoren, Starum, IJs



Kruiend ijs Friesland (2021) ; Kruiend IJs (Stavoren) ; Kruiend ijs, IJsselmeer, Stavoren, Starum, IJs



Kruiend ijs Friesland (2021) ; Buitenhaven Stavoren ; Kruiend ijs, IJsselmeer, Stavoren, Starum, IJs, Havenweg, Buitenhaven



Kruiend ijs Friesland (2021) ; Strand van Makkum ; IJsselmeer, Makkum, IJs, Strand van Makkum, Strand

Dit bericht is geschreven door: Dion

Tags: ,

Gecategoriseerd in:

12 februari 2021 • februari 12, 2021 at 8:00 pm Qdraw

Sneeuw op het Hartelaar te Twello (2021)

Het particuliere landgoed tussen Teuge en Twello en grenst aan het het dorp Twello en de spoorlijn van Apeldoorn naar Deventer. Hier heb ik een klein gedeelte van de wandelroute naar Apeldoorn gevolgd. Deze route maakt onderdeel uit van “Apeldoorn te Voet” en wordt de Woudhuisroute genoemd. Deze route loopt over het Hartelaar. Ik heb op 9 februari hier een korte foto serie gemaakt van de foto’s in de sneeuw.



Sneeuw op het Hartelaar te Twello (2021) ; Hondsdrift ; Hondsdrift, sneeuw, boom



Sneeuw op het Hartelaar te Twello (2021) ; Koppelleiding ; Zonnenbergstraat, Koppelleiding, sloot, sneeuw



Sneeuw op het Hartelaar te Twello (2021) ; De sloot is bijna niet te zien ; Hartelaar, sloot, sneeuw



Sneeuw op het Hartelaar te Twello (2021) ; Wandelpad ; Hartelaar, sneeuw, wandelpad



Sneeuw op het Hartelaar te Twello (2021) ; Riet ; Hartelaar, sneeuw, riet

Dit bericht is geschreven door: Dion

Tags: , ,

Gecategoriseerd in:

11 februari 2021 • februari 11, 2021 at 11:01 am Qdraw

Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021)

In de IJsselvalei ten zuiden van het dorp Twello ligt het landgoed de Klein Noordijk. Klein Noordijk ligt tegenover Noordijk en is een van de kleine landgoederen in Wilp. Het bestaat uit parkbos, grote gazons, een landhuis uit 1856 en enkele weilanden.

Aan de overkant van de H.W. Iordensweg ligt de Grote Noordijk. Het grootste huis op het landgoed, dateert van 1807. De afgelopen dertig jaar stonden de huizen op het landgoed leeg. Inmiddels worden de Noordijk wel tijdelijk bewoond maar het is wel duidelijk te zien dat staat van het gebouw erg slecht is. Het is wel een mooie urbex locatie geworden.

Naast de Grote Noordijk staat een oude boerderij. Inmiddels is men enkele maanden bezig met de renovatie van de boerderij. In september 2019 ben ik hier binnen geweest met open monumentendag

De twee landgoederen zijn een mooie plek voor een korte wandeling door de sneeuw. Ik heb de onderstaande foto’s op 8 februari 2021 gemaakt.



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; Noordijkpad ; boerderij, Noordijkpad, sneeuw, platteland, Twello



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; Wolbospad ; Voorderpad, Wolbospad, sneeuw, struiken, Twello



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; Bomen vlakbij de Kleine Noordijk ; Wolbospad, bomen, sneeuw, Twello



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; Hulst en boom ; Kleine Noordijk, bomen, sneeuw, hulst, Twello, Klein Noordijk



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; Kleine Noordijk ; Kleine Noordijk, landhuis, sneeuw, Twello, Klein Noordijk



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; Kleine Noordijk ; Kleine Noordijk, landhuis, sneeuw, rhododendron, Twello, Klein Noordijk



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; ; Grote Noordijk, landhuis, sneeuw, Twello



Landgoed Klein Noordijk en de Grote Noordijk in de sneeuw (2021) ; ; Grote Noordijk, landhuis, sneeuw, Twello

Dit bericht is geschreven door: Dion

Tags: , , , ,

Gecategoriseerd in:

10 februari 2021 • februari 11, 2021 at 10:21 am Qdraw

Fliertpad Klompenpad in de sneeuw (2021)

Tussen Apeldoorn en Deventer ligt het dorpje Twello. Het startpunt van het Fliertpad. Dit klompenpad loopt door een mooi stuk van de IJsselvalei. Tijdens de wandeling kom je diverse oude boerderijen en landhuizen tegen.

Bij het gemeentehuis van de Gemeente Voorst te Twello start het klompenpad. Op dit moment wordt het gemeentehuis verbouwd en de eerst komende paar jaar kun je nog door het gebouw heen kijken omdat het skelet alleen nog maar over is. De route loopt hier van het centrum af, dus let goed op dat je niet de aanlooproute pakt. Ik heb de route met klok mee om gelopen, maar de route is in beide richtingen goed te volgen.

Hunderenslaan

Door de Hunderenslaan loop je richting het Huis Het Hunderen. Dit monumentale huis is uit de 17e eeuw en wordt nu gebruikt voor als residentie voor dementerende ouderen. Langs de Kruisvoorderweg en de Blikkenweg loop je richting Bruggenbosch. Persoonlijk vind ik dit niet zo’n mooi stuk.

Kraaigraaf

Aan het einde van Blikkenweg begint het Blikkenbos. Dit bos wordt gebruikt om water op te pompen en is eigendom van het waterleidingbedrijf Vitens. Aan de andere kant van het bos kom je uit op de velden bij de Kraaigraaf. Dit is een prachtig stuk waar bos en de velden zich afwisselen. Onderweg kun je ook overstappen op het Avervoorderpad.

“De Aze”

Boerderij ‘De Aze’ ligt ook langs het klompenpad en is een prachtige oude boerderij die als bed & breakfast wordt gebruikt. Ongeveer 100 jaar geleden werd deze hallenboerderij gebouwd en is omgeven door de natuur.

Langs de Fliert

Voorbij de ‘De Aze’ loop je door een waterwingebied met een stukje bos en aan de achterkant van het bos kom je bij de Fliert uit. Het water in de Fliert stroomt langzaam. De Fliert waarschijnlijk een van de weinige natuurlijke beken in de omgeving. Op het verlaten pad waar we lopen ligt er mooi bij. Hier lopen we langs en vervolgens komen we bij een appelboomgaard van de familie Klomp. Vanaf het pad is de boomgaard goed te zien.

Hunderen

De route vervolgt langs landgoed Het Hunderen. Vlak daarna passeren we het punt waar je de route kunt inkorten. Het Fliertpad bestaat als het ware uit twee lussen, waardoor je de route ook in een verkorte versie kunt lopen van 11 km. Maar ik wil graag de hele route zien – en die blijkt zeker de moeite waard te zijn.

Naar De Worp

De Dijkhofstraat brengt je in de richting van De Worp (Deventer). Aan de andere kant van de weg ligt de Hof van Twello. Let wel op, bij de brug langs het spoor steekt de route de weg over. Hier moet je wel even goed kijken, maar het loopt wel een stuk mooier.

Het Schol & Landgoed Nieuw Bellinkhof

Vlak bij Deventer is nog een landhuis. Landhuis ’t Schol is gebouwd in Neo Lodewijk-XV stijl en heeft een prachtig landgoed met prachtige natuur. Hier kwam ik een aalscholver tegen. De aalscholver is een oude, vertrouwde bewoner van het waterrijke Nederland. Langs de dijk wandel je naar het nieuwe landgoed Nieuw Bellinkhof. Dit landgoed is gelegen tussen de Wilpsedijk, de Voordersteeg en het Buddezand op de noordelijke uitloper van een stroomrug. Ten noorden en zuiden van het plangebied is het landschap sterker verdicht door de aanwezigheid van landgoederen. Onderweg kwam ik nog een paar mensen tegen die aan het langlaufen waren.

Landhuis Hackforts Veenhuis

Onderweg naar het gemeentehuis kom je nog het laatste landhuis tegen, namelijk landhuis Hackforts Veenhuis. Momenteel wordt het landgoed particulier bewoond. Als je komt aanlopen zie je het van een afstand.

Wil je ook het Fliertpad lopen?

Eigenlijk alle klompenpaden zijn goed bewegwijzerd. Toch is het handig ook de routebeschrijving erbij te hebben, dit kan zowel met de Klompenpaden-app als op papier. Op klompenpaden.nl staan PDF bestanden waar in de route staat aangegeven. Het Fliertpad is dus 16,7 kilometer lang en in te korten naar 11 kilometer.

De foto’s zijn gemaakt op zondag 7 februari 2021



Fliertpad Klompenpad in de sneeuw (2021) ; Blikkenbos ; Blikkenbos, varkens, struik, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Hazelaar in de sneeuw ; Blikkenbos, takken, snotterbellen, hazelaar, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Klompenpad ter hoogte van de Kraaigraaf ; Kraaigraaf, solitaire boom, klompenpad, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Sneeuwduinen op het Klompenpad ; Kraaigraaf, klompenpad, gras, Sneeuwduinen



Fliertpad Klompenpad in de sneeuw (2021) ; Velden ; Kraaigraaf, klompenpad, sneeuw, velden



Fliertpad Klompenpad in de sneeuw (2021) ; Schapen ; schapen, sneeuw, waterwingebied



Fliertpad Klompenpad in de sneeuw (2021) ; De Fliert ; Fliert, boerderij, sneeuw, knotwilg



Fliertpad Klompenpad in de sneeuw (2021) ; Knotwilgen langs de Fliert ; Fliert, sneeuw, knotwilg



Fliertpad Klompenpad in de sneeuw (2021) ; Bruin wit langs de Fliert ; Fliert, sneeuw, riet, bruin



Fliertpad Klompenpad in de sneeuw (2021) ; Takken in het water ; Fliert, tak, sneeuw, water



Fliertpad Klompenpad in de sneeuw (2021) ; Slotgracht van het Hunderen ; Hunderen, Fliert, slotgracht, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Landhuis Hunderen ; Hunderen, landhuis, water, sneeuw, slotgracht



Fliertpad Klompenpad in de sneeuw (2021) ; Dennenboom in de sneeuw ; Dijkhofstraat, dennenboom, weg, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Dijkhofstraat ; Dijkhofstraat, dijk, haag, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Sneeuw op de Rijksstraatweg ; Rijksstraatweg, N344, gladheid, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Landgoed Het Schol ; landgoed het schol, water, slotgracht, landgoed, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Aalscholver ; landgoed het schol, Aalscholver, vogel, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Buddezand Urbex ; Buddezand, Urbex, boerderij, schuur, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Buddezand ; Buddezand, bomen, weg, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Berken ; Het nieuwe zand, bomen, sneeuw, meertje, berken



Fliertpad Klompenpad in de sneeuw (2021) ; Langlaufen langs de Fliert ; Fliert, langlaufen, riet, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Riet en water ; Fliert, water, riet, sneeuw



Fliertpad Klompenpad in de sneeuw (2021) ; Hackfort Veenhuis ; Hackfort Veenhuis, landhuis, sneeuw, water



Fliertpad Klompenpad in de sneeuw (2021) ; Hackfort Veenhuis ; Hackfort Veenhuis, hoogwater, water, sneeuw, ijs

Dit bericht is geschreven door: Dion

Tags: , , , , , ,

Gecategoriseerd in:

31 januari 2021 • januari 31, 2021 at 12:00 pm Qdraw

Kopermolenpad (2021)

Ten noorden van Apeldoorn liggen de buurtschappen Wenum en Wiesel. De twee buurtschappen worden gescheiden door de Zwolseweg die van Apeldoorn naar Vaassen loopt. Het kopermolen pad loopt door dit gebied en heeft een afstand van 13 kilometer. Er is ook een mogelijkheid om de route in te korten tot 5 of 10 kilometer. Een klompenpad is een uitgezette wandeling in de provincie Gelderland of Utrecht. De routes lopen binnendoor ook al ken je de omgeving vrij goed, je ziet het toch van een ander perspectief. Wandelaars zijn te gast bij de eigenaren van de landgoederen, weilanden en natuurterreinen waar het Klompenpad doorheen loopt.

Wenumse Watermolen

De wandeling begint bij de Wenumse Watermolen. Dit is een historische watermolen die voor het eerst in 1313 vermeld staat in teksten. Deze molen wordt ook wel de kopermolen genoemd. De wijer waar je tijdens het eerste stuk van de wandeling heenloopt is speciaal aangelegd in die tijd voor de molen. Dit meertje zorgt ervoor dat de molen genoeg water heeft. Zo wandel je achter de wijer langs door de velden en langs een bosrand. Over de Zwolseweg kom je bij het restaurant Gewoon Gastvrij uit, dit is de alternatieve startplaats voor de route.

Wiesel

Wiesel begint aan de overkant van de Zwolseweg. Zo volg je nog een kort stuk langs de weg tussen de bomen een groot weiland. Het buurtschap ligt tegen het Kroondomein aan en is omringd door bossen en weides. Bij het lopen van het Kopermolenpad loop je dwars door het dorp. Onderweg kun je genieten van de natuur en de ruimte

De Ploeg

De route gaat verder in de richting van een 19de eeuwse villa. De villa is onderdeel van het Landgoed de Ploeg. De villa is lange tijd bewoond door een adellijke familie en tijdens de tweede wereldoorlog door een echte verzetsheld. Helaas is hij ontdekt en in de hal neergeschoten. Nu zie je niets meer terug van dit verleden.

Zandhegge

De zandhegge en de schaapskooi aan de Greutelseweg laten de overgang van de hoge droge Veluwe en lagere nattere gronden zien. Als we het Kroondomein achter loopt het Kopermolenpad een kort stuk terug over dezelfde route. Gelukkig sla je alweer snel linksaf en kom je weer in een nieuwe omgeving.

Kampenlandschap

‘De wijsßelsche encke’ is een verzameling kleine oude boerderijen met weilanden. Het nieuwe landgoed ligt in een kampenlandschap. Dit zijn kleine akkers omgeven door houtwallen of heggen. De boerenbedrijven voeren een gemengde bedrijfsvoering, een combinatie van akkerbouw en veeteelt. Omdat de grond vaak arm was, brachten de boeren mest en heideplaggen als bemesting op het land.

Terug naar de molen

Langs de weides en akkers leidt de route je terug richting de molen. De route loopt nog verder langs de weides en langs het Apeldoorns kanaal. De conclusie is dat het mooie afwisseling is de tussen de weides en de bosranden. Laat je verrassen door dit bijzondere afwisselende landschap.



Kopermolenpad (2021) ; Wijer ; Watermolen, water, Wenemse watermolen, Wenemse beek, wijer



Kopermolenpad (2021) ; Wieselse Enkweg ; Snottebel, hazelaar, Wieselse Enkweg



Kopermolenpad (2021) ; Paarden ; Paard, Weide, Huisakkers



Kopermolenpad (2021) ; De Ploeg ; Greutelseweg 61, weide, takken, De Ploeg, villa, wit



Kopermolenpad (2021) ; Meibeek ; Meibeek, modder, drassig



Kopermolenpad (2021) ; Reiger ; reiger, veld, lopen, Wieselse Enkweg



Kopermolenpad (2021) ; Zonsondergang Wenemse beek ; Wenemse beek, wijer, zonsondergang, water weerspiegeling



Kopermolenpad (2021) ; Zwanen ; Apeldoorns kanaal, zonsondergang, water, weerspiegeling, zwanen

Dit bericht is geschreven door: Dion

Tags: , , ,

Gecategoriseerd in:

29 januari 2021 • februari 2, 2021 at 12:51 pm Qdraw

Hoe gebruik je templates met Azure Pipelines

Azure Devops is een Microsoft dienst waar mee code projecten beschikbaar kunnen gesteld worden voor anderen. In deze technische blog geef ik een introductie hoe ik templates hergebruik. De Azure Pipelines werken vrijwel met elke programmeertaal of projecttype. Deze tool combineert Continuous Integration (CI) and Continuous Delivery (CD) om continue het project te compileren en testen. Dit is een methode voor het frequent leveren van applicaties naar (eind)klanten waarbij vrijwel alle stappen geautomatiseerd zijn.

Met Azure Pipelines is het gebruikelijk om de build pipelines in yaml te definieren. Dit zijn tekst bestanden waarin alle stappen worden uitgeschreven. Deze yaml bestanden worden ingecheckt in het versie beheer systeem. Het voordeel van deze werkwijze is dat deze per branch verschillend kunnen zijn, zodat je veranderingen niet op een centraal moment moet doorvoeren.

Vooral bij een complexer project is handig om verschillende onderdelen her te gebruiken voor bijvoorbeeld verschillende onderdelen. In het onderstaande project zijn een aantal onderdelen. Het is namelijk niet altijd nodig dat alles wordt gebouwd, vooral als je er geen veranderingen in heb doorgevoerd.

Een belangrijk voordeel is om het op te splitsen is dat je verschillende templates kunt hergebruiken, dit voorkomt dubbele code en de naam van de bestanden geven al een overzicht van de taken die hierin worden uitgevoerd.

In het project dat ik hier als voorbeeld gebruik hou ik de volgende verdeling aan:

1. Server. De backend van de website, in ons geval is dat is het Sitecore platform
2. Client. Losse front-end frameworks die los staan van de backend.
3. Services. Losse Windows services, die achtergrond taken uitvoeren.
4. Develop CI. Dat is een combinatie van alle bovenstaande pipelines

See English version of this article on Medium

Hieronder een schermafbeelding van hoe de pipeline inrichting eruit ziet.



Een introductie van Azure Pipelines en het hergebruik van templates ; Pipeline screen Azure Devops ; azure, devops, vsts, pipelines, build

Develop CI

Ik begin hier bij de Develop CI omdat deze de verschillende onderdelen allemaal bevat. In Azure Devops klik in het pipeline venster op ‘New pipeline’. Vervolgens selecteer ik de locatie van de repository. Dit kan zowel in Azure Devops als op Github zijn. Dan worden er een aantal opties voorgesteld. Ik begin hier met de starter pipeline en kies een locatie. Voor nu ga ik voor de Develop CI uit startpunt: /azure-pipeline/develop-ci.yml Wanneer je op ‘Save and Run’ klikt dan wordt deze ingecheckt. Vervolgens wordt de pipeline uitgevoerd.



Een introductie van Azure Pipelines en het hergebruik van templates ; Review your pipeline Azure Devops ; azure, devops, vsts, pipelines, build, yaml, starter kit

Parallel lopende machines met Stages

In het (bovenstaande) starter voorbeeld wordt maar 1 machine tegelijk gebruikt. Voor een groter project is het handiger als onderdelen parallel lopen. Hier zijn wel kosten aan verbonden. Als je pipelines afgeschermd zijn en je gebruikt de gratis variant dan heb je 1 machine per organisatie beschikbaar met een maximum van 1800 minuten per maand. Dit kan veranderen maar dit is de huidige situatie van januari 2021.

De stages in de yaml pipeline zijn bijwijze van spreken de verschillende boeken en jobs de hoofdstukken. De jobs worden op verschillende machines uitgevoerd. De laatste stap ‘Merge’ wacht voordat de Client en Server stages zijn afgerond.

Hieronder de yaml pipeline voor /azure-pipeline/develop-ci.yml


trigger: none

pr:
- development

variables:
  buildPlatform: "Any CPU"
  buildConfiguration: "Release"
  webroot: "$(build.artifactstagingdirectory)/wwwroot"
  serverPool: "windows-latest"
  clientPool: "ubuntu-20.04"
  serverSitecoreArtifact: "server_sitecore"
  serverUnicornDataArtifact: "server_unicorn_sitecore_data"
  serverConfigCollectionArtifact: "server_config_collection"
  clientArtifact: "client"
  mergeArtifact: "merge"
  npm_config_cache: $(Pipeline.Workspace)/.npm

stages:
  - stage: Server
    dependsOn: []
    jobs:
      - template: /azure-pipeline/jobs/server_sitecore.yml
        parameters:
          pool: "$(serverPool)"
          artifact: "$(serverSitecoreArtifact)"

      - template: /azure-pipeline/jobs/server_config_collection.yml
        parameters:
          pool: "$(serverPool)"
          artifact: "$(serverConfigCollectionArtifact)"
          serverUnicornDataArtifact: "$(serverUnicornDataArtifact)"

  - stage: Client
    dependsOn: []
    jobs:
      - template: /azure-pipeline/jobs/client.yml
        parameters:
          pool: "$(clientPool)"
          artifact: "$(clientArtifact)"

  - stage: Services
    dependsOn: []
    jobs:
      - template: /azure-pipeline/jobs/services.yml
        parameters:
          pool: "$(serverPool)"
          solutions:
            - key: service1
              value: "/src/service1.csproj" 

  - stage: Merge
    dependsOn:
      - Server
      - Client
    jobs:
      - template: /azure-pipeline/jobs/merge.yml
        parameters:
          pool: "$(serverPool)"
          artifact: "$(collectionArtifact)"
          serverSitecoreArtifact: "$(serverSitecoreArtifact)"
	   clientArtifact: "$(clientArtifact)"
          mergeArtifact: "$(mergeArtifact)"

Loop door een lijst om verschillende services te bouwen

Wanneer je verder inzoomt op de Services taak. Deze staat hieronder uitgeschreven. De services yaml wordt als template aangeroepen in de ‘Develop CI’ pipeline onder het kopje templates. De uitkomst is dat deze job meerdere artifacts maakt. Een artifact is de uitkomst van een build taak. Dit kan een mapje met dll’s zijn of een mapje met css en javascript.

In de ‘Develop CI’ yaml defineer ik de parameters. In de services yaml staan ook parameters, maar deze worden overschreven. Deze staan er alleen maar voor het geval de parameters niet wordt meegegeven.

Hieronder de yaml pipeline voor /azure-pipeline/jobs/services.yml


parameters:
  pool:
    vmImage: windows-2019
  nuGetVersion: "5.2.0"
  solutionDir: '$(Build.SourcesDirectory)/src/'
  slnFile: '$(Build.SourcesDirectory)/src/Project.sln'
  job: ServicesRabbit
  solutions: 
    - key: service1
      value: "/src/service1.csproj" 
  BuildArguments: "/p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem"

jobs:
  - job: ${{ parameters.job }}
    displayName: "Services "
    workspace:
      clean: all
    pool:
      vmImage: ${{ parameters.pool }}
      demands:
        - msbuild
    variables:
      outputPath: '$(build.artifactstagingdirectory)\is_over_written_default'
    steps:
      - checkout: self
        clean: true
        fetchDepth: 1

      - template: /azure-pipeline/steps/server_net_restore.yml
        parameters:
          solution: ${{ parameters.slnFile }}

      - ${{ each item in parameters.solutions }}:

        - task: PowerShell@2
          enabled: true
          displayName: "[net] update output path"
          inputs:
            targetType: 'inline'
            script: |
              $updateOutputPath = "$(build.artifactstagingdirectory)/${{ item.key }}"
              Write-Output "##vso[task.setvariable variable=outputPath]$updateOutputPath"

        - task: VSBuild@1
          displayName: "[net] Build ${{ item.key }}"
          inputs:
            solution: "$(Build.SourcesDirectory)${{ item.value }}"
            vsVersion: "16.0"
            msbuildArgs: '${{ parameters.BuildArguments }} /p:SolutionDir="${{ parameters.solutionDir }}"'
            platform: "$(buildPlatform)"
            configuration: "$(buildConfiguration)"
            maximumCpuCount: true

        - task: PublishPipelineArtifact@1
          enabled: true
          displayName: "[net] Publish Project ${{ item.key }}"
          inputs:
            artifactName: ${{ item.key }}
            targetPath: $(build.artifactstagingdirectory)/${{ item.key }}
            publishLocation: "pipeline"

Losse stappen binnen de jobs

Om onderdelen her te gebruiken binnen de verschillende jobs, splits je de stappen uit. Dit is bijvoorbeeld handig voor het ophalen van de externe software bibliotheken. Deze stap wordt op meerdere plekken gebruikt. Om dubbele code te voorkomen gebruik deze stap als template.

In het onderstaande voorbeeld restore ik de nuget packages van de solution. Voor dit .NET Framework project wordt de packages.config style gebruikt. In de eerste taak wordt gezocht naar alle ‘packages.config’ bestanden in het project. Hier wordt een hash van gemaakt zodat als er iets in één van deze bestanden iets veranderd er geen gebruik wordt gemaakt van de oude cache map. Als de config bestanden niet veranderen dan blijft de key het zelfde. In Azure Devops is de cache key scoped tot de pipeline en als deze niet binnen 7 dagen wordt gebruikt dan wordt de inhoud verwijderd.

De inhoud van: /azure-pipeline/steps/server_net_restore.yml

parameters:
  verbose: false
  nuGetVersion: "5.2.0"
  solution: '$(Build.SourcesDirectory)\src\Project.sln’

steps:

  - task: Cache@2
    displayName: "[net] Cache NuGet packages"
    inputs:
      key: 'nuget | "$(Agent.OS)" | **/packages.config,!**/bin/**'
      restoreKeys: |
        nuget | "$(Agent.OS)"
      path: '$(Build.SourcesDirectory)/src/packages'

  - task: NuGetToolInstaller@1
    displayName: "[net] Use NuGet ${{ parameters.nuGetVersion }}"
    inputs:
      versionSpec: ${{ parameters.nuGetVersion }}
      
  - task: NuGetCommand@2
    displayName: "[net] NuGet Restore"
    inputs:
      restoreSolution: "${{ parameters.solution }}"
      feedsToUse: config

Merge job

Als laatste stap in het build proces is het combineren van de artifacts voordat deze naar een omgeving worden gereleased. Het is aan jou of je dit in de build stap doet of dat je dit tijdens de release doet. In het onderstaande voorbeeld is het niet te zien maar in mijn geval waren verschillende front-end frameworks die op verschillende locaties staan dus leek het mij slim om dit al voordat de release start alles al bij elkaar te brengen.

Dit is : /azure-pipeline/jobs/merge.yml

parameters:
  pool: "ubuntu-latest"
  serverSitecoreArtifact: "server_sitecore"
  clientArtifact: "client"
  mergeArtifact: "merge"

jobs:
  - job: Merge
    displayName: Merge website artifacts
    pool:
      vmImage: ${{ parameters.pool }}
    steps:
      - checkout: none

      - task: DownloadPipelineArtifact@2
        displayName: "[$(serverSitecoreArtifact)] DownloadPipelineArtifact"
        inputs:
          artifact: $(serverSitecoreArtifact)
          downloadPath: '$(pipeline.workspace)/$(serverSitecoreArtifact)'

      - task: DownloadPipelineArtifact@2
        displayName: "[$(clientArtifact)] DownloadPipelineArtifact"
        inputs:
          artifact: $(clientArtifact)
          downloadPath: '$(pipeline.workspace)/$(clientArtifact)'

      - task: PowerShell@2
        enabled: true
        displayName: rename $(serverSitecoreArtifact) to $(mergeArtifact)
        inputs:
          targetType: 'inline'
          script: |
            Move-Item -Path $(pipeline.workspace)/$(serverSitecoreArtifact) -Destination $(pipeline.workspace)/$(mergeArtifact)

      - task: PowerShell@2
        enabled: true
        displayName: Merge $(clientArtifact) in $(mergeArtifact) (When /assets/client already exist)
        inputs:
          targetType: 'inline'
          script: |
            Get-ChildItem -Path $(pipeline.workspace)/$(clientArtifact) | Copy-Item -Destination $(pipeline.workspace)/$(mergeArtifact)/assets/client -Recurse -Force

      - task: PublishPipelineArtifact@1
        enabled: true
        displayName: Publish $(mergeArtifact) Artifact
        inputs:
          targetPath: "$(pipeline.workspace)/$(mergeArtifact)"
          artifact: $(mergeArtifact)
          publishLocation: "pipeline"

De conclusie dat het goed mogelijk is om pipelines op te splitsen in losse bestanden waardoor het makkelijker wordt om het overzicht te houden. Op deze manier voorkom je dubbele code en automatiseer je de release van de applicatie.

Deze blog verscheen voor het eerst op qdraw.nl

Dit bericht is geschreven door: Dion

Tags:

Gecategoriseerd in:

28 januari 2021 • maart 29, 2021 at 9:05 am Qdraw

Wandelen Marskramerpad etappe 2 van Oldenzaal naar Borne (2021)

De route komt langs station Oldenzaal en al snel volgt de route over een lange weg de stad uit. De route loopt onder een drukke provinciale weg door (N342) richting recreatiepark het Hulsbeek. Aan het begin staan diverse trimbaan apparatuur waar goed gebruik van gemaakt wordt. Iets verderop staan speeltoestellen waar de kinderen druk in de weer zijn. De route vervolgt om het water van het recreatiepark en loopt door een bos.

Iets voorbij de camping de Paardenbloem beginnen het Twentse coulisselandschap. Met een paar haakse bochten vervolgt de route door een open landschap met boerderijen. Vlak voor Deurningen begint een zandpad en het dorpje kun je al van een afstand al zien. Je wandelt tussen en weilanden en vlak voor Deurningen kom je nog over een vee-rooster. Er staat een bord die de wandelaar waarschuwt voor passerende koeien. “Let op!”, staat eronder, “Er kan nog een koe aankomen”.

Aan de noordkant verlaat je het dorpje Deurningen. Het eerste stuk loopt nog over een asfaltweg door het platte land. Deze weg wordt een zandweg. Vlak voorbij Deurningen begint de Deurningerbeek. Deze beek kronkelt door het landschap. Op het kaartje van Wandelnet staat ook een alternatieve route, voor het geval er te veel modder is. Nu ging het nog net, maar soms is het wel improviseren om er door te komen. Gelukkig heb ik goede wandelschoenen. De route loopt langs het beekje en onderweg kun je genieten van het prachtige landschap.

De conclusie is dat route van Borne naar Oldenzaal een mooie route is door het Oost Twentse land. Zo eindigt de etappe bij Erve Aalderink aan de Veldhuisweg. Vanaf dit punt is het te doen om naar station Borne te wandelen. In totaal is de route 21 km en dat inclusief de 3 kilometer durende aanlooproute van station Borne naar Erve Aalderink.

In de serie van het Marskramerpad gebruik ik de etappe nummers van Wandelnet. Zie de tag: Marskramerpad voor de andere wandelingen uit deze serie

← Vorige etappeVolgende etappe →



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Sint Plechelmusbasiliek (Oldenzaal) ; kerk, Oldenzaal, Sint Plechelmusbasiliek



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Het Hulsbeek ; water, riet, Het Hulsbeek, lensfaire



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Vlak buiten het Het Hulsbeek ; hert, reeen, weide



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Deurningeresweg ; wolken, zandweg, Deurningen, velden



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Deurningeresweg ; Deurningen, weide, veld



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Rode bessen ; rood, bessen, rode, struik



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Vlijertsdijk ; populieren, boom, Vlijertsdijk



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Naast de Deurningerbeek ; water, gras, boom, natte voeten, drassig, Deurningerbeek



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Dit is het pad, dus natte voeten ; water, zandpad, natte voeten, drassig



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Wolken ; water, Deurningerbeek, boom



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Weerspiegeling ; Deurningerbeek, beek, water, Weerspiegeling



Wandelen Marskramerpad Oldenzaal naar Borne (2021) ; Paarden ; paard, paarden, drassig, Borne

Dit bericht is geschreven door: Dion

Tags: , ,

Gecategoriseerd in: