Cleaning up TeamCity build confi­gu­ra­tions

In this blog post I will describe how I went from roughly 150 build configuration, which were copy-pasted from each other, to all of them using a single template and only specifying the differences in each build configuration. TeamCity Kotlin DSL feature was used in order to simplify this normally unbelievably tedious task. The problem We run contract tests on TeamCity. With a big number of microservices, we [...]

2024-09-03T14:51:06+00:0017. April 2023|Tech|

Repro­du­cible Assets for Cloud­For­mation Stacks

When CloudFormation is used to create the infrastructure or application it is important to take a look at the artifacts that are generated and deployed. When it comes to artifacts and especially Java artifacts (jar or zip files) there are some important requirements that have to be followed. Otherwise, the deployment might take longer than required, or in cases where the CDK Pipeline is used to deploy the application the pipeline can go into an [...]

2024-09-03T14:51:59+00:003. April 2023|Tech|

Github reusable workflows and how to verify them

In december 2022 GitHub added the ability to share workflows between private repositories, opening the doors for Enterprises to make use of this feature. In this post I will describe how I implemented this in my APISMART Team and how I developed a system to verify changes to the reusable workflow. Basic knowledge of GitHub Actions is assumed. A working example can be found here: reusable-workflows-with-ci and reusable-workflows-sample-project Why reusable workflows I’ll [...]

2024-09-03T14:52:26+00:0023. Januar 2023|Tech|

Github actions and output variables

Output variables can be powerful and frustrating at the same time. This simple how to, can save you ages of try and error. What are output variables Output variables are like return values of a step which can be used in all down streams like jobs, reusable workflows and more. See GitHub Workflow Job Output Example Accessing these outputs can be pretty challenging as it depends on the context in [...]

2024-09-03T14:53:32+00:009. September 2022|Tech|

Our Way to an Internal Developer Platform

Europace started more than 20 years ago and is Germany’s biggest platform for real estate financing, housing-saving and credits with currently more than 35k of such transactions per month. With the success and therefore constantly adding new products and features using new technologies, Europace built up some technical debt as well as a zoo of technologies over the years. Running Europace on AWS Our way to an internal [...]

2024-09-03T14:54:34+00:0022. Juli 2022|Tech|

Spring Data Redis — Simple, yet Challenging

We recently migrated our session management from MongoDB to Redis. The migration itself was motivated by our experience with MongoDB, which didn’t handle high frequent updates and even more frequent reads particularly well. Redis on the other hand is known as a proven storage to handle exactly that use case. Database migrations aren’t always easy, because we need to learn new patterns, best practices, and quirks of another service. [...]

2024-09-02T13:59:28+00:003. Dezember 2021|Tech|

Inner­Source: Projekt Setup Basics

Wir haben vor einigen Jahren bei Europace bewusst begonnen, InnerSource best practices einzusetzen. Ziel dabei war es, team-übergreifende Zusammenarbeit zu vereinfachen, Silos abzubauen und trotz Abhängigkeiten zwischen Teams Entwicklung möglichst nicht blockierend zu gestalten. Vor allem in den vergangenen Monaten haben wir Erfahrungen sammeln können mit umfassenderem Einsatz von Lösungen aus dem InnerSource Bereich für vorhandene Herausforderungen. In diesem Blog Post wollen wir uns auf Learnings konzentrieren, die wir in diesem Prozess gewonnen haben: Wie starte ich ein neues [...]

2024-09-03T19:47:52+00:0015. Februar 2021|Tech|

Working with Gradle and GitHub Packages

Europace and other parts of our IT use a toolchain with GitHub, Jetbrains TeamCity, and Sonatype Nexus to implement CI/CD Pipelines. Developers have to be in the private network or connected to the VPN, if they want to access Maven and Gradle artifacts from our Nexus repository. Especially in times of COVID-19 more developers work from home, where connecting to the VPN becomes a necessity… does it? With our efforts to [...]

2024-09-02T14:05:20+00:0028. September 2020|Tech|

Mock Depen­dencies in Unit-Tests mit TypeScript

In unserer Angular Anwendung KreditSmart nutzen wir zum Testen Karma, Jasmine angereichert mit Chai und Sinon. In vielen Komponenten- und Service-Tests versuchen wir die Abhängigkeiten zu mocken bzw. zu stubben. Das kann schon mal einige extra Zeilen Quellcode mit sich bringen. Beim Zugriff auf die Stubs möchten wir zudem gerne Codevervollständigung seitens der IDE oder des Editors beim Zugriff und Typsicherheit haben. Der Stub soll die gleichen Methoden wie der gemockte Service haben. Als Rückgabewert sollen die Methoden jedoch Sinon-Stubs liefern. [...]

2024-09-03T20:09:55+00:0016. Juni 2020|Tech|

Inner­Source Patterns

Some time ago, we published our experience running InnerSource projects in a series in this blog. We decided to bring the gist of that content back to the official collection of official patterns of the InnerSource Commons. With help from the upstream community the content was greatly improved: Provide standard base documentation … talking about which documentation in addition to the technical information should be present in InnerSource projects. Issue tracker use cases … talking about use cases for issue trackers, not only in InnerSource projects but [...]

2024-09-03T20:12:47+00:004. Juni 2020|Tech|

Inner­Source Commons Summit

It was right at the beginning of the Corona crisis in Europe - a day after Easter to be precise - that the InnerSource Summit EU was scheduled to take place in Madrid. Pretty early on we realized that it was unlikely that the summit would be like any other summit. So a decision as made, to move it to a virtual event. Long story very short: The event was very well attended, talks were [...]

2024-09-04T07:34:08+00:0015. Mai 2020|Tech|

Inner­Source: Colla­bo­ration Tooling

So far we have covered collaboration through GitHub, mostly in issues and pull requests. In this article we will dig deeper into the other communication and collaboration tools that can be useful - and how to link them together. (German version below) Using Slack In our InnerSource initiative we’ve setup our channels in a way based on inspiration from the mailing list setup at The Apache Software Foundation: [...]

2024-09-04T07:32:21+00:0028. Februar 2020|Tech|

I love Free Software Day

Simply saying thank you - something we often forget in the day to day flood of tasks, accountabilities and responsibilities. Today the Free Software Foundation Europe is celebrating the “I love free software day” to express gratitude to those who are underpinning a lot of today’s businesses by developing Free and Open Source Software. (German version below) Much as last year we would like to join the celebration and say thank [...]

2024-09-03T16:24:26+00:0014. Februar 2020|Tech|

Using templates to drive standards

Imagine the following situation: Some team has found a best practice for solving an issue - e.g. they’ve identified that in their projects they are using the same setup over and over again. (German version below) It would make sense to not only share that best practice with others but establish a standardized way of working around it. But what if others aren’t yet encountering this issue? How should they judge whether the [...]

2024-05-23T09:49:56+00:0010. Februar 2020|Tech|

Europace’s journey to Inner­Source

Europace is a network-centric organization within a network of organizations (Hypoport). It uses the self-organization framework Holacracy as its operating system—loosely coupled, autonomous teams are working together for a common purpose. But with autonomy also comes a trend towards self-sufficiency. In the years after starting with self-organization we experienced a lot of “reinventing the wheel” instead of company-wide collaboration. In order to find a way out of this dilemma we looked [...]

2024-05-23T10:16:54+00:0031. Januar 2020|Tech|

Lazy consensus vs explicit voting

Imagine the following situation: You would like to drive a change in the gh#innersource repository. You already have commit access. Typically you’d make the change, post it as a pull request and wait until someone has time to review and approve. (German version below) There is another way that we typically choose when the change is relatively uncontroversial: In the original pull request, indicate that the model for the change is a [...]

2024-05-23T12:41:12+00:0020. Januar 2020|Tech|

Issue Use Cases

… for asking questions In addition to tracking decisions in the making issues are being used for those who would like to ask InnerSource related questions. Asking them in the issue tracker instead of in 1-on-1 settings has three advantages: (German version below) There’s more than one knowledgeable individual that can answer the question. Others who may have the same question later on (or even now, in case they are [...]

2024-05-27T12:26:17+00:007. Januar 2020|Tech|

Using issues for brain­storming

Imagine the following situation: You’ve seen a certain discussion pop up multiple times and would like to draw the lessons learned together - but in a way that leaves space for others to provide their knowledge and experience. One setup that turned out to be effective for this type of situation in gh#innersource was the following workflow: Open an issue, post the problem statement at the very top and [...]

2024-09-05T07:40:32+00:0018. Dezember 2019|Tech|

Meetup organi­sation

For the introduction of InnerSource at Europace we relied on gathering a group of people interested in the topic. While most of the discussion is designed to be remote-first with all issues being discussed in an asynchronous way we also set up an internal monthly InnerSource meetup. That meeting is open to each and everyone for attending. Meeting dates, location, and agenda is posted in advance: In a GitHub [...]

2024-09-04T08:28:33+00:0012. Dezember 2019|Tech|

Inner­Source: Adding base documen­tation

Starting the InnerSource initiative we needed a place to collect documentation as well as a place for operational coordination. We decided to dogfood suggested tooling and created a GitHub repository. Going forward, I will refer to it as gh#innersource here. Before publicly discussing gh#innersource as a project, a certain amount of base documentation was being created.  As a baseline this meant creating an initial README.md. This document serves as [...]

2024-09-04T08:25:47+00:006. Dezember 2019|Tech|
Nach oben