version: 2.1 executors: docker-executor: machine: image: ubuntu-2204:current orbs: ruby: circleci/ruby@2.1.4 browser-tools: circleci/browser-tools@1.4.8 docker: circleci/docker@2.8.2 jobs: test: docker: - image: cimg/ruby:3.3.4 environment: RAILS_ENV: test - image: cimg/postgres:13.3-postgis environment: POSTGRES_USER: postgres POSTGRES_DB: test_database POSTGRES_PASSWORD: mysecretpassword - image: redis:7.0 steps: - checkout - run: name: Install Bundler command: gem install bundler - run: name: Bundle Install command: bundle install --jobs=4 --retry=3 - run: name: Database Setup command: | bundle exec rails db:create bundle exec rails db:schema:load - run: name: Run RSpec tests command: bundle exec rspec - store_artifacts: path: coverage build-and-push: executor: name: docker/docker # You can also specify a different image if required. parameters: tag: type: string default: "rc" steps: - checkout # Login to Docker Hub using the orb command. The orb expects environment # variables DOCKERHUB_USERNAME and DOCKERHUB_PASSWORD (or DOCKERHUB_TOKEN). - docker/login: username: "$DOCKERHUB_USERNAME" password: "$DOCKERHUB_TOKEN" # Build and publish the Docker image. - docker/build-publish: image: "freikin/dawarich:<< parameters.tag >>" dockerfile: ./docker/Dockerfile.dev # Set additional options if needed: build-args: "" extra-build-args: "--platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6" registry: "docker.io" push: true workflows: version: 2 build-and-test: jobs: - test - build-and-push: requires: - test filters: branches: ignore: /.*/ # Ignore branches; run only on tag builds (or adjust as needed) tags: only: /.*/ # Run for any tag; adjust regex if you want more specific tag matching tag: "<< pipeline.parameters.tag >>"