cloud-eng .nl

Hi, I’m Anton Sizikov.

2024

2024/04/01

GitHub Actions: Unified Build Pipeline for Multi-Repo Application

Common Misconceptions about GitHub Actions

The other day, I was working with a customer who was planning a migration from JetBrains TeamCity to GitHub Actions. They expressed a concern that GitHub Actions does not work well in multi-repo setup; they were used to having build pipelines separate from the source code distributed across multiple repositories.

2023

2023/01/23

GitHub Container Registry. Keeping traffic below the spending limit.

GitHub Container Registry is a great service. It’s free for public repositories and it’s integrated with GitHub Actions. Unfortunately, it’s not free for private packages. The free tier allows 1 GB of data transfer per month. What happens when you reach the limit depends on your payment profile. You will either be prevented from downloading your images or you’ll be charged for the consumed traffic.

2023/01/22

Integration tests for .NET CLI tools

I’ve spent Saturday evening working on a small project. I’ve built a .NET clone of tree utitly. You know, the one that renders a nice tree view for a given directory.

2022

2022/11/26

GitHub Environment Protection with Tags

A recent request from a customer caught my attention. They were trying to set up a CD pipeline that should deploy packages to production when there is a new tag pushed to the repository. At the same time, they wanted some control over the process so that not everyone can init a release by pushing a tag to the repository.

2022/08/22

AzureDevOps and hosted agents

TLDR

Today I’m going to talk about self-hosted build agents.

2021

2021/02/03

Configure WSL2 limits on Windows 10

WSL2 on Windows 10 has some issues, but I still prefere it to run my docker containers locally.

2021/01/27

Configure CD for Azure WebApp with Terraform Provider for Octopus Deploy

In this post, I’m going to configure the continuous delivery process for Azure WebApp (Azure Function in this case, but that’s pretty much the same) with Octopus Deploy. To make it a little bit interesting I’m going to use Configuration-as-Code approach with a brand new Octopus provider for Terraform.

2020

2020/10/08

Using GitHub Container Registry with Kubernetes

GitHub Container Registry was introduced on the 1st of September 2020. It’s still in the Beta stage, so it’s rather not recommended to use it in production. However, it offers us free private storage for our Docker images, at least until the end of the Beta period.

2020/09/29

Docker image tests

Today we’re going to set up a CI/CD GitHub Action with a Container Structure Test step which will help us to enforce the certain quality policies for the images which we build and ship.

2020/07/10

Fix console logs for Azure Functions running in a Docker container

Local development of C# Azure Functions on macOS is still a bit painful. Even the simple-ish logging might cause issues. Let’s assume that we have Azure Functions Core Tools installed and we have a basic function app with one TimerTrigger function created.

2020/03/21

Provision your Azure environment with Terraform and Octopus Deploy

My current project has reached the point where we have to manage our infrastructure in a more organized way rather than ad-hoc manual configurations.

2018

2018/01/12

Connecting SQL Operations Studio to SQL Express server in Parallels VM

In this post, I’m going to show how to marry SQL Operations Studio running on macOS with MS SQL Express running on Windows VM in Parallels.

2017

2017/12/23

You are mocking it wrong.

Well, probably you are not, but let me grumble a little bit anyway.

2016

2016/12/24

Investigating unexpected MSBuild behavior

Recently I took latest changes from git, merged dev to my current branch and decided to run few integration tests. You know, just to be sure.

2016/09/24

Write code for the reviewer, not for the compiler

Code

I’ve been doing code reviews on a daily basis for several years for now. This activity is very different from what I do as a developer.

2016/06/12

Dev environment 2016. Windows.

tool

I’ve changed a job last month and had to build up my dev environment from scratch again. While doing that I decided to write down some thoughts about it.

2016/04/15

Thoughts on C# 7 Local Functions

Frankly when I first saw that C# 7 will come with new local functions I thought that that’s just a nice and a compact way of defining local helpers. In fact, it’s much more interesting and useful feature. Today I’m going to talk about it in more details.

2016/04/05

CatLight

It’s hard to imagine modern development without continuous intergation and unit-tests.

2016/04/02

C# 7 features preview

Last week my twitter feed exploded with lots of entries about Microsoft //Build 2016 conference. As it’s one of the most important events for .NET dev community MSFT prepared quite a few awesome announcements for us:

2016/01/10

Fully automated Continuous Integration for your Open Source library for free

open source is commumism This is a long title. Well, the post is going to be long as well.

2015

2015/11/03

How to convince Linus Torvalds to contribute to your project

Look at all those famous people committing to some random developer’s boring repository.

2015/11/01

GitHub Deployment statuses

It’s very important to collect and track as much information as you can about your system. We have logging, monitoring, reports and analytics. All the systems that we build are not just packages, which are deployed to the server/computer or device. Everything starts with Issue Tracking system and through the code goes to production. The code and the process of coding both look like an important part of the system and it makes a lot of sense to collect and store all the data about code.

2015/09/05

Avoid typing user name when committing to GitHub repository

I use different accounts and different computers to work with GitHub repositories, so sometimes I face the situation when I don’t have my SSH key generated for the current environment.

2015/08/16

ReSharper Annotations. Can it be null?

Hi,

ReSharper is doing great job when it comes to semantics of your code and control flow graph analysis. The special edge case I want to talk about is nullness analysis.

2015/08/14

Reactive Extensions. Api client with Cache-Aside & Refresh-Ahead strategy. Part 2.

Hi,

In the previous post I told you how to implement the Reactive Api client with caching. Well, to prove that our code works we might want to have some unit tests.

2015/08/02

AsyncSuffix ReSharper extension

There is a tendency in a .NET world to build asynchronous CPU bounded or IO related API. We also can see that some APIs support both asynchronous and synchronous versions for the backward compatibility reasons.

2015/07/26

Reactive Extensions. Api client with Cache-Aside & Refresh-Ahead strategy. Part 1.

Hi,

Today I want to talk about the development of the api client library. Let’s say it is an imaginary GitHub RESTfull Api that returns user’s rating. To make this routine more interesting we’ll add caching and mix it with Reactive Extensions. In fact the article is a summary of my Windows Phone development experience, and the approach in question was taken in a several applications with different modifications.

2015/07/05

Sharing ReSharper settings and Live Templates

In my previous post I’ve described how to create your own Live Templates for ReSharper. Today I’m going to tell how to share your ReSharper settings and Live Templates with your team.

2015/06/27

Custom live templates for ReSharper

Hi!

As a .NET developer I’m enjoying to use an intelligent plug-in for Visual Studio which is called ReSharper. It saves me time, provides me a static analysis and generates code for me.

2015/06/22

Keeping the repository interface clean

The repository pattern is being blamed quite often. The most popular reason for that is an uncontrolled growth of the interface.

2015/06/21

Hello World

I’m not sure if I can be more hipster, but now I have a blog which is hosted by GitHub pages and served by jekyll. Yeah, I had to install python and ruby to run it.