# name: push-pipeline
# on:
#   push:
#     branches:
#       - master
#       - ^v[0-9]*.[0-9]*.x$
#     tags:
#       - "*"
# defaults:
#   run:
#     working-directory: litmus-portal
#     shell: bash

# jobs:
#   backend-checks:
#     runs-on: ubuntu-latest
#     steps:
#       - name: Checkout repository
#         uses: actions/checkout@v2
#       - uses: actions/setup-go@v2
#         with:
#           go-version: "1.16" # By default, the go version is v1.15 in runner.
#       - run: |
#           make backend-services-checks

#   frontend-checks:
#     runs-on: ubuntu-latest
#     steps:
#       - name: Checkout repository
#         uses: actions/checkout@v2
#       - uses: actions/setup-node@v3
#         with:
#           node-version: 16.14.2
#       - run: |
#           make frontend-services-checks

#   get-envs:
#     runs-on: ubuntu-latest
#     steps:
#       - name: Checkout repository
#         uses: actions/checkout@v2
#       - run: |
#           img_tag=""
#           array=(`echo ${GITHUB_REF} | sed 's/\//\n/g'`)
#           if [ ${array[1]} == "tags" ]
#           then
#               echo "tag build"
#               img_tag=${GITHUB_REF#refs/*/}
#           else
#               echo "non tag build"
#               img_tag="ci"
#           fi
#           # This is a condition where image tag looks like "pull/<pullrequest-name>" during pull request build
#           NEW_IMG_TAG=`echo $img_tag | sed "s/\//-/g"`
#           echo $NEW_IMG_TAG
#           echo export IMG_TAG=$NEW_IMG_TAG >> env-vars
#           echo export GRAPHQL_SERVER_IMAGE="litmusportal-server" >> env-vars
#           echo export AUTHENTICATION_SERVER_IMAGE="litmusportal-auth-server" >> env-vars
#           echo export FRONTEND_IMAGE="litmusportal-frontend" >> env-vars
#           echo export SUBSCRIBER_IMAGE="litmusportal-subscriber" >> env-vars
#           echo export EVENT_TRACKER="litmusportal-event-tracker" >> env-vars
#           echo export UPGRADE_AGENT_CP="upgrade-agent-cp" >> env-vars
#           echo export DEX_SERVER="litmusportal-dex-server" >> env-vars

#       - name: Uploading envs
#         uses: actions/upload-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal/env-vars

#   docker-build-and-push-graphql-server:
#     runs-on: ubuntu-latest
#     needs:
#       - get-envs
#       - backend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push graphql server docker image
#         env:
#           IMAGE_NAME: ${GRAPHQL_SERVER_IMAGE}
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           DIRECTORY: "graphql-server"
#         run: |
#           source env-vars
#           make push-portal-component

#   docker-build-and-push-authentication-server:
#     runs-on: ubuntu-latest
#     needs:
#       - get-envs
#       - backend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push auth server docker image
#         env:
#           IMAGE_NAME: ${AUTHENTICATION_SERVER_IMAGE}
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           DIRECTORY: "authentication"
#         run: |
#           source env-vars
#           make push-portal-component

#   docker-build-and-push-subscriber:
#     runs-on: ubuntu-latest
#     needs:
#       - get-envs
#       - backend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push subscriber docker image
#         env:
#           IMAGE_NAME: ${SUBSCRIBER_IMAGE}
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           DIRECTORY: "cluster-agents/subscriber/"
#         run: |
#           source env-vars
#           make push-portal-component

#   docker-build-and-push-event-tracker:
#     runs-on: ubuntu-latest
#     needs:
#       - get-envs
#       - backend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push event tracker docker image
#         env:
#           IMAGE_NAME: ${EVENT_TRACKER}
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           DIRECTORY: "cluster-agents/event-tracker/"
#         run: |
#           source env-vars
#           make push-portal-component

#   docker-build-and-push-upgrade-agent-cp:
#     runs-on: ubuntu-latest
#     needs:
#       - get-envs
#       - backend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push control plane upgrade agent docker image
#         env:
#           IMAGE_NAME: ${UPGRADE_AGENT_CP}
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           DIRECTORY: "upgrade-agents/control-plane/"
#         run: |
#           source env-vars
#           make push-portal-component

#   ## TODO: the build time for multiarch frontend image is higher so it is used in the release
#   ## builds only need to optimize the build duration and also add it with ci tag
#   ## Build and push / base path
#   docker-build-and-push-frontend:
#     runs-on: ubuntu-latest
#     strategy:
#       matrix:
#         frontend:
#           [
#             { "image_name": "litmusportal-frontend", "path": "" },
#             {
#               "image_name": "litmusportal-frontend-path-litmuschaos",
#               "path": "/litmuschaos",
#             },
#           ]
#     needs:
#       - get-envs
#       - frontend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push frontend docker image ( ${{ matrix.frontend.image_name }} )
#         env:
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           timestamp: ${timestamp}
#           PUBLIC_URL: ${{ matrix.frontend.path }}
#         run: |
#           source env-vars
#           FRONTEND_IMAGE=${{ matrix.frontend.image_name }}
#           timestamp=`date "+%s"`
#           make push-frontend

#   docker-build-and-push-dex-server:
#     runs-on: ubuntu-latest
#     needs:
#       - get-envs
#       - backend-checks
#     steps:
#       - name: Checkout code
#         uses: actions/checkout@v2

#       - name: Downloading image artficate
#         uses: actions/download-artifact@v2
#         with:
#           name: env_artifact
#           path: litmus-portal

#       - name: Set up Docker Buildx
#         id: buildx
#         uses: docker/setup-buildx-action@v1
#         with:
#           version: latest

#       - name: Login to DockerHub
#         uses: docker/login-action@v1
#         with:
#           username: ${{ secrets.DOCKERHUB_USERNAME }}
#           password: ${{ secrets.DOCKERHUB_TOKEN }}

#       - name: Push dex server docker image
#         env:
#           IMAGE_NAME: ${DEX_SERVER}
#           IMG_TAG: ${IMG_TAG}
#           PLATFORMS: ${{ secrets.PLATFORMS }}
#           REPONAME: ${{ secrets.REPONAME }}
#           DIRECTORY: "dex-server"
#         run: |
#           source env-vars
#           make push-portal-component
