# © Copyright IBM Corporation 2018, 2024
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

dist: bionic
group: beta
sudo: required
language: go

go:
  - "1.21.13"

services:
  - docker

env:
  global:
    - MAIN_BRANCH=v9.4.1
    - TAGCACHE_FILE=tagcache
    - RELEASE=r1

go_import_path: "github.com/ibm-messaging/mq-container"

# cache:
#   directories:
#     - downloads

jobs:
  allow_failures:
    - script: bash -e travis-build-scripts/trigger-release-checks.sh
  include:
    - stage: basic-build
      if: branch != v9.4.1 AND tag IS blank AND branch !~ /^ifix-/
      name: "Basic AMD64 build"
      os: linux
      env:
        - MQ_ARCHIVE_REPOSITORY_DEV=$MQ_9_4_1_ARCHIVE_REPOSITORY_DEV_AMD64
      script: bash -e travis-build-scripts/run.sh

    # CD Build

    - stage: global-tag
      if: (branch = v9.4.1 OR branch =~ ^ifix-*) AND type != pull_request OR tag =~ ^release-candidate*
      name: "Generate Global Tag"
      os: linux
      script: bash -e travis-build-scripts/global-tag.sh
    - stage: build
      if: branch = v9.4.1 OR tag =~ ^release-candidate*
      name: "Multi-Arch AMD64 build"
      os: linux
      env:
        - BUILD_ALL=true
        - MQ_ARCHIVE_REPOSITORY=$MQ_9_4_1_ARCHIVE_REPOSITORY_AMD64
        - MQ_ARCHIVE_REPOSITORY_DEV=$MQ_9_4_1_ARCHIVE_REPOSITORY_DEV_AMD64
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/run.sh
    - stage: build
      if: branch = v9.4.1 OR tag =~ ^release-candidate*
      name: "Multi-Arch S390X build"
      os: linux
      arch: s390x
      group: vms390
      env:
        - BUILD_ALL=true
        - TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
        - MQ_ARCHIVE_REPOSITORY=$MQ_9_4_1_ARCHIVE_REPOSITORY_S390X
        - MQ_ARCHIVE_REPOSITORY_DEV=$MQ_9_4_1_ARCHIVE_REPOSITORY_DEV_S390X
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/run.sh
    - stage: build
      if: branch = v9.4.1 OR tag =~ ^release-candidate*
      name: "Multi-Arch PPC64LE build"
      os: linux
      arch: ppc64le
      group: power-focal
      env:
        - BUILD_ALL=true
        - TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
        - MQ_ARCHIVE_REPOSITORY=$MQ_9_4_1_ARCHIVE_REPOSITORY_PPC64LE
        - MQ_ARCHIVE_REPOSITORY_DEV=$MQ_9_4_1_ARCHIVE_REPOSITORY_DEV_PPC64LE
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/run.sh
    - stage: push-manifest
      if: branch = v9.4.1 AND type != pull_request OR tag =~ ^release-candidate*
      name: "Push Manifest-list to registry"
      env:
        - PUSH_MANIFEST_ONLY=true
      script: bash -e travis-build-scripts/run.sh
    - stage: trigger-release-checks
      if: branch = v9.4.1 AND type != pull_request OR tag =~ ^release-candidate*
      name: "Trigger release-checks build"
      script: bash -e travis-build-scripts/trigger-release-checks.sh

    # ifix build started
    - stage: Check-upload-ifix-driver
      if: branch =~ ^ifix-
      name: "Check and upload ifix driver"
      os: linux
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/ifix-base-mq-driver-uploader.sh
    - stage: build-ifix
      if: branch =~ ^ifix-
      name: "Multi-Arch AMD64 build for ifix"
      os: linux
      env:
        - BUILD_ALL=true
        - MQ_ARCHIVE_REPOSITORY=${IFIX_BASE_MQ_DRIVER_ARCHIVE_REPOSITORY}/${MQ_SNAPSHOT_NAME}/IBM_MQ_ADVANCED_${MQ_VERSION}_AMD64.tar.gz
        - MQ_ARCHIVE_REPOSITORY_DEV=${IFIX_BASE_MQ_DRIVER_ARCHIVE_REPOSITORY}/${MQ_SNAPSHOT_NAME}/IBM_MQ_ADVANCED_DEV_${MQ_VERSION}_AMD64.tar.gz
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/run.sh
    - stage: build-ifix
      if: branch =~ ^ifix-
      name: "Multi-Arch S390X build for fix"
      os: linux
      arch: s390x
      group: vms390
      env:
        - BUILD_ALL=true
        - TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
        - MQ_ARCHIVE_REPOSITORY=${IFIX_BASE_MQ_DRIVER_ARCHIVE_REPOSITORY}/${MQ_SNAPSHOT_NAME}/IBM_MQ_ADVANCED_${MQ_VERSION}_S390X.tar.gz
        - MQ_ARCHIVE_REPOSITORY_DEV=${IFIX_BASE_MQ_DRIVER_ARCHIVE_REPOSITORY}/${MQ_SNAPSHOT_NAME}/IBM_MQ_ADVANCED_DEV_${MQ_VERSION}_S390X.tar.gz
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/run.sh
    - stage: build-ifix
      if: branch =~ ^ifix-
      name: "Multi-Arch PPC64LE build for ifix"
      os: linux
      arch: ppc64le
      group: power-focal
      env:
        - BUILD_ALL=true
        - TEST_OPTS_DOCKER="-run TestGoldenPathWithMetrics"
        - MQ_ARCHIVE_REPOSITORY=${IFIX_BASE_MQ_DRIVER_ARCHIVE_REPOSITORY}/${MQ_SNAPSHOT_NAME}/IBM_MQ_ADVANCED_${MQ_VERSION}_PPCLE.tar.gz
        - MQ_ARCHIVE_REPOSITORY_DEV=${IFIX_BASE_MQ_DRIVER_ARCHIVE_REPOSITORY}/${MQ_SNAPSHOT_NAME}/IBM_MQ_ADVANCED_DEV_${MQ_VERSION}_PPCLE.tar.gz
      script:
      - bash travis-build-scripts/travis-log-keepalive.sh &
      - bash -e travis-build-scripts/run.sh
    - stage: push-manifest-ifix
      if: branch =~ ^ifix-*
      name: "Push Manifest-list to registry"
      env:
        - PUSH_MANIFEST_ONLY=true
        - BUILD_MANIFEST=true
      script: bash -e travis-build-scripts/run.sh
    - stage: build-manifest-ifix
      if: branch =~ ^ifix-
      name: "Generate build manifest file"
      env:
        - BUILD_MANIFEST=true
      script: bash -e travis-build-scripts/run.sh
    - stage: Sync-build-manifest-ifix
      if: branch =~ ^ifix-
      name: "Sync build manifest with stage branch"
      os: linux
      script: 
      - bash -e travis-build-scripts/manifest-sync.sh

before_install:
  - make install-build-deps
  - make install-credential-helper

install:
  - echo nothing

before_script: echo nothing

after_success:
  - make lint
