Integrate Dynatrace Software Intelligence into your GitHub CI/CD Pipeline

It’s common knowledge today that seamless monitoring and observability of all your production software stacks is key for successful service delivery. Along with a tight integration into your CI/CD pipeline, service and software monitoring offers a lot of insights on what is going wrong during your build, test and release workflows and how to quickly remediate outages.

As a Cloud Native SaaS platform, GitHub represents the home of most of the popular Open Source projects worldwide. It offers all the important features that are necessary to support the entire software lifecycle of your project.

GitHub Actions is one of those priceless features, as it allows you to choose from more than 6.000 individual CI/CD steps that allow you to automatically build, test and release your projects on virtual machines.

Dynatrace on the other hand represents the leading software observability and intelligence platform according to analysts, such as Gartner. A Dynatrace monitoring environment allows you to closely observe the production behaviour of your software in realtime and to get notified about abnormal incidences that could lead to outages.

That said, its pretty obvious that a tight connection between your GitHub CI/CD pipeline with your Dynatrace monitoring environment offers a lot of benefits.

Within my last project I did implement a purpose built Dynatrace GitHub action that allows you to directly push information, such as events and metrics into your monitoring environment.

Use-cases here are to inform your DevOps team about broken builds of your software or to collect statistics data about your build workflows, such as the number of code commits on your services or the number of failed builds versus successful builds.

You even can use Dynatrace to define dedicated SLOs (Service Level Objectives) for your CI/CD pipeline by using those metrics as Service Level Indicators (SLIs).

See below a typical GitHub build workflow that uses the Dynatrace GitHub Action to push a metric into a monitoring environment and that informs about broken builds as well as on successful builds. Mind that I am sending a total count metric as well as both failed count and success count, which I will use later as SLI metric in my Dynatrace CI/CD Pipeline SLO.

See my GitHub workflow below:

name: 'build-test'
on: # rebuild any PRs and main branch changes
  pull_request:
  push:
    branches:
      - main
      - 'releases/*'

