Tuesday 30 June 2020

Mockers ride again

I'm tinkering with Java at the moment, using Microsoft Visual Studio Code ( my "new" fave IDE-of-choice ), and am looking at mocking specific HTTP services and calls .....

To that end ....





Monday 29 June 2020

Apple iMovie and the Ken Burns effect

PSA: If using iMovie to create ... movies from screen recordings taken using [cmd][shift][5] be aware of the auto-cropping, including the so-called Ken Burns effect

https://support.apple.com/kb/PH22923?locale=en_US&viewlocale=en_US

I ended up recording clips several times before I remembered that I'd seen, and solved, this before ....

I wanted a full-screen recording of Terminal ( because .... I live there ) and iMovie was trying to be extra-helpful ......

Tuesday 16 June 2020

Building Kubernetes - Getting it to Go right ....

I'm currently building Kubernetes from source, on an Ubuntu box.

Having cloned the repo: -

mkdir -p $(go env GOPATH)/src/k8s.io
cd $(go env GOPATH)/src/k8s.io
git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes


I was looking at a specific version of K8s - v1.16.2 : -

git checkout tags/v1.16.2

but, when I started to build any of the K8s binaries e.g. kubectl I saw this: -

make kubectl

cannot find module providing package k8s.io/kubernetes: unrecognized import path "k8s.io": parse https://k8s.io/?go-get=1: no go-import meta tags (meta tag k8s.io/ did not match import path k8s.io)
+++ [0616 01:06:04] Building go targets for linux/amd64:
    ./vendor/k8s.io/code-generator/cmd/deepcopy-gen
go: finding module for package k8s.io/kubernetes/vendor/k8s.io/code-generator/cmd/deepcopy-gen
can't load package: package k8s.io/kubernetes/vendor/k8s.io/code-generator/cmd/deepcopy-gen: no matching versions for query "latest"
!!! [0616 01:06:07] Call tree:
!!! [0616 01:06:07]  1: /root/go/src/k8s.io/kubernetes/hack/lib/golang.sh:714 kube::golang::build_some_binaries(...)
!!! [0616 01:06:07]  2: /root/go/src/k8s.io/kubernetes/hack/lib/golang.sh:853 kube::golang::build_binaries_for_platform(...)
!!! [0616 01:06:07]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0616 01:06:07] Call tree:
!!! [0616 01:06:07]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0616 01:06:07] Call tree:
!!! [0616 01:06:07]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
Makefile.generated_files:200: recipe for target '_output/bin/deepcopy-gen' failed
make[1]: *** [_output/bin/deepcopy-gen] Error 1
Makefile:559: recipe for target 'generated_files' failed
make: *** [generated_files] Error 2


This led me here: -

can't load package: package k8s.io/kubernetes: cannot find module providing package k8s.io/kubernetes #84224

and here: -

switch build scripts to use go modules, stop requiring $GOPATH #82531

and made me realise that I had a disparity between the version of Go I was using: -

go version

go version go1.14.3 linux/amd64

and the version of K8s itself.

In other words, I was trying to build K8s 1.16.2 using Go 1.14.3

Thankfully, the K8s repo has the answer: -



Once I realised this, and switched back to the main branch of K8s, which is the latest 

Cloning into 'kubernetes'...
remote: Enumerating objects: 229, done.
remote: Counting objects: 100% (229/229), done.
remote: Compressing objects: 100% (136/136), done.
remote: Total 1118551 (delta 115), reused 95 (delta 93), pack-reused 1118322
Receiving objects: 100% (1118551/1118551), 688.00 MiB | 25.10 MiB/s, done.
Resolving deltas: 100% (800101/800101), done.
Updating files: 100% (22439/22439), done.


cd kubernetes/
git branch

* master

all was good

make kubectl

+++ [0616 01:15:05] Building go targets for linux/amd64:
    ./vendor/k8s.io/code-generator/cmd/prerelease-lifecycle-gen
+++ [0616 01:15:15] Building go targets for linux/amd64:
    ./vendor/k8s.io/code-generator/cmd/deepcopy-gen
+++ [0616 01:15:31] Building go targets for linux/amd64:
    ./vendor/k8s.io/code-generator/cmd/defaulter-gen
+++ [0616 01:15:45] Building go targets for linux/amd64:
    ./vendor/k8s.io/code-generator/cmd/conversion-gen
+++ [0616 01:16:08] Building go targets for linux/amd64:
    ./vendor/k8s.io/kube-openapi/cmd/openapi-gen
+++ [0616 01:16:27] Building go targets for linux/amd64:
    ./vendor/github.com/go-bindata/go-bindata/go-bindata
+++ [0616 01:16:30] Building go targets for linux/amd64:
    cmd/kubectl


Friday 5 June 2020

Demo: Z DevOps using Git and Jenkins pipeline - 17 June 2020

The objective of this session is to demonstrate  the power of collaborative development and delivery enabled by the IBM Z for DevOps  solutions. Application teams can learn how they can  modernize their application portfolio using  modern technology and tools. We will focus on code and build, automate unit testing and deploy. Production teams can learn how they can extend and automate their existing build and deployment solutions for enterprise applications.
 
This session will demonstrate how IBM Z DevOps and open source tools like Git and Jenkins, progress the continuous integration, continuous testing and continuous delivery in the z/OS operating environment.
 
Our scenario consists of a "broken" COBOL/CICS/DB2 application. The developer will use IBM DevOps tools to locate and identify the faulty code, make the appropriate fixes and compile/link/bind using a new build automation tool (DBB) that integrates with Git and Jenkins pipeline on z/OS. Once the code is fixed, the developer will push the changes to a Git repository.

In order to demonstrate continuous delivery capabilities, this session will showcase a Jenkins pipeline integrated with IBM tools for the build process, unit testing(using the new zUnit functionality), and deployment of code to a CICS environment (using UrbanCode Deploy).
While our scenario uses a COBOL/CICS/DB2 program as an example, the process is similar to other environments or languages (such as Batch, IMS, or PL/1

Something to read/do later - learn to use the iter8 toolchain with Kubernetes

A colleague drew my attention to iter8 

Automate canary releases and A/B testing for cloud-native development

via this tutorial: -

Progressively roll out your application in Kubernetes by using the iter8 toolchain

Learn how to set up and use a DevOps toolchain by using iter8 to implement a progressive rollout of a new version of your application.


That's next on my hit list .....

Want to learn COBOL ? Here's how ...

During yesterday's most excellent MainframerZ Meetup, one of our speakers, Will Yates, talked about the COBOL enablement available via the Open Mainframe Project.

Here it is: -

The COBOL Training Course is an open source initiative under the Open Mainframe Project that offers introductory-level educational COBOL materials with modern tooling. 


Remembering that COBOL skills are still definitely relevant, despite the language's relative maturity - and yesterday's Meetup amplified that ( replays available shortly ), so get learning !

Thursday 4 June 2020

Webcast - Keep your data yours – IBM Cloud Hyper Protect Services - 16 June 2020

One of my esteemed colleagues, Stefan Liesche, who is the IBM Distinguished Engineer for IBM Cloud Hyper Protect Services is presenting next week: -

With the introduction of Hyper Protect Services as part of IBM's public and private cloud offerings, we are putting data protection at the center of our focus. This family of services, containers and IaaS runtimes supports the construction of cloud solutions on cloud native technologies and patterns to inherit many of the protection capabilities of the hyper protection profile.

We are enabling developers to build secure cloud applications seamlessly using a portfolio of cloud services powered by IBM LinuxONE.
It is now easier than ever to fortify data protection with increased customer control of access (including from privileged users) and encryption of data at rest and in flight and extend this protection to data in use.


Worth an hour of your time, methinks

Please register here: -

Visual Studio Code - Wow 🙀

Why did I not know that I can merely hit [cmd] [p]  to bring up a search box allowing me to search my project e.g. a repo cloned from GitHub...