Skip to content

Commit

Permalink
Merge pull request #340 from devatherock/multi-arch
Browse files Browse the repository at this point in the history
feat: Combined the amd64 and arm64 images into a single multi-arch image
  • Loading branch information
devatherock authored May 7, 2024
2 parents 50f3ad1 + f824e16 commit dd29bbe
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 55 deletions.
84 changes: 43 additions & 41 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ docker_executor_image: &docker_executor_image
- image: cimg/openjdk:17.0.11
<<: *docker_auth

vm_executor_image: &vm_executor_image
machine:
image: ubuntu-2204:2023.04.2

work_directory: &work_directory
working_directory: ~/artifactory-badge

Expand All @@ -27,7 +31,7 @@ pr_filter: &pr_filter
ignore: master

orbs:
templates: devatherock/circleci-templates@dev:alpha
templates: devatherock/circleci-templates@0.7.0

parameters:
repo_name:
Expand All @@ -52,14 +56,16 @@ executors:
<<: *docker_executor_image
resource_class: medium
<<: *work_directory
arm-native-image-executor:
<<: *docker_executor_image
resource_class: arm.medium
<<: *work_directory
machine-executor:
machine:
image: ubuntu-2204:2023.04.2
<<: *vm_executor_image
resource_class: medium
<<: *work_directory
arm-executor:
machine:
image: ubuntu-2004:2022.04.1
<<: *vm_executor_image
resource_class: arm.medium
<<: *work_directory

Expand All @@ -76,7 +82,7 @@ jobs:
- v1-dependencies-{{ checksum "build.gradle" }}
- v1-dependencies
- run: |
./gradlew check sonar -Dsonar.login=$SONAR_TOKEN -Dgraalvm=true
./gradlew check sonar -Dsonar.token=$SONAR_TOKEN -Dgraalvm=true
- store_artifacts:
path: build/reports
- store_test_results:
Expand All @@ -92,7 +98,7 @@ jobs:
- v1-dependencies-{{ checksum "build.gradle" }}
- v1-dependencies
- run: |
./gradlew build coveralls sonar -Dsonar.login=$SONAR_TOKEN -Dgraalvm=true
./gradlew build coveralls sonar -Dsonar.token=$SONAR_TOKEN -Dgraalvm=true
- persist_to_workspace:
root: ~/artifactory-badge
paths:
Expand All @@ -107,39 +113,27 @@ jobs:
key: v1-dependencies-{{ checksum "build.gradle" }}