jobs:
  build: # make sure build/ci work properly
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: |
          npm install
      - run: |
          npm run all

  test: # clean machine without building
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Inform Dynatrace about a successful build (
        if: ${{ success() }}
        uses: wolfgangB33r/dynatrace-action@v4
        with:
          url: '${{ secrets.DT_URL }}'
          token: '${{ secrets.DT_TOKEN }}'
          metrics: |
            - metric: "github.build.total"
              value: "1.0"
              dimensions:
                project: "${{ github.repository }}"
                branch: "${{ github.ref }}"
                event: "${{ github.event_name }}"
                owner: wolfgang
            - metric: "github.build.success"
              value: "1.0"
              dimensions:
                project: "${{ github.repository }}"
                branch: "${{ github.ref }}"
                event: "${{ github.event_name }}"
                owner: wolfgang
          events: |
            - title: "Successful Build"
              type: CUSTOM_INFO    
              description: "GitHub project ${{ github.repository }} was successfully built"
              source: GitHub
              entities:
                - MOBILE_APPLICATION-C061BED4799B41C5
              dimensions:
                project: "${{ github.repository }}"
                branch: "${{ github.ref }}"
                event: "${{ github.event_name }}"
                owner: wolfgang
      - name: Inform Dynatrace about a failed build 
        if: ${{ failure() }}
        uses: wolfgangB33r/dynatrace-action@v4
        with:
          url: '${{ secrets.DT_URL }}'
          token: '${{ secrets.DT_TOKEN }}'
          metrics: |
            - metric: "github.build.total"
              value: "1.0"
              dimensions:
                project: "${{ github.repository }}"
                branch: "${{ github.ref }}"
                event: "${{ github.event_name }}"
                owner: wolfgang
            - metric: "github.build.fails"
              value: "1.0"
              dimensions:
                project: "${{ github.repository }}"
                branch: "${{ github.ref }}"
                event: "${{ github.event_name }}"
                owner: wolfgang
          events: |
            - title: "Failed build"
              type: CUSTOM_INFO    
              description: "GitHub project ${{ github.repository }} build failed!"
              source: GitHub
              entities:
                - MOBILE_APPLICATION-C061BED4799B41C5
              dimensions:
                project: "${{ github.repository }}"
                branch: "${{ github.ref }}"
                event: "${{ github.event_name }}"
                owner: wolfgang

The conditional Dynatrace step within the GitHub workflow above is then executed with every commit of your repository, as it is shown below:

Conditional Dynatrace GitHub Action Steps, either on success or on failure

After a successful run of your workflow, you will see both, the event as well as the metric appear in your Dynatrace environment, as it is shown below:

Dynatrace event sent from your GitHub CI/CD workflow
GitHub CI/CD pipeline metrics

Define a Service-Level-Objective (SLO) for your GitHub CI/CD Pipeline

Now that Dynatrace is informed about each build success and fail, we can easily define a SLO for our CI/CD pipeline to continuously observe the quality of our build.

See below the selection of the total count as well as the success count metric as the SLI metric for our SLO within Dynatrace:

GitHub CI/CD pipeline SLO defined in Dynatrace

Now we see the current SLO state within the list of Dynatrace SLOs and we can put our SLO state onto any of your Dynatrace dashboards:

Your new GitHub build workflow SLO

Summary

I came to love the simplicity and efficiency of GitHub actions within the last weeks. They helped me a lot to fully automate my own GitHub projects CI/CD pipeline, to save time during releases and to generally raise the quality of my projects.

The logical next step for me was to tightly integrate the GitHub workflow into my Dynatrace monitoring environment and to define SLOs for measuring the quality of my builds in realtime.

By implementing and publishing a Dynatrace GitHub action, a tight integration between your GitHub workflows is now possible for everybody with a simple click into the Github Marketplace.

New TabShop Help Page

Within the last weeks I did prepare a completely new help and tutorial page for all our TabShop users, which can be found here:

https://tabshop.smartlab.at/help.html

The help page is focused on how to solve typical Point of Sale (POS) related use-cases within TabShop. Examples are how to define your own product stock lists, how to checkout and print an invoice and how to change the appearance of your TabShop Android Point of Sale system.

The help page will grow in terms of content over the next couple of weeks and cover more and more use-cases for mobile cashiers.

TabShop Point of Sale (POS) Celebrating 500K Downloads

TabShop began in 2012, when it was first published in Google Play store. Back then, I could not imagine how popular this Android application would become.

Now, 8 years later TabShop POS will reach 500K overall downloads, with hundreds of shops using TabShop day by day worldwide.

The app came a long way, adding feature after feature and battling with competitors such as Square POS for place one in Android Play Store year over year.

Recently, TabShop returned to its original single app strategy and removed the PRO version from Pay Store. Instead in-app upgrade to PRO mode is offered directly within the application. This allows users a more seamless conversion between free and Pro version without switching the app.

The free Android POS app TabShop still is offered without any annoying advertisements in free forever mode.

To celebrate the 500.000 TabShop downloads, we created a new intro video.

TabShop Software for your Bar or Restaurant

Bar pos cashier TabShop

Today, the brand new TabShop version 132 was released! It comes with some improvements such as sub cent item prices, improved image invoices and a lot of smaller bug fixes. Don’t hesitate and update now to the updated TabShop retail and restaurant cashier app for Android. The free version comes with a whole lot of features and free of ads. TabShop helps you to organize your own personal business. No matter if you run a bar or a restaurant, TabShop offers all the features you need to manage your stock, invoices and accounts.

Posted in app

TabShop Release 127 adds Customer Account Feature

TabShop free Android Point of Sale

The brand new release 127 of TabShop, the popular free Android Point of Sale system, now adds some new features around the topic of managing customer accounts and customer balances. TabShop now directly supports typical hotel room and checkout scenarios in which customers are consuming services and products during their stay directly onto their room account and checkout the entire invoice when they leave. Another now supported scenario is to buy a value balance for a customer account (e.g. school kids, sports club members) and further on checkout invoices based on that positive value balance without involving any money. With version 127 the popular TabShop cashier and POS system further enhances its already huge list of features by adding customer account management. Don’t hesitate, TabShop is free and without ads, so try it out now.

My new o’Reilly eBook on Mobile App Analytics

Mobile App Analytics o'Reilly by Wolfgang BeerThanks to Dynatrace i got the chance to sum up my experiences of analyzing and optimizing mobile apps within a brand new o’Reilly eBook ‘Mobile App Analytics’. Mobile app user experience plays the most important role for app publishers in global marketplaces, as a negative experience quickly destroys your brands reputation and decreases your business revenue. Successful app publishers measure mobile app performance, monitoring crash reports and observing your users behavior and react quickly on issues before the users react with bad user reviews.

If you are quick you can grab a free copy of my ebook here.

 

 

Besides if you need a quick start tutorial on how to train your first neural network, grab my eBook at Amazon:

Accept Stripe Credit Card Payments with TabShop Point of Sale

Whenever you manage a mobile kiosk, a ticketing counter or simply organizing a trade faire booth you have to think about how to conveniently charge credit cards and to print invoices for your customers. TabShop point of sale is the right solution for exactly that purpose. By using Stripe payment processing TabShop pos offers all that functionality directly on your Android phone. TabShop not only lets you check out any credit card payment by using Stripe but moreover represents your entire shop management system right on your own Android mobile phone. By using a Bluetooth thermo printer you can directly print invoices for your customers after you charged your customers credit cards by using global Stripe card processing. By integrating multiple payment and credit processing platforms, TabShop is one of the most flexible mobile point of sale systems right on your Android phone or tablet. And the best thing is, Stripe credit card processing is available also within the free TabShop app version.

TabShop using the Stripe Credit card processing integration

Synchronize TabShop Point of Sale with Google Spreadsheets

Organizing stock lists and collecting invoices within your shops is a cumbersome activity. By using Google spreadsheets TabShop simplifies that task for its users. Just create a spreadsheet online, enter your stock list, taxes and discounts and synchronize this information with your shops. TabShop Point of Sale devices automatically upload invoices into your Google spreadsheet after each checkout process. Organizing and reviewing all your stores information in realtime through a Google spreadsheet. Connect multiple TabShop POS devices and multiple shops by using your Google spreadsheets.

Quickly print your product QR price labels with TabShop Point of Sale

Tagging your products with the right, scannable price labels can be a cumbersome task. So TabShop allows you to easily generate all your product tags along with its scannable QR barcode code. The product price label shows the name of the product, its category and of course its price. Additionally the product price tag does show a QR barcode and its product id in case you have to type it in for the one or other reason. So TabShop offers a real simple method for generating and printing all your products price tags.

Keep track of decimal stock in TabShop Point of Sale

Within TabShop you can set and add any number of decimal stock and even define your products as backorder stock. In case that you sell and manage decimal amounts of stock TabShop shop management allows you to type a decimal number by using the number field within cashier screen and then press the specific product accordingly. TabShop stock management then correctly subtracts that amount of stock from your inventory.