version: 2.1 jobs: build-amd64: machine: image: ubuntu-2004:current steps: - checkout - run: name: Prepare .env file command: | cp apps/dokploy/.env.production.example .env.production cp apps/dokploy/.env.production.example apps/dokploy/.env.production - run: name: Build and push AMD64 image command: | docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN if [ "${CIRCLE_BRANCH}" == "main" ]; then TAG="latest" else TAG="canary" fi docker build --platform linux/amd64 -t dokploy/dokploy:${TAG}-amd64 . build-arm64: machine: image: ubuntu-2004:current resource_class: arm.large steps: - checkout - run: name: Prepare .env file command: | cp apps/dokploy/.env.production.example .env.production cp apps/dokploy/.env.production.example apps/dokploy/.env.production - run: name: Build and push ARM64 image command: | docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN if [ "${CIRCLE_BRANCH}" == "main" ]; then TAG="latest" else TAG="canary" fi docker build --platform linux/arm64 -t dokploy/dokploy:${TAG}-arm64 . combine-manifests: docker: - image: cimg/node:18.18.0 steps: - checkout - setup_remote_docker - run: name: Create and push multi-arch manifest command: | docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN # if [ "${CIRCLE_BRANCH}" == "main" ]; then # VERSION=$(node -p "require('./apps/dokploy/package.json').version") # echo $VERSION # TAG="latest" # docker manifest create dokploy/dokploy:${TAG} \ # dokploy/dokploy:${TAG}-amd64 \ # dokploy/dokploy:${TAG}-arm64 # docker manifest push dokploy/dokploy:${TAG} # docker manifest create dokploy/dokploy:${VERSION} \ # dokploy/dokploy:${TAG}-amd64 \ # dokploy/dokploy:${TAG}-arm64 # docker manifest push dokploy/dokploy:${VERSION} # else # TAG="canary" # docker manifest create dokploy/dokploy:${TAG} \ # dokploy/dokploy:${TAG}-amd64 \ # dokploy/dokploy:${TAG}-arm64 # docker manifest push dokploy/dokploy:${TAG} # fi workflows: build-all: jobs: - build-amd64: filters: branches: only: - main - canary - feat/remove-build-on-server - build-arm64: filters: branches: only: - main - canary - feat/remove-build-on-server - combine-manifests: requires: - build-amd64 - build-arm64 filters: branches: only: - main - canary