Michał Lis

yet another technical blog...

Running Jenkins on Kubernetes is relatively straightforward, but maintaining its configuration across deployments can quickly become challenging. Manually configuring plugins, authentication, permissions, credentials, and pipelines through the Jenkins UI makes rebuilding or migrating an instance unnecessarily complicated.

To solve this problem, I implemented a Jenkins Configuration as Code (JCasC) approach, allowing me to deploy a fully configured Jenkins instance on Kubernetes using a custom Docker image, ConfigMaps, Kubernetes Secrets, and Job DSL.

The goal was simple: make Jenkins configuration reproducible, version-controlled, and easy to restore without manual intervention.

Read more...

I like electronic smart home gadgets, but the problem is that popular hardware platforms like Arduino and Raspberry Pi can be relatively expensive. If you want to control all your power outlets via Wi-Fi, for example, the total cost can increase dramatically, as you need a separate device for each outlet you want to control. Fortunately, there are cheaper alternatives, such as NodeMCU.

Read more...

Recently, I took part in a Rust programming course, and one of the tasks we had to do as homework was a “hangman” game. The funny thing is that to create a game with real words, not just “random” interpolated letters, I had to find a library that can take a random word from a dictionary.

Read more...

If you’ve ever worked with a Web Application Firewall (WAF), you probably know how challenging it can be to deploy one in a real-world production environment. This is especially true when running it in blocking mode. Once enabled, a WAF can unexpectedly interfere with legitimate requests, causing certain features of the underlying application to stop working because requests are blocked and users receive 4xx HTTP status codes.

Read more...