image: node:18.14.0

definitions:
    steps:
        - step: &testesUnitarios
                name: Teste
                caches:
                    - node
                script:
                    - echo "Realizando testes unitários"
                    - rm -f .env
                    - touch .env
                    - echo "AMBIENTE=desenvolvimento" >> .env
                    - echo "PORTA=8080" >> .env
                    - echo "PORTA_SOCKET=8081" >> .env
                    - echo "INTERVALO_VERIFICAR_SESSOES_INATIVAS=*/10 * * * *" >> .env
                    - echo "TEMPO_MAXIMO_SESSAO_INATIVA=30" >> .env
                    - echo "INTERVALO_SALVAR_METRICAS_BANCO=*/10 * * * *" >> .env
                    - echo "SLICE_METRICAS=50" >> .env
                    - echo "INTERVALO_SALVAR_EVENTOS_BANCO=*/10 * * * *" >> .env
                    - echo "SLICE_EVENTOS=50" >> .env
                    - apt-get update
                    - apt-get install zip build-essential -y
                    - npm install
                    - npm run test
        - step: &buildProducao
                name: Build
                caches:
                    - node
                script:
                    - echo "Compilando em produção"
                    - rm -f .env
                    - touch .env
                    - echo "AMBIENTE=producao" >> .env
                    - echo "PORTA=8080" >> .env
                    - echo "PORTA_SOCKET=8081" >> .env
                    - echo "DATABASE_HOST=$DATABSE_HOST" >> .env
                    - echo "DATABASE_PORT=$DATABASE_PORT" >> .env
                    - echo "DATABASE_USER=$USER_DEFAULT_PRODUCAO" >> .env
                    - echo "DATABASE_PASSWORD=$PASSWORD_DEFAULT_PRODUCAO" >> .env
                    - echo "CACHE_HOST=$CACHE_HOST" >> .env
                    - echo "CACHE_PORT=$CACHE_PORT" >> .env
                    - echo "BASE_API_GESTOR_URL=$BASE_API_GESTOR_URL" >> .env
                    - echo "TOKEN_CHATBOT_OMNICOM=a93912d8-acfd-4308-9f05-fcaff6e25d44" >> .env
                    - echo "TOKEN_CHATBOT_OMNICOM_DEV=a86edab6-7110-470a-94cc-ecd3813e502f" >> .env
                    - echo "URL_API_WSTT=https://wstt.omnilink.com.br/iasws/iasws.asmx?wsdl" >> .env
                    - echo "INTERVALO_VERIFICAR_SESSOES_INATIVAS=*/10 * * * *" >> .env
                    - echo "TEMPO_MAXIMO_SESSAO_INATIVA=30" >> .env
                    - echo "INTERVALO_SALVAR_METRICAS_BANCO=*/10 * * * *" >> .env
                    - echo "SLICE_METRICAS=50" >> .env
                    - echo "INTERVALO_SALVAR_EVENTOS_BANCO=*/10 * * * *" >> .env
                    - echo "SLICE_EVENTOS=50" >> .env
                    - echo "TAMANHO_MAXIMO_REQUISICAO=2" >> .env
                    - apt-get update
                    - apt-get install zip build-essential -y
                    - npm install
                    - npm run build
                    - zip -r producao.zip dist node_modules .env package.json .platform
                    - echo "Compilação concluída"
                artifacts:
                    - producao.zip
pipelines:
  branches:
    master:
        - step: *testesUnitarios
        - step: *buildProducao
        - step:
              name: Deploy para produção
              deployment: Production
              trigger: automatic 
              script:
                  - echo "Fazendo deploy para o ambiente de produção"
                  - pipe: atlassian/aws-elasticbeanstalk-deploy:1.1.0
                    variables:
                      AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID_DEPLOY
                      AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY_DEPLOY
                      AWS_DEFAULT_REGION: 'us-east-2'
                      APPLICATION_NAME: $APPLICATION_NAME
                      ENVIRONMENT_NAME: $ENVIRONMENT_NAME
                      ZIP_FILE: 'producao.zip'
                      S3_BUCKET: $BUCKET_DEPLOY_PRODUCAO
                      VERSION_LABEL: 'API_CHATBOT_PRODUCAO__${BITBUCKET_COMMIT:0:8}'
                  - echo "Deploy API producao"
