From b76ef2475d6f5d890ceb7ed525fab3b62f1ce18a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Sun, 6 Aug 2023 20:42:23 -0300 Subject: [PATCH 1/9] fix (readme): compile and run instructions --- README.md | 4 ++-- README.pt-br.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b8d81e1..7b4e70a 100644 --- a/README.md +++ b/README.md @@ -214,12 +214,12 @@ Basic manual compilation and run:
  • Mqtt broker: -
    leandro@leandro-laptop:~$ go run oktopus/backend/services/mochi/cmd/main.go -redis "127.0.0.1:6379"
    +
    leandro@leandro-laptop:~$ cd oktopus/backend/services/mochi/ && go run cmd/main.go -redis "127.0.0.1:6379"
  • TR-369 controller:
    -leandro@leandro-laptop:~$ go run oktopus/backend/services/controller/cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"
    +leandro@leandro-laptop:~$ cd oktopus/backend/services/controller/ && go run cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"
  • Socketio server: diff --git a/README.pt-br.md b/README.pt-br.md index bda4b97..0fe2757 100644 --- a/README.pt-br.md +++ b/README.pt-br.md @@ -214,12 +214,12 @@ Compilação manual básica e execução:
  • Broker MQTT: -
    leandro@leandro-laptop:~$ vá executar oktopus/backend/services/mochi/cmd/main.go -redis "127.0.0.1:6379"
    +
    leandro@leandro-laptop:~$ cd oktopus/backend/services/mochi/ && go run cmd/main.go -redis "127.0.0.1:6379"
  • Controlador TR-369: -
    -leandro@leandro-laptop:~$ execute oktopus/backend/services/controller/cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"
    +
    +leandro@leandro-laptop:~$ cd oktopus/backend/services/controller/ && go run cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"
  • Servidor socketio: From 0da43097f4a1e12c8796130d887b227ae2268a52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Sun, 6 Aug 2023 22:13:16 -0300 Subject: [PATCH 2/9] chore: index page title --- frontend/src/pages/_app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/_app.js b/frontend/src/pages/_app.js index b22cb8f..7bc21fb 100644 --- a/frontend/src/pages/_app.js +++ b/frontend/src/pages/_app.js @@ -28,7 +28,7 @@ const App = (props) => { - Oktopus + Oktopus | TR-369 Controller Date: Wed, 9 Aug 2023 07:42:09 -0300 Subject: [PATCH 3/9] chore: remove pt-br readme --- README.md | 5 - README.pt-br.md | 336 ------------------------------------------------ 2 files changed, 341 deletions(-) delete mode 100644 README.pt-br.md diff --git a/README.md b/README.md index 7b4e70a..c193a36 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,6 @@


    -
    • Introduction:

      diff --git a/README.pt-br.md b/README.pt-br.md deleted file mode 100644 index 0fe2757..0000000 --- a/README.pt-br.md +++ /dev/null @@ -1,336 +0,0 @@ -

      - -

      -
      - -
        -
      • -

        Introdução:

        -
      • -
      -

      -Este repositório tem como intuito fomentar o desenvolvimento de uma plataforma de gerência multi-vendor para IoTs. Todo dispositivo que seguir o protocolo TR-369 poderá ser gerenciado. O objetivo principal é facilitar e unificar a gerência de dispositivos, o que gera inúmeros benefícios para o usuário final e prestadores de serviços, suprimindo as demandas que as tecnologias de hoje exigem: interconexão de dispositivos, coleta de dados, rápidez, disponibilidade e muito mais. -

      -
        -
      • -

        TR-069 ---> TR-369 :

        -
      • -
      -

      -O advento da Internet das Coisas traz inúmeras oportunidades e desafios pra os prestadores de serviços, com mais de um bilhão de dispositivos espalhados pelo globo hoje, fazendo uso do TR-069, qual é o futuro do protocolo e o que podemos esperar pela frente? -

      -

      -O CWMP(CPE Wan Management Protocol), mais conhecido como TR-069, abriu muitas portas para o ecossistema de provedores, por meio dele é possível entregar serviços com agilidade, que servem ou ultrapassam as expectativas do cliente, fazendo uma gestão pró-ativa e segura da rede, tendo em vista também o menor custo e a maior eficiência para os prestadores de serviços. -

      -

      -Com a ascensão do que hoje chamamos de casa inteligente, a Internet das Coisas e a demanda por ambientes cada vez mais interconectadas e baseados em nuvem, novas demandas e obstáculos surgiram, abrindo a porta para a criação de uma nova forma de comunicação que supra as necessidades do mercado atual. -

      -

      -Existe uma corrida acirrada para monetizar os dispostivos IoT que hoje fazem parte da casa conectada e de outros ambientes. Como resultado disso, muitas empresas estão criando suas próprias soluções proprietárias; isso é compreensível dada tamanha pressão gerada pela promessa da monetização da Casa Inteligente. Infelizmente, essas aplicações contribuem para um ecossistema pobre, onde um provedor acaba dependente e limitado a uma solução vertical, de um único Vendor. Isso gera um ambiente de pouca competição (o que leva a maiores riscos), menos inovação, e o potencial de soluções com custos muito elevados. -

      -

      -As tecnologias por trás do Wi-Fi, a conectividade entre dispositivos, a Casa Inteligente e os IoTs estão em constante evolução e aprimoramento. É importante que quando os prestadores de serviços forem buscar uma solução, busquem por algo que seja a "prova de futuro", pensando sempre adiante. -

      -

      -Buscando resolver os desafios citados anteriormente, provedores e fabricantes juntos, desenvolveram o USP (User Services Platform), definido pela norma TR-369 da Broadband Forum, sendo este, a evolução natural do TR-069. Este novo padrão foi desenhado para ser flexível, seguro, escalonável e padronizado, para atender as demandas de um mundo conectado hoje, e no futuro. -

      - -
        -
      • -

        Empresas/Instituições envolvidas na criação do TR-369:

        -
          -
        • - Google -
        • -
        • - Nokia -
        • -
        • - Huawei -
        • -
        • - Axiros -
        • -
        • - Orange -
        • -
        • - Commscope -
        • -
        • - Assia -
        • -
        • - AT&AT -
        • -
        • - NEC -
        • -
        • - Arris -
        • -
        • - QA Cafe -
        • -
        -
      • -
      - --------------------------------------------------------------------------------------------------------------------------------------------------------- - -
        -
      • -

        Topologia:

        -
      • -
      - - - -![image](https://github.com/leandrofars/oktopus/assets/83298718/b1d5a0c7-4567-464c-bc9b-1956ef5c5f3b) - -![image](https://github.com/leandrofars/oktopus/assets/83298718/7b46dc1f-5eb2-4a1b-8e77-376b0836948a) - -
        -
      • -

        Protocolos:

        - -![image](https://github.com/leandrofars/oktopus/assets/83298718/9b789f0b-cb0c-4cec-8b8e-767ba21bffae) -
      • -
      - -
        -
      • -

        Notificações/Coleta de dados:

        - É possível criar notificações que são disparadas em uma mudaça de valor, criação e remoção de objeto, operação completa, ou um evento. - -![image](https://github.com/leandrofars/oktopus/assets/83298718/184899a3-52e7-491a-8ee7-7b442fe50719) -
      • -
      - -
        -
      • -

        OB-USP-A (Open Broadband User Services Platfrom Agent):

        -
          -
        • - Desenhado para software embarcado (~400kb em ARM) -
        • -
        • - Codificado em C -
        • -
        • - Licença 3-Clause BSD -
        • -
        • - Feito para ambientes linux -
        • -
        -
      • -
      - -
        -
      • -

        Análise de Dados

        -O protocolo possui um mecanismo chamado "Bulk Data", onde é possível recolher grandes volumes de dados do dispositivo, os dados podem ser recolhidos por HTTP, ou outro MTP de telemetria definido na norma do TR, esses dados podem estar em formato JSON, CSV ou XML. Isso gera a oportunidade de utilizar IA em cima desses dados, obtendo informações relevantes que podem ser usadas tendo diversas intenções, desde a predição de eventos, KPIs, informações para a área comercial, mas também para a melhor configuração de um dispositivo. -
      • -
      - -
        -
      • -

        Wi-Fi:

        -Possui mais de 130 métricas de configuração e diagnóstico de Wi-Fi, muitas dessa configurações e parâmetros são uma troca entre área de cobertura do sinal, latência e throughput. Ao implantar sistemas Wi-Fi, tende-se a manter a mesma configuração em todos os clientes, fazendo com que a tecnologia tenha uma performance abaixo do esperado. A Machine Learning aliada à análise de dados citada no tópico anterior, torna possível automatizar o gerenciamento e a optimização de redes Wireless, onde uma abordagem de big data é capax de encontrar a configuração ideal para cada dispositivo. - -![image](https://github.com/leandrofars/oktopus/assets/83298718/3d6fe3e8-3ca2-460b-9583-da89b42753f8) -
      • -
      - -
        -
      • -

        Comandos:

        - É possível realizar comandos remotamente no produto, como por exemplo: atualização de firmware, reboot, reset, busca de redes vizinhas, backup, ping, diagnósticos de rede e muitos outros. -
      • -
      - -
        -
      • -

        IoT:

        -
        - -
        - -
        - -
        -
      • -
      - -
        -
      • -

        Módulos de Software:

        -Atualmente, gigantes das telecomunicações e startups, publicam software novo diariamente, ciclos de entrega lentos e processos de garantia de qualidade manuais e demorados, torna difícil a competição para integradores e prestadores de serviços. USP "Software Module Management" permite uma abordagem containerizada ao desenvolvimento de software de dispositivos embarcados, tornando possível diminuir drasticamente a chance de erro em atualições de software, também facilita a integração de terceiros em um dispositvo, manténdo ainda assim, isolada a parte de firmware do Vendor. -
        - -
      • -
      - - - --------------------------------------------------------------------------------------------------------------------------------------------------------- - -
      • Infraestrutura:

      - -![image](https://github.com/leandrofars/oktopus/assets/83298718/6f472bed-adad-4b27-9106-0006c0a91a4b) - - -
        -
      • -

        Desenvolvedor:

        -Execute o aplicativo usando o Docker: -
        -leandro@leandro-laptop:~$ cd oktopus/devops
        -leandro@leandro-laptop:~/oktopus/devops$ docker run
        -
        -
      • -
      • -Compilação manual básica e execução: -
          -
        • - Dependências: Versão node: v14.20.0 | Versão Go: v1.18.1 -
        • -
        • - Broker MQTT: -
          leandro@leandro-laptop:~$ cd oktopus/backend/services/mochi/ && go run cmd/main.go -redis "127.0.0.1:6379"
          -
        • -
        • - Controlador TR-369: -
          -leandro@leandro-laptop:~$ cd oktopus/backend/services/controller/ && go run cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"
          -
        • -
        • - Servidor socketio: -
          -leandro@leandro-laptop:~$ cd oktopus/backend/services/socketio && npm i && npm start
          -
        • -
        • - Front-end: -
          -leandro@leandro-laptop:~$ cd oktopus/frontend && npm i && npm run dev
          -
        • -
        -
      • -OBS: Não use essas instruções em produção. Para implementar o projeto em produção você pode usar mais recursos que já estão disponíveis no Oktopus, mas levaria mais tempo para explicar neste README. Em breve, haverá mais ajuda e explicações sobre essas configurações extras necessárias. -
      • -Configurações dispositivo de teste: -
      • -
          -
        • -Device.LocalAgent. -
          -"CertificateNumberOfEntries": "0",
          -"Controller.1.Alias": "",
          -"Controller.1.AssignedRole": "",
          -"Controller.1.BootParameterNumberOfEntries": "0",
          -"Controller.1.ControllerCode": "",
          -"Controller.1.Enable": "true",
          -"Controller.1.EndpointID": "oktopusController",
          -"Controller.1.InheritedRole": "Device.LocalAgent.ControllerTrust.Role.1",
          -"Controller.1.MTP.1.Alias": "",
          -"Controller.1.MTP.1.Enable": "true",
          -"Controller.1.MTP.1.MQTT.Reference": "Device.MQTT.Client.1",
          -"Controller.1.MTP.1.MQTT.Topic": "oktopus/v1/controller",
          -"Controller.1.MTP.1.Protocol": "MQTT",
          -"Controller.1.MTPNumberOfEntries": "1",
          -"Controller.1.PeriodicNotifInterval": "15",
          -"Controller.1.PeriodicNotifTime": "0001-01-01T00:00:00Z",
          -"Controller.1.ProvisioningCode": "",
          -"Controller.1.USPNotifRetryIntervalMultiplier": "2000",
          -"Controller.1.USPNotifRetryMinimumWaitInterval": "5",
          -"ControllerNumberOfEntries": "1",
          -"ControllerTrust.ChallengeNumberOfEntries": "0",
          -"ControllerTrust.CredentialNumberOfEntries": "0",
          -"ControllerTrust.Role.1.Alias": "cpe-1",
          -"ControllerTrust.Role.1.Enable": "true",
          -"ControllerTrust.Role.1.Name": "Full Access",
          -"ControllerTrust.Role.1.Permission.1.Alias": "cpe-1",
          -"ControllerTrust.Role.1.Permission.1.CommandEvent": "r-xn",
          -"ControllerTrust.Role.1.Permission.1.Enable": "true",
          -"ControllerTrust.Role.1.Permission.1.InstantiatedObj": "rw-n",
          -"ControllerTrust.Role.1.Permission.1.Obj": "rw-n",
          -"ControllerTrust.Role.1.Permission.1.Order": "0",
          -"ControllerTrust.Role.1.Permission.1.Param": "rw-n",
          -"ControllerTrust.Role.1.Permission.1.Targets": "Device.",
          -"ControllerTrust.Role.1.PermissionNumberOfEntries": "1",
          -"ControllerTrust.RoleNumberOfEntries": "2",
          -"EndpointID": "os::4851CF-000000000002",
          -"MTP.1.Alias": "",
          -"MTP.1.Enable": "false",
          -"MTP.1.MQTT.PublishQoS": "0",
          -"MTP.1.MQTT.Reference": "Device.MQTT.Client.1",
          -"MTP.1.MQTT.ResponseTopicConfigured": "oktopus/v1/controller",
          -"MTP.1.MQTT.ResponseTopicDiscovered": "oktopus/v1/agent/os::4851CF-000000000002",
          -"MTP.1.Protocol": "MQTT",
          -"MTP.1.Status": "Down",
          -"MTPNumberOfEntries": "1",
          -"RequestNumberOfEntries": "0",
          -"SoftwareVersion": "5.0.0",
          -"SubscriptionNumberOfEntries": "0",
          -"SupportedFingerprintAlgorithms": "SHA-1, SHA-224, SHA-256, SHA-384, SHA-512",
          -"SupportedProtocols": "STOMP, CoAP, MQTT, WebSocket",
          -"UpTime": "42"
          -
          -
        • -
        • -Device.MQTT.Client.1 -
        • -
          -"Alias": "cpe-1",
          -"BrokerAddress": "10.100.250.4",
          -"BrokerPort": "1883",
          -"CleanSession": "false",
          -"CleanStart": "false",
          -"ClientID": "",
          -"ConnectRetryIntervalMultiplier": "2000",
          -"ConnectRetryMaxInterval": "30720",
          -"ConnectRetryTime": "5",
          -"Enable": "true",
          -"KeepAliveTime": "30",
          -"Name": "",
          -"Password": "",
          -"ProtocolVersion": "5.0",
          -"RequestProblemInfo": "false",
          -"RequestResponseInfo": "false",
          -"ResponseInformation": "oktopus/v1/agent/os::4851CF-000000000002",
          -"Status": "Connected",
          -"Subscription.1.Alias": "cpe-1",
          -"Subscription.1.Enable": "false",
          -"Subscription.1.QoS": "1",
          -"Subscription.1.Topic": "oktopus/v1/agent",
          -"SubscriptionNumberOfEntries": "1",
          -"TransportProtocol": "TCP/IP",
          -"Username": "test"
          -
        -
      - --------------------------------------------------------------------------------------------------------------------------------------------------------- -

      Vai usar nosso projeto na sua empresa? gostaria de conversar sobre o TR-369 e gerenciamento de IoTs, estamos online no Slack.

      -

      Caso você tenha interesse em informações internas sobre o time e nossas pretensões acesse nossa Wiki.

      - --------------------------------------------------------------------------------------------------------------------------------------------------------- - -

      Fontes bibliográficas: MU-461.pdf, TR-369.html, USP Training Session Slides

      - From 904853fe62839f55cd879a6cabfe5e9eabf6812f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Fri, 11 Aug 2023 00:37:30 -0300 Subject: [PATCH 4/9] chore: gitignore .vscode and bin files --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 219836b..64eeb06 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,8 @@ go.work *.txt *.pwd *.acl -.idea \ No newline at end of file +.idea +.vscode +controller +main +mochi \ No newline at end of file From 3f1f9b03339699b5617ee2902da8a6d74e1b3e7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Fri, 11 Aug 2023 00:53:09 -0300 Subject: [PATCH 5/9] feat: circleci app build --- .circleci/config.yaml | 75 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .circleci/config.yaml diff --git a/.circleci/config.yaml b/.circleci/config.yaml new file mode 100644 index 0000000..ecdb361 --- /dev/null +++ b/.circleci/config.yaml @@ -0,0 +1,75 @@ +version: 2.1 +executors: + nodejs: + docker: + - image: cimg/node:18.17.1 + golang: + docker: + - image: cimg/go:1.20.7 + +jobs: + + build_controller: + executor: golang + steps: + - checkout + - run: + name: Build Controller + command: | + cd backend/services/controller && go build -o controller cmd/oktopus/main.go + + build_mochi: + executor: golang + steps: + - checkout + - run: + name: Build Mochi + command: | + cd backend/services/mochi/ && go build -o mochi cmd/main.go + + build_frontend: + executor: nodejs + steps: + - checkout + - run: + name: Build Frontend + command: | + cd frontend/ && npm i && npm run build + + # deploy_to_server: + # executor: nodejs + # steps: + # - checkout + # - add_ssh_keys: + # fingerprints: + # - "YOUR_SSH_KEY_FINGERPRINT" + # - run: + # name: Deploy Apps to Server + # command: | + # scp -r app1/ user@your-server-ip:/path/to/destination/ + # scp -r app2/ user@your-server-ip:/path/to/destination/ + # scp -r app3/ user@your-server-ip:/path/to/destination/ + +workflows: + build_and_deploy: + jobs: + - build_controller: + filters: + branches: + only: main + - build_mochi: + filters: + branches: + only: main + - build_frontend: + filters: + branches: + only: main + # - deploy_to_server: + # requires: + # - build_controller + # - build_mochi + # - build_frontend + # filters: + # branches: + # only: main From dc0143954cc65dcf272ff2f0287c33fea6a742fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Fri, 11 Aug 2023 00:54:30 -0300 Subject: [PATCH 6/9] fix: rename circleci config --- .circleci/{config.yaml => config.yml} | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rename .circleci/{config.yaml => config.yml} (92%) diff --git a/.circleci/config.yaml b/.circleci/config.yml similarity index 92% rename from .circleci/config.yaml rename to .circleci/config.yml index ecdb361..fafafa0 100644 --- a/.circleci/config.yaml +++ b/.circleci/config.yml @@ -16,7 +16,7 @@ jobs: - run: name: Build Controller command: | - cd backend/services/controller && go build -o controller cmd/oktopus/main.go + cd backend/services/controller && go build -o controller cmd/oktopus/dev.go build_mochi: executor: golang @@ -25,7 +25,7 @@ jobs: - run: name: Build Mochi command: | - cd backend/services/mochi/ && go build -o mochi cmd/main.go + cd backend/services/mochi/ && go build -o mochi cmd/dev.go build_frontend: executor: nodejs @@ -56,15 +56,15 @@ workflows: - build_controller: filters: branches: - only: main + only: dev - build_mochi: filters: branches: - only: main + only: dev - build_frontend: filters: branches: - only: main + only: dev # - deploy_to_server: # requires: # - build_controller @@ -72,4 +72,4 @@ workflows: # - build_frontend # filters: # branches: - # only: main + # only: dev From 32cf4324af961f99815bde198a0958d2413c2e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Fri, 11 Aug 2023 00:57:15 -0300 Subject: [PATCH 7/9] fix: file build --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fafafa0..98d8866 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,7 +16,7 @@ jobs: - run: name: Build Controller command: | - cd backend/services/controller && go build -o controller cmd/oktopus/dev.go + cd backend/services/controller && go build -o controller cmd/oktopus/main.go build_mochi: executor: golang @@ -25,7 +25,7 @@ jobs: - run: name: Build Mochi command: | - cd backend/services/mochi/ && go build -o mochi cmd/dev.go + cd backend/services/mochi/ && go build -o mochi cmd/main.go build_frontend: executor: nodejs From 2ea567d7d7c410afc5febe47466efd93131b31a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= Date: Sun, 13 Aug 2023 15:20:49 -0300 Subject: [PATCH 8/9] feat(ci/cd): deploy controller via ssh --- .circleci/config.yml | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 98d8866..1d2cbe4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,20 +36,21 @@ jobs: command: | cd frontend/ && npm i && npm run build - # deploy_to_server: - # executor: nodejs - # steps: - # - checkout - # - add_ssh_keys: - # fingerprints: - # - "YOUR_SSH_KEY_FINGERPRINT" - # - run: - # name: Deploy Apps to Server - # command: | - # scp -r app1/ user@your-server-ip:/path/to/destination/ - # scp -r app2/ user@your-server-ip:/path/to/destination/ - # scp -r app3/ user@your-server-ip:/path/to/destination/ - + deploy_controller: + machine: + image: ubuntu-2004:202010-01 + steps: + - run: + name: Send Binary to Server + command: | + scp backend/services/controller/controller $SSH_USER@$SSH_HOST:/home/$SSH_USER + ssh $SSH_USER@$SSH_HOST + - run: + name: Restart Services + command: | + sudo su + mv controller /usr/bin/ + systemctl restart controller workflows: build_and_deploy: jobs: @@ -65,11 +66,9 @@ workflows: filters: branches: only: dev - # - deploy_to_server: - # requires: - # - build_controller - # - build_mochi - # - build_frontend - # filters: - # branches: - # only: dev + - deploy_controller: + requires: + - build_controller + filters: + branches: + only: dev From 44ee44b3e77e5b52370d168c913b288a4dcea13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leandro=20Ant=C3=B4nio=20Farias=20Machado?= <83298718+leandrofars@users.noreply.github.com> Date: Tue, 15 Aug 2023 10:50:23 -0300 Subject: [PATCH 9/9] Circleci project setup (close #86) (#104) * feat: build and deploy services --- .circleci/config.yml | 55 ++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 35 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1d2cbe4..c1d16c9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,66 +9,51 @@ executors: jobs: - build_controller: + build_and_deploy_controller: executor: golang steps: - checkout - run: - name: Build Controller + name: Build and Deploy Controller command: | cd backend/services/controller && go build -o controller cmd/oktopus/main.go - - build_mochi: + scp -o StrictHostKeyChecking=no controller $SSH_USER@$SSH_HOST:/home/$SSH_USER + ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "sudo mv controller /usr/bin/ && sudo systemctl restart controller" + + build_and_deploy_mochi: executor: golang steps: - checkout - run: - name: Build Mochi + name: Build and Deploy Mochi command: | cd backend/services/mochi/ && go build -o mochi cmd/main.go + scp -o StrictHostKeyChecking=no mochi $SSH_USER@$SSH_HOST:/home/$SSH_USER + ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "sudo mv mochi /usr/bin/ && sudo systemctl restart mochi" - build_frontend: + build_and_deploy_frontend: executor: nodejs steps: - checkout - run: - name: Build Frontend + name: Build and Deploy Frontend command: | - cd frontend/ && npm i && npm run build + cd frontend && npm i && npm run build + scp -o StrictHostKeyChecking=no -r .next/ $SSH_USER@$SSH_HOST:/home/$SSH_USER/oktopus/frontend + ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "pm2 restart oktopus" - deploy_controller: - machine: - image: ubuntu-2004:202010-01 - steps: - - run: - name: Send Binary to Server - command: | - scp backend/services/controller/controller $SSH_USER@$SSH_HOST:/home/$SSH_USER - ssh $SSH_USER@$SSH_HOST - - run: - name: Restart Services - command: | - sudo su - mv controller /usr/bin/ - systemctl restart controller workflows: build_and_deploy: jobs: - - build_controller: + - build_and_deploy_controller: filters: branches: - only: dev - - build_mochi: + only: main + - build_and_deploy_mochi: filters: branches: - only: dev - - build_frontend: + only: main + - build_and_deploy_frontend: filters: branches: - only: dev - - deploy_controller: - requires: - - build_controller - filters: - branches: - only: dev + only: main \ No newline at end of file