publish:
executor: native-image-executor
parameters:
runner:
type: executor
tag_suffix:
type: string
executor: << parameters.runner >>
steps:
- checkout
- setup_remote_docker
- attach_workspace:
at: ~/artifactory-badge
- run: |
TAG=${CIRCLE_SHA1:0:8}
TAG=${CIRCLE_SHA1:0:8}-<< parameters.tag_suffix >>
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker build \
-t devatherock/artifactory-badge:$TAG \
-t devatherock/artifactory-badge:latest \
-t devatherock/artifactory-badge:amd64 .
docker image push --all-tags devatherock/artifactory-badge
publish_arm:
executor: arm-executor
steps:
- checkout
- attach_workspace:
at: ~/artifactory-badge
- run: |
TAG=${CIRCLE_SHA1:0:8}-arm64
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker build \
-t devatherock/artifactory-badge:$TAG \
-t devatherock/artifactory-badge:arm64 .
-t devatherock/artifactory-badge:<< parameters.tag_suffix >> .
docker image push --all-tags devatherock/artifactory-badge
integration_test:
parameters:
command_args:
type: string
runner:
type: executor
executor: << parameters.runner >>
Expand All @@ -152,7 +146,7 @@ jobs:
- v1-integration-{{ checksum "build.gradle" }}
- v1-integration
- run: |
make integration-test remote-integration-test << parameters.command_args >>
make integration-test remote-integration-test
- save_cache:
paths:
- ~/.gradle
Expand All @@ -171,14 +165,11 @@ jobs:
TAG=${CIRCLE_TAG#v}
DEV_TAG=${CIRCLE_SHA1:0:8}
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
docker pull devatherock/artifactory-badge:$DEV_TAG
docker tag devatherock/artifactory-badge:$DEV_TAG devatherock/artifactory-badge:$TAG
docker tag devatherock/artifactory-badge:$DEV_TAG devatherock/artifactory-badge:${TAG}-amd64
docker pull devatherock/artifactory-badge:${DEV_TAG}-arm64
docker tag devatherock/artifactory-badge:${DEV_TAG}-arm64 devatherock/artifactory-badge:${TAG}-arm64
docker push devatherock/artifactory-badge:$TAG
docker push devatherock/artifactory-badge:${TAG}-amd64
docker push devatherock/artifactory-badge:${TAG}-arm64
docker buildx create --name rockbuilder \
--driver docker-container --use --bootstrap
docker buildx imagetools create \
-t devatherock/<< pipeline.parameters.repo_name >>:$TAG \
devatherock/<< pipeline.parameters.repo_name >>:$DEV_TAG
workflows:
version: 2.1
Expand Down Expand Up @@ -209,13 +200,26 @@ workflows:
- publish:
context:
- docker-credentials
runner: native-image-executor
tag_suffix: amd64
requires:
- build
- publish_arm:
- publish:
name: publish_arm
context:
- docker-credentials
runner: arm-native-image-executor
tag_suffix: arm64
requires:
- build
- templates/image_merge:
name: publish_multi_arch
context:
- docker-credentials
docker_image: '<< pipeline.parameters.repo_name >>'
requires:
- publish
- publish_arm
- templates/dockerhub_readme_update:
name: dockerhub_readme
context:
Expand All @@ -225,21 +229,19 @@ workflows:
image_description: 'Badge generator for docker registries hosted in jfrog artifactory'
work_dir: '~/<< pipeline.parameters.repo_name >>'
requires:
- publish_arm
- publish_multi_arch
- integration_test:
name: integration_test_amd
context:
- docker-credentials
runner: machine-executor
command_args: ''
requires:
- publish
- publish_multi_arch
- integration_test:
name: integration_test_arm
context:
- docker-credentials
runner: arm-executor
command_args: 'docker_tag=arm64'
requires:
- dockerhub_readme

Expand Down
14 changes: 4 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,22 @@
### Changed
- Specified all generated json config files to the `native-image` command
- fix(deps): update dependency net.logstash.logback:logstash-logback-encoder to v7.4
- chore(deps): update plugin org.sonarqube to v4.4.1.3373
- chore: Made the gradle-includes location configurable
- Configure Mend Bolt for GitHub
- fix(deps): update dependency org.jsoup:jsoup to v1.17.2
- chore(deps): update plugin com.diffplug.spotless to v6.25.0
- chore(deps): update cimg/openjdk docker tag to v17.0.10
- chore(deps): update dependency gradle to v7.6.4
- fix(deps): update dependency org.codehaus.janino:janino to v3.1.12
- fix(deps): update dependency org.wiremock:wiremock to v3.4.2
- fix(deps): update dependency ch.qos.logback:logback-classic to v1.5.3
- chore(deps): update plugin org.owasp.dependencycheck to v9.0.10
- fix(deps): update dependency org.projectlombok:lombok to v1.18.32
- fix(deps): update dependency io.micronaut:micronaut-bom to v3.10.4
- fix(deps): update dependency org.wiremock:wiremock to v3.5.1
- chore(deps): update plugin org.sonarqube to v5
- fix(deps): update dependency org.wiremock:wiremock to v3.5.2
- chore(deps): update plugin org.owasp.dependencycheck to v9.1.0
- fix(deps): update dependency ch.qos.logback:logback-classic to v1.5.5
- chore(deps): update cimg/openjdk docker tag to v17.0.11
- fix(deps): update dependency ch.qos.logback:logback-classic to v1.5.6
- fix(deps): update dependency org.wiremock:wiremock to v3.5.3
- fix(deps): update dependency org.wiremock:wiremock to v3.5.4
- Combined the amd64 and arm64 images into a single multi-arch image

### Removed
- Dependency check plugin

## [2.0.0] - 2023-06-03
### Added
Expand Down
4 changes: 1 addition & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ remote-integration-test:
DOCKER_TAG=$(docker_tag) docker-compose -f docker-compose-remote.yml up &
./gradlew integrationTest --tests '*RemoteUrlsIntegrationSpec*'
docker-compose down
build:
build-all:
./gradlew build -Dgraalvm=true
fast-build:
./gradlew build -Dgraalvm=true -x dependencyCheckAggregate
docker-build:
docker build -t devatherock/artifactory-badge:$(docker_tag) .
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ plugins {
id 'org.sonarqube' version '5.0.0.4638'
id 'com.github.kt3k.coveralls' version '2.12.2'
id 'com.diffplug.spotless' version '6.25.0'
id 'org.owasp.dependencycheck' version '9.1.0'
}

version "2.0.0"
Expand Down

0 comments on commit dd29bbe

Please sign in to comment.