version: 2.1 orbs: ruby: circleci/ruby@2.1.4 browser-tools: circleci/browser-tools@1.4.8 docker: circleci/docker@2.4.0 parameters: branch: type: string default: "master" 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: machine: image: ubuntu-2204:current steps: - checkout - docker/setup-buildx - restore_cache: keys: - docker-layers-{{ .Branch }}-{{ .Revision }} - docker-layers-{{ .Branch }} - docker-layers- - run: name: Install dependencies command: npm install - run: name: Login to DockerHub command: echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin - run: name: Set Docker tags command: | VERSION=${CIRCLE_TAG:-latest} TAGS="freikin/dawarich:${VERSION}" # Add :rc tag for pre-releases (assuming tag contains 'rc' for pre-releases) if [[ $CIRCLE_TAG == *"rc"* ]]; then TAGS="${TAGS},freikin/dawarich:rc" fi # Add :latest tag only if not a pre-release if [[ $CIRCLE_TAG != *"rc"* ]]; then TAGS="${TAGS},freikin/dawarich:latest" fi echo "export DOCKER_TAGS=${TAGS}" >> $BASH_ENV - docker/build: image: freikin/dawarich tag: ${DOCKER_TAGS} dockerfile: ./docker/Dockerfile.dev platform: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 push: true - save_cache: key: docker-layers-{{ .Branch }}-{{ .Revision }} paths: - /tmp/docker-cache workflows: rspec: jobs: - test version: 2 build-and-deploy: jobs: - build-and-push: filters: tags: only: /^v.*/ branches: only: master