Laravel.io
version: 2.1
jobs:
  build:
    docker:
      - image: 'ubuntu:latest'
    steps:
      - checkout
      - run: echo "this is the build job"
  test:
    docker:
      - image: 'ubuntu:latest'
    steps:
      - checkout
      - run: echo "this is the test job"
  deploy:
    docker:
      - image: 'ubuntu:latest'
    steps:
      - run: echo "Deploy to prodlive"

workflows:
  build: # This workflow will run on all branches except 'main' and will not run on tags
    jobs:
      - test:
          filters:
            branches:
              ignore: main
  staging: # This workflow will only run on 'main' and will not run on tags
    jobs:
      - test:
          filters: &filters-staging # this yaml anchor is setting these values to "filters-staging"
            branches:
              only: main
            tags:
              ignore: /.*/
      - deploy:
          requires:
            - test
          filters:
            <<: *filters-staging # this is calling the previously set yaml anchor
  production: # This workflow will only run on tags (specifically starting with 'v.') and will not run on branches
    jobs:
      - test:
          filters: &filters-production # this yaml anchor is setting these values to "filters-production"
            branches:
              ignore: /.*/
            tags:
              only: /^v.*/
      - deploy:
          requires:
            - test
          filters:
            <<: *filters-production # this is calling the previously set yaml anchor

Please note that all pasted data is publicly available.