Multiarch Docker builds using Shippable

Recently I have been experimenting with different ways of building multi architecture Docker images.  As part of this process I wrote about Docker image manifests and the different ways you can package multi architecture builds into a single Docker image.  Packaging the images is only half the problem though.  You basically need to create the different Docker images for the different architectures first, before you are able to package them into manifests.

There are several ways to go about building the Docker images for various architectures.  In the remainder of this post I will be showing how you can build Docker images natively against arm64 only as well as amd64/arm64 simultaneously using some slick features provided by the folks at Shippable.  Having the ability to automate multi architecture builds with CI is really powerful because it avoids having to use other tools or tricks which can complicate the process.

Shippable recently announced integrated support for arm64 builds.  The steps for creating these cross platform builds is fairly straight forward and is documented on their website.  The only downside to using this method is that currently you must explicitly contact Shippable and requests access to use the arm64 pool of nodes for running jobs, but after that multi arch builds should be available.

For reference, here is the full shippable.yml file I used to test out the various types of builds and their options.

Arm64 only builds

After enabling the shippable_shared_aarch64 node pool (from the instruction above) you should have access to arm64 builds, just add the following block to your shippable.yml file.

runtime:
  nodePool: shippable_shared_aarch64

The only other change that needs to be made is to point the shippable.yaml file at the newly added node pool and you should be ready to build on arm64.  You can use the default “managed” build type in Shippable to create builds.

Below I have a very simple example shippable.yml file for building a Dockerfile and pushing its image to my Dockerhub account.  The shippable.yml file for this build lives in the GitHub repo I configured Shippable to track.

language: none

runtime:
  nodePool:
    - shippable_shared_aarch64
    - default_node_pool

build:

  ci:
    - sed -i 's|registry.fedoraproject.org/||' Dockerfile.fedora-28
    - docker build -t local/freeipa-server -f Dockerfile.fedora-28 .
    - tests/run-master-and-replica.sh local/freeipa-server

  post_ci:
    - docker tag local/freeipa-server jmreicha/freeipa-server:test
    - docker push jmreicha/freeipa-server:test

integrations:
  hub:
    - integrationName: dockerhub
      type: dockerRegistryLogin

Once you have a shippable.yml file in a repo that you would like to track and also have things set up on the Shippable side, then every time a commit/merge happens on the master branch (or whatever branch you set up Shippable to track) an arm64 Docker image gets built and pushed to the Dockerhub.

Docs for settings up this CI style job can be found here.  There are many other configuration settings available to tune so I would encourage you to read the docs and also play around with the various options.

Parallel arm64 and amd64 builds

The approach for doing the simultaneous parallel builds is a little bit different and adds a little bit more complexity, but I think is worth it for the ability to automate cross platform builds.  There are a few things to note about the below configuration.  You can use templates in either style job.  Also, notice the use of the shipctl command.  This tool basically allows you to mimic some of the other functionality that exists in the default runCI jobs, including the ability to login to Docker registries via shell commands and manage other tricky parts of the build pipeline, like moving into the correct directory to build from.

Most of the rest of the config is pretty straight forward.  The top level jobs directive lets you create multiple different jobs, which in turn allows you to set the runtime to use different node pools, which is how we build against amd64 and arm64.  Jobs also allow for setting different environment variables among other things.  The full docs for jobs shows all of the various capabilities of these jobs.

templates: &build-test-push
  - export HUB_USERNAME=$(shipctl get_integration_field "dockerhub" "username")
  - export HUB_PASSWORD=$(shipctl get_integration_field "dockerhub" "password")
  - docker login --username $HUB_USERNAME --password $HUB_PASSWORD
  - cd $(shipctl get_resource_state "freeipa-container-gitRepo")
  - sed -i 's|registry.fedoraproject.org/||' Dockerfile.fedora-27
  - sed -i 's/^# debug:\s*//' Dockerfile.fedora-27
  - docker build -t local/freeipa-server -f Dockerfile.fedora-27 .
  - tests/run-master-and-replica.sh local/freeipa-server
  - docker tag local/freeipa-server jmreicha/freeipa-server:$arch
  - docker push jmreicha/freeipa-server:$arch

resources:
    - name: freeipa-container-gitRepo
      type: gitRepo
      integration: freeipa-container-gitRepo
      versionTemplate:
          sourceName: jmreicha/freeipa-container
          branch: master

jobs:
  - name: build_amd64
    type: runSh
    runtime:
      nodePool: default_node_pool
      container: true
    integrations:
      - dockerhub
    steps:
      - IN: freeipa-container-gitRepo
      - TASK:
          runtime:
            options:
              env:
                - privileged: --privileged
                # Also look at using SHIPPABLE_NODE_ARCHITECTURE env var
                - arch: amd64
          script:
            - *build-test-push

  - name: build_arm64
    type: runSh
    runtime:
      nodePool: shippable_shared_aarch64
      container: true
    integrations:
      - dockerhub
    steps:
      - IN: freeipa-container-gitRepo
      - TASK:
          runtime:
            options:
              env:
                - privileged: --privileged
                - arch: arm64
          script:
            - *build-test-push

As you can see, there is a lot more manual configuration going on here than the first job.

I decided to use the top level templates directive to basically DRY the configuration so that it can be reused.  I am also setting environment variables per job to ensure the correct architecture gets built and pushed for the various platforms.  Otherwise the configuration is mostly straight forward.  The confusion with these types of jobs if you haven’t set them up before mostly comes from figuring out where things get configured in the Shippable UI.

Conclusion

I must admit, Shippable is really easy to get started with, has good support and has good documentation.  I am definitely a fan and will recommend and use their products whenever I get a chance.  If you are familiar with Travis then using Shippable is easy.  Shippable even supports the use of Travis compatible environment variables, which makes porting over Travis configs really easy.  I hope to see more platforms and architectures supported in the future but for now arm64 is a great start.

There are some downside to using the parallel builds for multi architecture builds.  Namely there is more overhead in setting up the job initially.  With the runSh (and other unmanaged jobs) you don’t really have access to some of the top level yml declarations that come with managed jobs, so you will need to spend more time figuring out how to wire up the logic manually using shell commands and the shipctl tool as depicted in my above example.  This ends up being more flexible in the long run but also harder to understand and get working to begin with.

Another downside of the assembly line style jobs like runSh is that they currently can’t leverage all the features that the runCI job can, including the matrix generation (though there is a feature request to add it in the future) and report parsing.

The last downside when setting up unmanaged jobs is trying to figure out how to wire up the different components on the Shippable side of things.  For example you don’t just create a runCI job like the first example.  You have to first create an integration with the repo that you are configuring so that shippable can make an rSync and serveral runSh jobs to connect with the repo and be able to work correctly.

Overall though, I love both of the runSh and runCI jobs.  Both types of jobs lend themselves to being flexible and composable and are very easy to work with.  I’d also like to mention that the support has been excellent, which is a big deal to me.  The support team was super responsive and helpful trying to sort out my issues.  They even opened some PRs on my test repo to fix some issues.  And as far as I know, there are no other CI systems currently offering native arm64 builds which I believe will become more important as the arm architecture continues to gain momentum.

Read More

The Ultimate Guide to Winning Big with the Jackpot City App and Casino Bonuses

Welcome to the world of Jackpot City, where the thrill of winning is just a tap away. Whether you’re a seasoned player or new to the online casino scene, the Jackpot City app offers an unbeatable experience with its wide range of games and enticing bonuses.

Jackpot City Casino Logo

Amazing Bonuses at Jackpot City Casino

As a new player, you can take advantage of the Jackpot City bonus offers, which include generous match bonuses on your first few deposits. These bonuses increase your playing power, providing more opportunities to experience the excitement of the casino.

Explore Jackpot City Online Casino

With a vast array of games, Jackpot City online casino ensures that there’s something for every type of player. From classic table games like blackjack and roulette to the latest slots, the selection is endless. And for continuous rewards, don’t forget to log in regularly using the Jackpot City login to claim your daily bonuses and free spins.

Spin the Reels with Jackpot City Slots

If you’re a slots enthusiast, you won’t want to miss the thrilling experience offered by Jackpot City slots. With themes ranging from ancient Egypt to futuristic adventures, each slot offers unique features and massive jackpots.

Get Started with Jackpot City Free Spins

Don’t miss out on your chance to enjoy Jackpot City free spins which can give you additional opportunities to win without spending extra. These promotions are perfect for trying out new games and discovering which ones bring you the most luck.

Conclusion

With the Jackpot City app, every day can be a lucky day. Take advantage of the incredible bonuses, explore diverse games, and experience the thrill of winning from the comfort of your home. So why wait? Download the app, try your luck, and see what treasures await you at Jackpot City.

For more insights into the excitement of playing online, watch our exclusive video:

Read More

Erleben Sie das Beste: NV Casino, NV Casino Bonus und Einfache NV Casino Online Login Schritte

Willkommen im aufregenden Universum der Online-Glücksspiele! Im NV Casino erwartet Sie nicht nur Spaß und Spannung, sondern auch eine Vielzahl von Bonusangeboten und bequemen Log-In-Möglichkeiten. Entdecken Sie, wie das NV Casino Ihr ultimatives Ziel für Online-Glücksspiele sein kann.

Einführung in das NV Casino

Das NV Casino ist bekannt dafür, seinen Nutzern ein unvergleichliches Online-Spielerlebnis zu bieten. Mit einer großen Auswahl an Spielen, die von klassischen Kartenspielen bis hin zu modernen Spielautomaten reichen, ist etwas für jeden Geschmack dabei. Dank der benutzerfreundlichen Plattform und der schnell ladenden Spiele können Sie sich sofort ins Abenteuer stürzen.

Attraktive NV Casino Bonusangebote

Für Spieler, die das Beste aus ihrem Einsatz herausholen möchten, bietet das NV Casino attraktive Boni. Der NV casino bonus ist besonders beliebt und bietet Ihnen extra Spielguthaben oder Freispiele. Diese Angebote sind eine großartige Möglichkeit, Ihre Gewinne zu maximieren und das Beste aus Ihrem Spielerlebnis herauszuholen.

NV Casino Online Login leicht gemacht

Der Zugangsprozess im NV Casino ist denkbar einfach und effizient. Eine intuitive Benutzeroberfläche sorgt dafür, dass Sie innerhalb weniger Minuten mit dem Spielen beginnen können. Alles, was Sie tun müssen, ist, Ihre Anmeldedaten einzugeben, und schon kann der Spaß beginnen!

NV Casino

Interaktive Inhalte für Ihre Unterhaltung

Erfahren Sie mehr über die spannenden Möglichkeiten im NV Casino durch unser Video:

Abschließend ist das NV Casino die perfekte Wahl für jeden, der auf der Suche nach einem aufregenden und lohnenden Online-Glücksspielerlebnis ist. Mit den eindrucksvollen Boni, einer benutzerfreundlichen Oberfläche und einer Vielzahl an Spielen wird jeder Besuch zu einem puren Vergnügen.

Read More

Unlocking Exciting Offers with SpinBet: Your Guide to SpinBet App, SpinBet Casino, and SpinBet Promo Code

Are you on the lookout for an electrifying online casino experience? Look no further than the dynamic world of SpinBet. With its user-friendly SpinBet app, a plethora of gaming options at SpinBet casino, and enticing SpinBet promo code offers, gamers around the globe are diving into a sea of adventure and rewards.

Experience Gaming Like Never Before

SpinBet is renowned for its vast array of gaming options that cater to both novices and seasoned players. The intuitive design of the SpinBet app ensures that your gambling adventure is seamless and enjoyable. Whether you’re a fan of table games, slots, or live dealer experiences, there’s something for everyone.

SpinBet Casino Slots

Why Choose SpinBet?

  • Variety of Games: From classic slots to modern video games, SpinBet houses an extensive gaming library.
  • Safety and Security: SpinBet employs state-of-the-art security measures to protect your data and transactions.
  • Lucrative Promotions: Regular bonuses keep players coming back for more rewards with the SpinBet promo code.

Getting Started with the SpinBet App

Embarking on your SpinBet journey is straightforward. Download the SpinBet app, available for both Android and iOS devices, to start playing. The app provides easy navigation and a user-friendly interface for a superior gambling experience. Once installed, create your account, take advantage of any SpinBet promo code available, and you’re ready to spin to win!

Responsible Gaming

SpinBet is committed to promoting responsible gaming. The app includes features that allow players to set limits on their spending and gaming time, ensuring that the fun remains within control. Player well-being is always the top priority at SpinBet.

Join the SpinBet Community Today

Are you ready to dive into a world of fun and fortune with SpinBet? Whether you’re looking to unwind after a long day or pursue a winning streak, SpinBet provides the ultimate platform. Join the community today and discover all that SpinBet has to offer.

Discover More with Our Latest Video

Read More

Energy Casino, Energy kasyno, Energycasino i oferta Energycasino pl — praktyczny przewodnik

Energy Casino screenshot

Chcesz gra? na Energy Casino bez niespodzianek i z realn? szans? na zysk? Ten tekst daje konkretny, krok po kroku plan: jak oceni? ofert?, wybra? gry z najwi?ksz? warto?ci? dla gracza, bezpiecznie korzysta? z bonusów i zamienia? wygrane w rzeczywiste wyp?aty.

Szybka weryfikacja przed rejestracj?

Nie zaczynaj od bonusów — zacznij od licencji i metod p?atno?ci. Sprawd?, czy operator ma widoczn? informacj? o licencji, jakie s? dost?pne metody depozytu i wyp?aty oraz ile czasu trwaj? przelewy. Upewnij si?, ?e mo?esz zweryfikowa? konto bez d?ugich opó?nie? (zdj?cie dowodu, potwierdzenie adresu). Brak jasnej procedury weryfikacji to pierwszy sygna? ostrzegawczy.

Jak oceni? bonusy i warunki

  • Sprawd? wymagania obrotu (wagering): ni?szy mno?nik to lepsza oferta.
  • Dowiedz si?, które gry wliczaj? si? do obrotu i w jakim procencie — cz?sto sloty 100%, blackjack 10%.
  • Ustal maksymaln? stawk? przy obrocie bonusowym; jej przekroczenie mo?e uniewa?ni? bonus.
  • Termin wa?no?ci bonusu: krótkie okresy (np. 3 dni) bardzo utrudniaj? wyci?gni?cie zysków.

Wybór gier — gdzie masz realn? przewag?

Je?eli chcesz minimalizowa? straty i maksymalizowa? czas gry, kieruj si? RTP i zmienno?ci?:

  • Sloty o RTP powy?ej 96% i ?redniej zmienno?ci daj? stabilniejszy zwrot.
  • Gry sto?owe: blackjack i baccarat przy uczciwych zasadach oferuj? najni?szy house edge — ucz si? podstaw strategii.
  • Unikaj gier z automatycznie obni?onym RTP w promocjach — zawsze sprawd? warunki dla danej gry.

Bud?et i zarz?dzanie stawkami

Zastosuj prost? zasad?: kwota na sesj? = 1–2% ca?kowitego banku. Dzi?ki temu nie ryzykujesz b?yskawicznego wyczerpania ?rodków i mo?esz testowa? strategie. Ustal limit strat i trzymaj si? go; je?li emocje zaczynaj? dominowa?, przerwij gr?.

Wyp?aty i dokumenty — jak unikn?? opó?nie?

Przed pierwszym depozytem sprawd? minimalne i maksymalne limity wyp?at oraz prowizje. Przygotuj skany dokumentów do weryfikacji zaraz po rejestracji — to skróci czas realizacji wyp?aty. Je?li korzystasz z portfela elektronicznego, przelewy s? zwykle najszybsze.

Najcz?stsze b??dy i jak ich unika?

  • Nie czytanie regulaminu promocji — tracisz pieni?dze przez niewiedz?.
  • Chasing losses — gonienie strat prowadzi do wi?kszych przegranych.
  • Granie na niezweryfikowane konto — wyp?aty zostan? opó?nione.

Je?li chcesz przej?? bezpo?rednio do sprawdzenia oferty, znajdziesz j? tutaj: Energycasino pl.

Podsumowanie: nie ma jednego „magicznego” sposobu na wygrane, ale jest zestaw prostych regu?, które znacz?co poprawiaj? twoje szanse i wygod? gry. Sprawd? licencj?, czytaj warunki bonusów, wybieraj gry z dobrym RTP, zarz?dzaj bankrollem i weryfikuj konto zawczasu — tego trzymaj si? jako checklisty przy korzystaniu z Energy Casino.

Read More