diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c9c45a7b764e340d2628ca0b8964f160f9d88829..1a820bba71538d1e88a5eb24f3e857e36ab91d63 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,14 +9,14 @@ stages:
 variables:
   CI_SKIP_TESTS: "false"
 
-koji:
+.koji:
   stage: build_koji
   image: 'gitlab-registry.cern.ch/linuxsupport/rpmci/kojicli'
   script:
     - echo "${KOJICI_PWD}" | kinit ${KOJICI_USER}@CERN.CH
     - |
       koji image-build c8-docker-base 8.x.`date "+%Y%m%d"` \
-        c8-image-8x http://linuxsoft.cern.ch/cern/centos/8/BaseOS/x86_64/kickstart/ x86_64 \
+        c8-image-8x http://linuxsoft.cern.ch/cern/centos/8/BaseOS/${ARCH}/kickstart/ ${ARCH} \
         --ksurl=git+ssh://git@gitlab.cern.ch:7999/${CI_PROJECT_PATH}#${CI_COMMIT_SHORT_SHA} --kickstart=c8-base-docker.ks  \
         --distro=RHEL-8.2 --format=docker --ksversion=RHEL8 --factory-parameter=dockerversion 1.10.1 \
         --factory-parameter=docker_env '["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"]' \
@@ -26,12 +26,22 @@ koji:
     - koji taskinfo ${TASKID} | tee taskinfo
     - export BUILD=$(sed -z -e 's/.*Build:\ \([^ ]\+\) .*/\1/g' taskinfo)
     - koji download-build --noprogress --type=image ${BUILD}
+  variables:
+    ARCH: x86_64
   artifacts:
     paths:
       - "c8-docker-base-*.tar.xz"
     expire_in: 1 month
 
-docker:
+koji:
+  extends: .koji
+
+koji-a:
+  extends: .koji
+  variables:
+    ARCH: aarch64
+
+.docker:
   stage: build_docker
   tags:
     - docker-privileged
@@ -55,7 +65,21 @@ docker:
       - "load"
     expire_in: 1 month
 
-upstream_test_docker:
+docker:
+  extends: .docker
+  dependencies:
+    - koji
+  needs:
+    - koji
+
+docker-a:
+  extends: .docker
+  dependencies:
+    - koji-a
+  needs:
+    - koji-a
+
+.upstream_test_docker:
   stage: upstream_test_docker
   tags:
     - docker-privileged
@@ -81,7 +105,14 @@ upstream_test_docker:
       - "load"
     expire_in: 1 month
 
-cern_test_docker:
+upstream_test_docker:
+  extends: .upstream_test_docker
+  dependencies:
+    - docker
+  needs:
+    - docker
+
+.cern_test_docker:
   stage: cern_test_docker
   tags:
     - docker-privileged
@@ -107,7 +138,16 @@ cern_test_docker:
       - "load"
     expire_in: 1 month
 
-tag_latest:
+cern_test_docker:
+  extends: .cern_test_docker
+  dependencies:
+    - docker
+    - upstream_test_docker
+  needs:
+    - docker
+    - upstream_test_docker
+
+.tag_latest:
   stage: tag_docker
   tags:
     - docker-privileged
@@ -133,6 +173,20 @@ tag_latest:
     - docker push "cern/${CI_PROJECT_NAME}:${VERSION}"
     - echo docker push "cern/${CI_PROJECT_NAME}:latest"
     - docker push "cern/${CI_PROJECT_NAME}:latest"
+  when: manual
+
+tag_latest:
+  extends: .tag_latest
   dependencies:
     - docker
-  when: manual
+    - cern_test_docker
+  needs:
+    - docker
+    - cern_test_docker
+
+tag_latest-a:
+  extends: .tag_latest
+  dependencies:
+    - docker-a
+  needs:
+    - docker-a