Commit 7e2204d1 authored by Paulo Pereira's avatar Paulo Pereira
Browse files

feat: adiciona script para atualizar o Zammad, para criar novos estados dos...

feat: adiciona script para atualizar o Zammad, para criar novos estados dos tickets e para customizar a interface
parent 92f741a0
# Script Customização Central de Serviços Digitais - Zammad
Esse repositório contém o script para customizar alguns arquivos da instalação do Zammad.
Esse repositório contém scripts para atualizar e customizar alguns arquivos e configurações da instalação do Zammad.
## Uso
```bash
.
├── layout-customization # Folder that has files to customize the UI of Zammad
│  ├── customized-files # Folder that has the customized files
│  │ ├── custom.css # CSS file responsible for adding color to the login page
│  │ ├── dashboard.jst.eco # File responsible for removing the First Steps tab from the logged page
│  │ ├── index.html.erb # File responsible for adding title to the Knowledge base
│  │ ├── login.jst.eco # File responsible for adding text and images to the login page
│  │ ├── std-fundo_azulescuro.JPG # Logo of STD
│  │ ├── UFRPE_Digital-08.png # Logo of UFRPE Digital
│  │ └── layout-std-customization.sh #
│  └── layout-std-customization.sh # Script to customize to the UI of Zammad
├── settings-customization # Folder that has files to customize the settings of Zammad
│  ├── add_new_states.rb # ruby file with commands to add new states to the system
│  ├── filter_states.rb # ruby file with commands to filter which states customers can add to tickets
│  └── update-zammad.sh # Script to update to the newest version of Zammad
├── update-zammad # Folder that has the update-zammad.sh
│  └── update-zammad.sh # Script to update to the newest version of Zammad
└── README.md # This file
```
Esse script deve ser usado em qualquer momento que o zammad for resetado ou atualizado. Esse script deve ser executado na máquina host que estará executando os container do zammad, principalmente o container `railsserver`.
## Uso
Esses scripts devem ser usados em qualquer momento que o zammad for resetado ou atualizado. Esses scripts devem ser executado na máquina host que estará executando os container do zammad, principalmente o container `railsserver`.
## EXTRA - Como Atualizar o Zammad
Siga os passos a seguir para atualizar para a versão mais recente do zammad via docker-compose.
Siga os passos a seguir ou execute o script `update-zammad/update-zammad.sh` para atualizar para a versão mais recente do zammad via docker-compose.
1. Acesse o terminal do container que tenha o prefixo railsserver_1 para limpar o cache:
```bash
......
#!/usr/bin/env bash
CONTAINER_ID=$(docker ps | grep railsserver | awk '{print $1}')
CONTAINER_RAILSSERVER_ID=$(docker ps | grep railsserver | awk '{print $1}')
CONTAINER_NGINX_ID=$(docker ps | grep nginx | awk '{print $1}')
if [ -z "$CONTAINER_ID" ]
if [ -z "$CONTAINER_RAILSSERVER_ID" ]
then
echo "Rails Container is not running"
else
BASE_DIR_ZAMMAD=$(docker inspect $CONTAINER_ID | grep '"Source":' | awk {'print $2'} | tr -d '"' | tr -d ',')
BASE_DIR_ZAMMAD=$(docker inspect $CONTAINER_RAILSSERVER_ID | grep '"Source":' | awk {'print $2'} | tr -d '"' | tr -d ',')
echo "[COPYING CUSTOMIZED FILES TO CONTAINER'S VOLUME...] $(date)"
cp customized-files/UFRPE_Digital-08.png $BASE_DIR_ZAMMAD/public/assets/images/UFRPE_Digital-08.png
......@@ -18,13 +18,13 @@ else
cp customized-files/custom.css $BASE_DIR_ZAMMAD/app/assets/stylesheets/custom/custom.css
echo "[INSTALLING NODEJS...] $(date)"
docker exec -u root $CONTAINER_ID bash -c "apt update && apt install -y nodejs"
docker exec -u root $CONTAINER_RAILSSERVER_ID bash -c "apt update && apt install -y nodejs"
echo "[COMPILING ASSETS...] $(date)"
docker exec $CONTAINER_ID rake assets:precompile
docker exec $CONTAINER_RAILSSERVER_ID rake assets:precompile
echo "[RESTARTING RAILS SERVER CONTAINER...] $(date)"
docker restart $CONTAINER_ID
docker restart $CONTAINER_RAILSSERVER_ID
echo "[RESTARTING NGINX CONTAINER...] $(date)"
docker restart $CONTAINER_NGINX_ID
......
Ticket::State.create_or_update(name: 'pendente', state_type: Ticket::StateType.find_by(name: 'open'), created_by_id: 1,updated_by_id: 1,)
Ticket::State.create_or_update(name: 'aguardando resposta', state_type: Ticket::StateType.find_by(name: 'open'), created_by_id: 1,updated_by_id: 1,)
Ticket::State.create_or_update(name: 'resolvido', state_type: Ticket::StateType.find_by(name: 'open'), created_by_id: 1,updated_by_id: 1,)
Ticket::State.create_or_update(name: 'retorno', state_type: Ticket::StateType.find_by(name: 'open'), created_by_id: 1,updated_by_id: 1,)
attribute = ObjectManager::Attribute.get(object: 'Ticket',name: 'state_id',)
attribute.data_option[:filter] = Ticket::State.by_category(:viewable).pluck(:id)
attribute.screens[:create_middle]['ticket.agent'][:filter] = Ticket::State.by_category(:viewable_agent_new).pluck(:id)
attribute.screens[:create_middle]['ticket.customer'][:filter] = Ticket::State.by_category(:viewable_customer_new).pluck(:id)
attribute.screens[:edit]['ticket.agent'][:filter] = Ticket::State.by_category(:viewable_agent_edit).pluck(:id)
attribute.screens[:edit]['ticket.customer'][:filter] = Ticket::State.by_category(:viewable_customer_edit).pluck(:id)
attribute.save!
attribute.screens['create_middle']['ticket.agent']['filter'] = Ticket::State.where(name: ['new','open','pendente','aguardando resposta','resolvido','retorno','closed']).pluck(:id)
attribute.screens['edit']['ticket.agent']['filter'] = Ticket::State.where(name: ['open','pendente','aguardando resposta','resolvido','retorno','closed']).pluck(:id)
attribute.screens['create_middle']['ticket.customer']['filter'] = Ticket::State.where(name: ['']).pluck(:id)
attribute.screens['edit']['ticket.customer']['filter'] = Ticket::State.where(name: ['']).pluck(:id)
attribute.save!
ObjectManager::Attribute.get(object: 'Ticket',name: 'state_id',).screens['create_middle']['ticket.customer']['filter']
ObjectManager::Attribute.get(object: 'Ticket',name: 'state_id',).screens['edit']['ticket.customer']['filter']
\ No newline at end of file
attribute.screens['create_middle']['ticket.agent']['filter'] = Ticket::State.where(name: ['new','open','pendente','aguardando resposta','resolvido','retorno','closed']).pluck(:id)
attribute.screens['edit']['ticket.agent']['filter'] = Ticket::State.where(name: ['open','pendente','aguardando resposta','resolvido','retorno','closed']).pluck(:id)
attribute.screens['create_middle']['ticket.customer']['filter'] = Ticket::State.where(name: ['']).pluck(:id)
attribute.screens['edit']['ticket.customer']['filter'] = Ticket::State.where(name: ['']).pluck(:id)
attribute.save!
ObjectManager::Attribute.get(object: 'Ticket',name: 'state_id',).screens['create_middle']['ticket.customer']['filter']
ObjectManager::Attribute.get(object: 'Ticket',name: 'state_id',).screens['edit']['ticket.customer']['filter']
\ No newline at end of file
#!/usr/bin/env bash
# script para adicionar novos estados ao Zammad
# os novos estados adicionados são: pendente, aguardando resposta, resolvido e retorno
CONTAINER_RAILSSERVER_ID=$(docker ps | grep railsserver | awk '{print $1}')
while getopts ":haf-:" opt; do
case ${opt} in
h)
echo ''
echo 'Usage: ./settings-std-customization.sh [OPTIONS]'
echo ''
echo 'script para adicionar novos estados ao Zammad, deve ser executado no host, e não nos containers.'
echo ''
echo 'Options:'
echo ' -a, --add-new-states Adiciona novos estados ao Zammad da STD. Os novos chamados são:'
echo ' pendente, aguardando resposta, resolvido e retorno. Também'
echo ' os adiciona na UI e filtra para qual estado os usuários'
echo ' podem atualizar o chamado(i.e. fechado).'
echo ' -f, --filter-states Apenas filtra para qual estado os usuários'
echo ' podem atualizar o chamado (i.e. fechado).'
echo ' -v, --version Print version information and quit'
exit 1
;;
a)
# adicionar novos estados
echo "[$(date)] Adicionando Novos Estados..."
docker exec -u root $CONTAINER_RAILSSERVER_ID rails r add_new_states.rb
echo "[$(date)] Novos Estados Adicionados!"
echo ""
echo "[$(date)] Reconstruindo index Elastichsearch..."
# reconstrói o index do elasticsearch
docker exec $CONTAINER_RAILSSERVER_ID rails r "Setting.set('es_url','http://zammad-docker-compose_zammad-elasticsearch_1:9200')"
docker exec $CONTAINER_RAILSSERVER_ID rake zammad:searchindex:rebuild
echo "[$(date)] Index Elastichsearch Recontruído!"
exit 1
;;
f)
# filtra quais estados o usuário pode usar
echo "[$(date)] Filtrando os Estados..."
docker exec -u root $CONTAINER_RAILSSERVER_ID rails r filter_states.rb
echo "[$(date)] Filtro Completo!"
echo ""
echo "[$(date)] Reconstruindo index Elastichsearch..."
# reconstrói o index do elasticsearch
docker exec $CONTAINER_RAILSSERVER_ID rails r "Setting.set('es_url','http://zammad-docker-compose_zammad-elasticsearch_1:9200')"
docker exec $CONTAINER_RAILSSERVER_ID rake zammad:searchindex:rebuild
echo "[$(date)] Index Elastichsearch Recontruído!"
exit 1
;;
-)
case ${OPTARG} in
"add-new-states")
# adicionar novos estados
echo "[$(date)] Adicionando Novos Estados..."
docker exec -u root $CONTAINER_RAILSSERVER_ID rails r add_new_states.rb
echo "[$(date)] Novos Estados Adicionados!"
echo ""
echo "[$(date)] Reconstruindo index Elastichsearch..."
# reconstrói o index do elasticsearch
docker exec $CONTAINER_RAILSSERVER_ID rails r "Setting.set('es_url','http://zammad-docker-compose_zammad-elasticsearch_1:9200')"
docker exec $CONTAINER_RAILSSERVER_ID rake zammad:searchindex:rebuild
echo "[$(date)] Index Elastichsearch Recontruído!"
exit 1
;;
"--filter-states")
# filtra quais estados o usuário pode usar
echo "[$(date)] Filtrando os Estados..."
docker exec -u root $CONTAINER_RAILSSERVER_ID rails r filter_states.rb
echo "[$(date)] Filtro Completo!"
echo ""
echo "[$(date)] Reconstruindo index Elastichsearch..."
# reconstrói o index do elasticsearch
docker exec $CONTAINER_RAILSSERVER_ID rails r "Setting.set('es_url','http://zammad-docker-compose_zammad-elasticsearch_1:9200')"
docker exec $CONTAINER_RAILSSERVER_ID rake zammad:searchindex:rebuild
echo "[$(date)] Index Elastichsearch Recontruído!"
exit 1
;;
"help")
echo ''
echo 'Usage: ./settings-std-customization.sh [OPTIONS]'
echo ''
echo 'script para adicionar novos estados ao Zammad, deve ser executado no host, e não nos containers.'
echo ''
echo 'Options:'
echo ' -a, --add-new-states Adiciona novos estados ao Zammad da STD. Os novos chamados são:'
echo ' pendente, aguardando resposta, resolvido e retorno. Também'
echo ' os adiciona na UI e filtra para qual estado os usuários'
echo ' podem atualizar o chamado(i.e. fechado).'
echo ' -f, --filter-states Apenas filtra para qual estado os usuários'
echo ' podem atualizar o chamado (i.e. fechado).'
echo ' -v, --version Print version information and quit'
exit 1
;;
esac
esac
done
\ No newline at end of file
#!/usr/bin/env bash
while getopts ":h-:" opt; do
case ${opt} in
h)
echo ''
echo 'Usage: ./settings-std-customization.sh [OPTIONS]'
echo ''
echo 'script para adicionar novos estados ao Zammad, deve ser executado no host, e não nos containers.'
echo ''
echo 'Options:'
echo ' -a, --add-new-states Adiciona novos estados ao Zammad da STD. Os novos chamados são:'
echo ' pendente, aguardando resposta, resolvido e retorno. Também'
echo ' os adiciona na UI e limita para qual estado os usuários'
echo ' podem atualizar o chamado(i.e. fechado).'
echo ' -f, --filter-states Apenas limita para qual estado os usuários'
echo ' podem atualizar o chamado (i.e. fechado).'
echo ' -v, --version Print version information and quit'
exit 1
;;
-)
case ${OPTARG} in
"add-new-states")
echo "ADD NEW STATES NOW"
;;
"help")
echo ''
echo 'Usage: ./settings-std-customization.sh [OPTIONS]'
echo ''
echo 'script para adicionar novos estados ao Zammad, deve ser executado no host, e não nos containers.'
echo ''
echo 'Options:'
echo ' -a, --add-new-states Adiciona novos estados ao Zammad da STD. Os novos chamados são:'
echo ' pendente, aguardando resposta, resolvido e retorno. Também'
echo ' os adiciona na UI e limita para qual estado os usuários'
echo ' podem atualizar o chamado(i.e. fechado).'
echo ' -f, --filter-states Apenas limita para qual estado os usuários'
echo ' podem atualizar o chamado (i.e. fechado).'
echo ' -v, --version Print version information and quit'
exit 1
;;
esac
esac
done
\ No newline at end of file
#!/usr/bin/env bash
CONTAINER_RAILSSERVER_ID=$(docker ps | grep railsserver | awk '{print $1}')
if [ -z "$CONTAINER_RAILSSERVER_ID" ]
then
echo "Rails Container is not running"
else
echo "[$(date)] Updating Zammad"
docker exec $CONTAINER_RAILSSERVER_ID rails r "Cache.clear"
BASE_DIR_ZAMMAD=$(docker inspect $CONTAINER_RAILSSERVER_ID | grep '"Source":' | awk {'print $2'} | tr -d '"' | tr -d ',')
rm -rf $BASE_DIR_ZAMMAD/tmp/cache/*
rm -rf $BASE_DIR_ZAMMAD/public/assets/app/views/*
docker-compose -f /root/zammad-docker-compose/docker-compose.yml stop
git pull
docker-compose -f /root/zammad-docker-compose/docker-compose.yml pull
docker-compose -f /root/zammad-docker-compose/docker-compose.yml up
fi
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment