Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide Camunda Platform Docker artifacts for arm64 architectures/M1 Apple machines #2668

Closed
3 tasks done
ThorbenLindhauer opened this issue Jan 19, 2022 · 6 comments · Fixed by camunda/docker-camunda-bpm-platform#237
Assignees
Labels
component:c7-automation-platform DRI: @Tobias Label to differentiate issue on PM boards scope:docker Changes to the Docker images. type:feature Issues that add a new user feature to the project. version:7.19.0-alpha3 version:7.19.0

Comments

@ThorbenLindhauer
Copy link
Member

ThorbenLindhauer commented Jan 19, 2022

This issue was imported from JIRA:

Field Value
JIRA Link CAM-14301
Reporter @toco-cam
Has restricted visibility comments true

User Story (Required on creation):
As a Software Engineer, I want to be able to use Camunda Docker containers to develop on arm64 architectures/my Mac with an M1 processor.

Functional Requirements (Required before implementation):

  • In addition to the images for linux/amd64 architecture, we provide our Docker images also for the linux/arm64 architecture
  • The new images have the same functionality as the existing ones

Technical requirements

  • The CI covers the new images

Limitations of Scope (Optional):
 
Hints (Optional):

Links:

Breakdown

@ThorbenLindhauer
Copy link
Member Author

This comment was imported from JIRA and written by user @koevskinikola


Notes:

docker run -d --platform linux/amd64 --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest

@ThorbenLindhauer
Copy link
Member Author

This comment was imported from JIRA and written by user @ThorbenLindhauer


Related Zeebe issue that could give some hints for implementation: camunda/zeebe#6155

@toco-cam toco-cam added the component:c7-automation-platform DRI: @Tobias Label to differentiate issue on PM boards label Nov 8, 2022
@danielkelemen
Copy link
Member

EE docker-qa https://github.com/camunda/camunda-bpm-platform-ee/pull/750

  • Updated docker-maven-plugin version to latest v0.40.2
    • buildx support was added in 0.40.0
  • In the build step, the plugin can only build and load the native image: Source
    • This is the normal with docker buildx as local docker cannot hold multi-platform images.
    • It's fine for QA images to only test the amd64 version.

Release master https://github.com/camunda/jenkins-job-dsl-seed-jobs/pull/380

docker-camunda-bpm-platform camunda/docker-camunda-bpm-platform#237

Ideas

  • Build images normally with platform tags (-arm64, -amd64) -> test them -> create multi-platform images with docker manifest from the previously built images.
    • Pros:
      • Simple workflow
      • No double builds -> quicker workflow
    • Cons:
      • manifest is an experimental command!
      • Manifest creation would require all the images to be pushed already
  • Build images for testing and then build again the multi-platform images and push
    • Pros:
      • No experimental commands, buildx is stable and designed this way
    • Cons:
      • Double builds -> slower workflow (we can use gha cache)

Implementation

  • Decided to use the 2nd option.
  • Added docker/setup-qemu-action step for emulating arm64.
  • Added crazy-max/ghaction-github-runtime step so buildx can use the gha cache, it needs two runtime variables for that which this action exposes internally.
  • Added docker/setup-buildx-action to build and later build+push the images.
  • Created a separate publish job that runs for every distros. It uses similar actions as the build.
  • Adapted the pipeline and release scripts.

danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Dec 20, 2022
danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Dec 20, 2022
danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Dec 20, 2022
danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Jan 2, 2023
danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Jan 2, 2023
@danielkelemen
Copy link
Member

Due to the lack of native arm runners I had to adjust a few timeouts and retries both for jenkins and github:

  • increased test polling retries to 80 (from 20)
  • increased jenkins docker ce/ee timeout to 60 minutes (from 15)

We might need to adjust these values later even more if we notice they are too low, emulation is extremely slow.

It's definitely recommended to switch to native runners once they are available (https://github.com/camunda/team-infrastructure/issues/63) and to move the docker jobs to github actions as well so they can use said runnners.

@tasso94 tasso94 assigned danielkelemen and unassigned tasso94 Jan 4, 2023
@tasso94 tasso94 assigned danielkelemen and unassigned tasso94 Jan 10, 2023
danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Jan 10, 2023
@danielkelemen
Copy link
Member

Dev2QA:

@tasso94 tasso94 assigned danielkelemen and unassigned tasso94 Jan 12, 2023
@tasso94 tasso94 reopened this Jan 12, 2023
danielkelemen added a commit that referenced this issue Jan 12, 2023
danielkelemen added a commit to camunda/docker-camunda-bpm-platform that referenced this issue Jan 12, 2023
@gbetances089
Copy link
Member

Tested thanks to the Dev2QA and Daniel's help, will write a testing guide for images for reference which could be use for this type of tickets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:c7-automation-platform DRI: @Tobias Label to differentiate issue on PM boards scope:docker Changes to the Docker images. type:feature Issues that add a new user feature to the project. version:7.19.0-alpha3 version:7.19.0
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants