How to create optimized Node.js docker images and deploy to App Engine, Cloud Run and GKE with GitLab CI

10 Apr 2020

For a few years our software has been deployed to Google Cloud’s AppEngine Flex environment, which behind the scenes creates a Docker image, pushes it to the GCP Container Registry and then deploys it to a compute engine instance managed by App Engine. The time had come to take control of the Docker build to increase the flexibility of the deployment options. In GCP there are four Compute options where we can deploy a docker image:

Read more

Building a Google Cloud Platform CI/CD/DevOps solution with Pulumi and GitLab - Part 2 Setting up the GCP organisational structure

16 Feb 2020

In Part 1 we bootstrapped our GitLab configuration using Pulumi, then used a GitOps style build pipeline in GitLab CI to further configure our GitLab project. Next we’ll run through setting up an organisation structure in Google Cloud with Pulumi, creating a project for shared resources, and creating a service account that is an admin for a folder in the org structure. The Organisation and folder structure of resources (and a number of other GCP features) are only available with a GSuite account.

Read more

Building a Google Cloud DevOps solution using Infrastructure-as-code - Part 1 Configuring GitLab with Pulumi

11 Feb 2020

The rise of cloud computing combined with infrastructure-as-code (IaC) tooling has given us the ability to rapidly provision complete computing environments for build, test, release and operations that follow DevOps best practices. Over this series of articles we’ll build a simple cloud native environment and application that follows many of the best practices. The sample project won’t be perfect for every use case as every solution has its trade-offs, but it will give you a solid idea of what can be done to automate your infrastructure provisioning and application deployment pipeline.

Read more

How to setup your Ionic project with automated Continuous Integration and Deployment with Gitlab CI

8 Jan 2019

How useful would it be to have all your unit and end-to-end integration test run every time you commit your code? For those times you didn’t think it was necassary for the change, or just simply forgot to before pushing the commit. A automated continuous integration build system has been a cornerstone of good software development practices, even before DevOps came on the scene. Here I’m going to show you how to setup your own continuous integration and deployment pipeline using the GitLab CI service for your Ionic project.

Read more

Migrating the Cloneder starter app to Ionic 5

8 Jan 2019

Cloneder has had a long history of major upgrades, from the hosted service to the Parse Server node.js framework, and from Ionic 1 to Ionic 2 to Ionic 3. And all along the way on the Parse Server version we’ve maintained an easy backwards-compatible migration path for the database. How useful would it be to have all your unit and end-to-end integration test run every time you commit your code?

Read more

Launch your Ionic development in 2019 with Lattice

22 Nov 2018

If you’ve built a production Ionic app from scratch you’ll know all too well the significant amount of software engineering time that goes into integrating all the libraries, SDK’s, plugins, services, build processes etc to produce a functioning app. And then never ending ongoing work keeping the dependencies up to date. When new versions of For the last few years we’ve offered a complete Ionic & App Engine starter project focused on social apps.

Read more

Cloneder news and updates

21 Nov 2018

Keeping an app update to date with the latest versions of the libraries, framework, modules, SDK, plugins and OS platforms is a lot of work. It’s very rarely as simple as updating the dependency. For components, such as Ionic, Cordova or iOS and Android major versions its quite unlikely the app will no longer build. Ideally the breakage happens at build time, and not later at runtime which requires a proper round of testing to notice the issue.

Read more

How we easily added real-time updates to our existing app using Firebase

19 Apr 2018

Users now days have high expectations of their experience when using apps, wanting notifications and updates as soon as relevant new content is available. If you’re building an app from scratch then solutions such as the Firebase real-time or Firestore databases provide real-time data sync straight out of the box. Or if you don’t mind managing your own database then there are other options such as RethinkDB. However bolting on on real-time updates to an existing app can be a difficult or large piece of work.

Read more

3 easy steps updating Ionic unit/e2e tests to use Chrome headless on GitLab CI

9 Jan 2018

One of the perks of using Ionic for both the mobile and web/PWA versions of the app is being able to use the Angular test tooling, and 3rd party libraries such as Karma, for unit and integration testing. A good test suite gives you the confidence to roll out new features and make changes without introducing regressions. Browser based testing won’t cover every use case, such as native plugins and the occasional difference between mobile browsers and the test environment, but it will still cut down on the amount of manual testing required significantly.

Read more

Meet the NewSQL - Spanner multi-regional

7 Nov 2017

The NoSQL movement came along to give the horizontal scalability to databases, but often at the very high developer and data integrity cost of limitations in query languages, transactions and data consistency. Then NewSQL came along adding back standardised SQL querying across horizontally scaled databases, but still not with the consistency that comes with a SQL database running on a single server. Google Spanner database is the closest to the holy grail of a distributed ACID SQL database, thanks in part to Google’s GPS and atomic clock mediated TrueTime across its data centers, and extensive private global fiber optic network.

Read more