---
'version': 2
'plan':
    'project-key': 'AGH'
    'key': 'AHBRTSPECS'
    'name': 'AdGuard Home - Build and run tests'
'variables':
    'dockerFrontend': 'adguard/home-js-builder:1.1'
    'dockerGo': 'adguard/go-builder:1.22.3--1'
    'channel': 'development'

'stages':
  - 'Tests':
        'manual': false
        'final': false
        'jobs':
          - 'Test frontend'
          - 'Test backend'

  - 'Frontend':
        manual: false
        final: false
        jobs:
          - 'Build frontend'

  - 'Artifact':
        manual: false
        final: false
        jobs:
          - 'Artifact'

'Test frontend':
    'docker':
        'image': '${bamboo.dockerFrontend}'
        'volumes':
            '${system.YARN_DIR}': '${bamboo.cacheYarn}'
    'key': 'JSTEST'
    'other':
        'clean-working-dir': true
    'tasks':
      - 'checkout':
            'force-clean-build': true
      - 'script':
            'interpreter': 'SHELL'
            'scripts':
              - |
                #!/bin/sh

                set -e -f -u -x

                make VERBOSE=1 js-deps js-lint js-test
    'final-tasks':
      - 'clean'
    'requirements':
      - 'adg-docker': 'true'

'Test backend':
    'docker':
        'image': '${bamboo.dockerGo}'
        'volumes':
            '${system.GO_CACHE_DIR}': '${bamboo.cacheGo}'
            '${system.GO_PKG_CACHE_DIR}': '${bamboo.cacheGoPkg}'
    'key': 'GOTEST'
    'other':
        'clean-working-dir': true
    'tasks':
      - 'checkout':
            'force-clean-build': true
      - 'script':
            'interpreter': 'SHELL'
            'scripts':
              - |
                #!/bin/sh

                set -e -f -u -x

                make\
                    GOMAXPROCS=1\
                    VERBOSE=1\
                    go-deps go-tools go-lint

                make\
                    VERBOSE=1\
                    go-test
    'final-tasks':
      - 'clean'
    'requirements':
      - 'adg-docker': 'true'

'Build frontend':
    'artifacts':
      - 'name': 'AdGuardHome frontend'
        'pattern': 'build/**'
        'shared': true
        'required': true
    'docker':
        'image': '${bamboo.dockerFrontend}'
        'volumes':
            '${system.YARN_DIR}': '${bamboo.cacheYarn}'
    'key': 'BF'
    'other':
         'clean-working-dir': true
    'tasks':
      - 'checkout':
            'force-clean-build': true
      - 'script':
            'interpreter': 'SHELL'
            'scripts':
              - |-
                #!/bin/sh

                set -e -f -u -x

                make\
                        VERBOSE=1\
                        js-deps js-build
    'requirements':
      - 'adg-docker': 'true'

'Artifact':
    'artifact-subscriptions':
      - 'artifact': 'AdGuardHome frontend'
    'artifacts':
      - 'name': 'AdGuardHome_windows_amd64'
        'pattern': 'dist/AdGuardHome_windows_amd64.zip'
        'shared': true
        'required': true
      - 'name': 'AdGuardHome_darwin_amd64'
        'pattern': 'dist/AdGuardHome_darwin_amd64.zip'
        'shared': true
        'required': true
      - 'name': 'AdGuardHome_linux_amd64'
        'pattern': 'dist/AdGuardHome_linux_amd64.tar.gz'
        'shared': true
        'required': true
    'docker':
        'image': '${bamboo.dockerGo}'
        'volumes':
         '${system.GO_CACHE_DIR}': '${bamboo.cacheGo}'
         '${system.GO_PKG_CACHE_DIR}': '${bamboo.cacheGoPkg}'
    'key': 'ART'
    'other':
         'clean-working-dir': true
    'tasks':
      - 'checkout':
            'force-clean-build': true
      - 'script':
            'interpreter': 'SHELL'
            'scripts':
              - |-
                #!/bin/sh

                set -e -f -u -x

                make\
                        ARCH="amd64"\
                        CHANNEL=${bamboo.channel}\
                        FRONTEND_PREBUILT=1\
                        OS="windows darwin linux"\
                        PARALLELISM=1\
                        SIGN=0\
                        VERBOSE=2\
                        build-release
    'requirements':
      - 'adg-docker': 'true'

'branches':
    'create': 'for-pull-request'
    'delete':
        'after-deleted-days': 1
        'after-inactive-days': 5
    'integration':
        'push-on-success': false
        'merge-from': 'AdGuard Home - Build and run tests'
    'link-to-jira': true

'notifications':
  - 'events':
      - 'plan-status-changed'
    'recipients':
      - 'webhook':
            'name': 'Build webhook'
            'url': 'http://prod.jirahub.service.eu.consul/v1/webhook/bamboo'

'labels': []
'other':
    'concurrent-build-plugin': 'system-default'

'branch-overrides':
    # rc-vX.Y.Z branches are the release candidate branches. They are created
    # from the release branch and are used to build the release candidate
    # images.
  - '^rc-v[0-9]+\.[0-9]+\.[0-9]+':
        # Set the default release channel on the release branch to beta, as we
        # may need to build a few of these.
        'variables':
            'dockerFrontend': 'adguard/home-js-builder:1.1'
            'dockerGo': 'adguard/go-builder:1.22.3--1'
            'channel': 'candidate'
