Рубрики
Uncategorized

Автоматизация многоаржевых контейнеров-изображений (мы использовали Google Cloud Build, но также будут работать действия GitHub)

Это последний пост в серии о том, как мы подготовили наше приложение для запуска на M1 (Apple … Tagged с помощью CI CD, Cloud Build, Multiarch, Github Actions.

Как мы подготовили наше приложение для запуска на M1 (Apple Silicon) (3 серии деталей)

Это последний пост в серии о том, как мы подготовили наше приложение для запуска на M1 (Apple Silicon).

В предыдущей части мы говорили о создании нескольких изображений архитектуры ЦП.

Этот пост проведет вас через то, как реализовать конвейер для создания изображений контейнеров с несколькими архитектурой, используя Google Cloud Platform’s Облачная сборка или Действия GitHub Анкет

Как вы, возможно, знаете из предыдущего поста, чтобы создать многоартные контейнерные изображения, нам нужно настроить виртуальную среду и запустить Docker buildx Анкет

Давайте настроим такие конвейеры для сборки для некоторых популярных решений CI/CD.

Облачный сборка

Облачная сборка это сервис, которая выполняет ваши сборки в инфраструктуре Google Cloud Platform.

Для запуска многоартных контейнерных изображений.

steps:
  - name: gcr.io/cloud-builders/docker
    args:
      - run
      - '--privileged'
      - 'linuxkit/binfmt:v0.7'
    id: initialize-qemu
  - name: gcr.io/cloud-builders/docker
    args:
      - buildx
      - create
      - '--name'
      - mybuilder
    id: create-builder
  - name: gcr.io/cloud-builders/docker
    args:
      - buildx
      - use
      - mybuilder
    id: select-builder
  - name: gcr.io/cloud-builders/docker
    args:
      - buildx
      - inspect
      - '--bootstrap'
    id: show-target-build-platforms
  - name: gcr.io/cloud-builders/docker
    args:
      - buildx
      - build
      - '--platform'
      - $_DOCKER_BUILDX_PLATFORMS
      - '-t'
      - 'gcr.io/$PROJECT_ID/hello-world:latest'
      - '--push'
      - .
    id: build-multi-architecture-container-image
options:
  env:
    - DOCKER_CLI_EXPERIMENTAL=enabled
substitutions:
  _DOCKER_BUILDX_PLATFORMS: 'linux/amd64,linux/arm64'

Приведенная выше конфигурация создает конвейер для настройки среды сборки ( initiaze-qemu , create-builder , select-builder и show-target-build-platforms ), чтобы построить многоарный контейнерный изображение и подтолкнуть его к Реестр контейнеров на платформе Google Cloud ( build-mult-architecture-container-image step).

Чтобы подтолкнуть к другому реестру контейнеров (например, Docker Hub) обновить Build-Mult-Architecture-Container-Image шаг соответственно.

Пожалуйста, проконсультируйтесь с документацией Cloud Build, чтобы получить информацию о том, как Триггер сборки (вручную или автоматически).

Действия GitHub

Если вы предпочитаете использовать действия GitHub вместо облачной сборки, это также возможно.

Конфигурация конвейера для создания многоартных контейнерных изображений является следующим:

name: ci
on:
  push:
jobs:
  buildx:
    runs-on: ubuntu-latest
    steps:
      - name: checkout code
        uses: actions/checkout@v2
      - name: setup qemu
        uses: docker/setup-qemu-action@v1
      - name: setup buildx
        id: buildx
        uses: docker/setup-buildx-action@v1
      - name: available platforms
        run: echo ${{ steps.buildx.outputs.platforms }}
      - name: login to docker hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}
      - name: build the image
        run: |
          docker buildx build \
          --push \
          --tag ${{ secrets.DOCKER_USERNAME }}/hello-world:latest \
          --platform linux/amd64,linux/arm64 . 

Чтобы заставить его работать, вам нужно настроить немного Секреты на GitHub :

  • Docker_username — Ваше имя пользователя на Docker Hub
  • Docker_token — Ваш концентратор Docker доступ токен

Вывод

Это был последний пост в серии, и подвести итог, давайте повторим ключевые моменты о том, как подготовить приложение для M1 (Apple Silicon):

  1. Используйте, чтобы легко построить приложения для различных операционных систем
  2. Создайте многоартные контейнерные изображения с Docker Buildx
  3. Использовать облачную сборку или действие GitHub для автоматизации сборки

Как мы подготовили наше приложение для запуска на M1 (Apple Silicon) (3 серии деталей)

Оригинал: «https://dev.to/tidalmigrations/automating-multi-arch-container-images-builds-we-used-google-cloud-build-but-github-actions-would-also-work-clb»