Logo

dev-resources.site

for different kinds of informations.

Implantando um aplicativo Angular com DigitalOcean e GitHub de forma gratuita

Published at
1/15/2025
Categories
angular
cloud
cicd
github
Author
ledsonsilva
Categories
4 categories in total
angular
open
cloud
open
cicd
open
github
open
Author
11 person written this
ledsonsilva
open
Implantando um aplicativo Angular com DigitalOcean e GitHub de forma gratuita

Neste artigo, abordaremos como implantar um aplicativo Angular utilizando o DigitalOcean combinado com o GitHub para configurar um pipeline de entrega contínua (CI/CD) de forma eficiente e gratuita.

Esses dias, estava olhando algumas opções, para criar uma pipeline de um projeto pessoal, com bom custo beneficio, e me deparei com o serviço Platform App da digital ocean, é um PaaS (Plataforma como serviço) que simplifica o processo de implantação, gerenciamento e escalabilidade de aplicativos, sites estáticos e APIs, permitindo que desenvolvedores foquem no código sem se preocupar com a infraestrutura subjacente.

Em outras palavras, é um lugar onde vai hospedar suas aplicações, sem ter que se preocupar com infra, sistema operacional, plataforma para CI/CD, um serviço bem legalzinho, que vai te economizar um bom tempo, e fazer com que foque mais no desenvolvimento do seu produto, sem perder horas configurando VM, pipeline, Firewall, conectividade, etc...

O mais legal, é que ele oferece 3 aplicações web estáticas, 100% free, dai resolvi fazer um teste e implantar um frontend feito com angular que tenho aqui, e funcionou perfeitamente, dito isso, resolvi escrever aqui e compartilhar o passo a passo de como funciona este processo.

Pré-requisitos:

  • Ter uma conta na digital ocean.
  • Conhecimento de GIT e Github.
  • Angular-Cli instalado.

Obs: Neste exemplo, estarei utilizando a versão 18 do angular.

Passo 01 (Criar novo projeto com angular-clie):

ng new <project-name>
Enter fullscreen mode Exit fullscreen mode

Na criação do projeto, será perguntado se deseja habilitar a renderização do lado do servidor (SSR), neste caso deixe marcado com "N", pois para nos encaixarmos no plano FREE, o aplicativo deve ser estatico, e caso queira habilitar SSR, você precisará selecionar um plano que tenha um servidor web, e não será gratuito.

Image description

Passo 02 (Ajustar configurações do projeto):

Ajuste o processo de build no arquivo angular.json, por default o angular vem configurado para gerar um build de aplicativo para executar em um servidor, precisamos que gere os arquivos para executar de forma estatica.

Ajuste de o arquivo para conforme o trecho abaixo de:

"architect": {
    "build": {
        "builder": "@angular-devkit/build-angular:application",
        "options": {
            "outputPath": "dist/angular-platform-app",
            "index": "src/index.html",
            "browser": "src/main.ts",
            .....
Enter fullscreen mode Exit fullscreen mode

Para:

"architect": {
    "build": {
        "builder": "@angular-devkit/build-angular:browser",
        "options": {
            "outputPath": "dist",
            "index": "src/index.html",
            "main": "src/main.ts",
            .....
Enter fullscreen mode Exit fullscreen mode

Neste caso a alteração aqui foi feita em "builder" alterado de application para browser, e consequentemente a chave "browser" para "main".

Também foi alterado "outputPath" para que os arquivos fiquem na raiz da pasta "dist".

DIFF:

Image description

Passo 03 (NPM Install):

Importante rodar um NPM install no projeto recem criado, pois ele adiciona alguns metadados com relação ao node no package-lock.json que no caso se não for versionado, ocasionará erro no build dentro da plataforma.

Passo 04 (Versionamento no github):

Aqui é somente comitar e subi em seu repositório no github mesmo, não vou entrar no mérito de como faz este processo.

Passo 05 (Criar APP no Platform App da DigitalOcean) conforme steps abaixo:

No menu "CREATE", selecione o produto "Platform APP"

Image description

Deixe marcado a opção Github e será necessário conceder permissão para DigitalOcean enxergar seus repositórios:

Image description

Após conceder a permissão, ele deve aparecer no combo de repositórios, dai basta selecionar e configurar a branch no qual será disparado a trigger para deployment, o source directory e o checkbox para indicar se o deployment será automático conforme seja comitado nesta determinada branch:

Image description

Avance para próxima etapa, e neste momento que precisaremos ajustar o resourceType para efetuar o deploymeny em um "Static WEB", por padrão ele vem marcado como "WebServer". No APP basta clicar em Edit, e na opção "ResourceType" clicar também em Edit e selecionar a opção "Static Site", conforme imagem abaixo:

Image description

Após editar, basta voltar em "Back" e avançar para próxima etapa.

Agora basta avanças as etapas, não precisa de mais nenhuma configuração adicional e por fim criar o recurso, aqui você poderá vê que o preço ficou em $0.00:

Image description

Finish, aplicativo criado e implantado:

Image description

Aplicação no AR:

Image description

É isso pessoal, espero que o conteúdo seja util, e estou aberto a sugestões e críticas com relação ao conteúdo.

Um abs!

Links importantes:

Repositório utilizado no exemplo:
https://github.com/ledsonsilva/angular-platform-app-example

Documentação PlaformApp:
https://docs.digitalocean.com/products/app-platform/

Documentação Angular:
https://angular.dev/installation

angular Article's
30 articles in total
Favicon
Angular Addicts #33: NgRx 19, using the Page Object Model in tests, Micro Frontends using Vite & more
Favicon
Implantando um aplicativo Angular com DigitalOcean e GitHub de forma gratuita
Favicon
Custom builder for Angular: My way
Favicon
Angular validation common functions
Favicon
Checkout the new @defer in Angular
Favicon
AngularFire Starter Template
Favicon
Deferred loading with @defer: Optimize Your App's Performance
Favicon
🚀 Weekly Angular Challenge: Two Projects a Week!
Favicon
🚀 Weekly Angular Challenge: Two Projects a Week!
Favicon
Use Chrome's Prompt API to generate a trip planner in Angular
Favicon
Don't copy/paste code you don't understand
Favicon
Streamlining Data Flow in Angular: The Power of the Adapter Pattern 🔄
Favicon
Transform Your Web Development Workflow with These JavaScript Giants
Favicon
Breweries App
Favicon
10 Months of Elm to Angular
Favicon
Boost Angular Performance: Lazy Loading Guide
Favicon
🚀 Learning Through Experience: A Tale of NgRx Effects
Favicon
🔥 Effect Stopped Reacting to Action, Have You Ever Faced This? 🔥 I recently learned a valuable lesson about NgRx Effects – specifically, where to place map and catchError when handling service calls.
Favicon
How to create a Google Font Picker in Angular 18
Favicon
MDB Ui kit issue in angular 19
Favicon
Azure App Service doesn't returned compressed (gzip) files for Angular application?
Favicon
Angular form validation directive
Favicon
Unlocking the Power of Angular Signals for Dynamic Reactivity
Favicon
Boosting Your Angular Development Workflow with Cursor Code Editor
Favicon
Eliminate Runtime Errors with Type-safe Routes in Angular
Favicon
[Boost]
Favicon
Ng-News: Angular in 2024
Favicon
Angular Signals and Their Benefits
Favicon
Taming Angular Forms
Favicon
Modify Angular Material 19 Theme with SCSS & CSS

Featured ones: