{"id":2179,"date":"2023-07-05T11:56:34","date_gmt":"2023-07-05T11:56:34","guid":{"rendered":"https:\/\/www.andrefelizardo.com.br\/blog\/?p=2179"},"modified":"2023-07-05T12:09:51","modified_gmt":"2023-07-05T12:09:51","slug":"automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp","status":"publish","type":"post","link":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/","title":{"rendered":"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP"},"content":{"rendered":"\n<p>O deploy de uma aplica\u00e7\u00e3o React \u00e9 uma etapa crucial para disponibilizar sua cria\u00e7\u00e3o na web. Neste artigo, vamos explorar como fazer o deploy de uma aplica\u00e7\u00e3o React feita com Vite em uma hospedagem compartilhada, usando as ferramentas Github Actions e FTP. Essa combina\u00e7\u00e3o permitir\u00e1 automatizar o processo de deploy, tornando mais f\u00e1cil para voc\u00ea, como desenvolvedor, disponibilizar sua aplica\u00e7\u00e3o online.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Antes de come\u00e7ar, \u00e9 importante ter conhecimento b\u00e1sico de React e Vite, al\u00e9m de possuir uma conta no Github e ter o Git instalado em sua m\u00e1quina.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Criando um reposit\u00f3rio no Github<\/h2>\n\n\n\n<p>Vamos iniciar criando um novo reposit\u00f3rio no Github para o seu projeto. Acesse o Github e clique no bot\u00e3o &#8220;New&#8221; para criar um novo reposit\u00f3rio. D\u00ea um nome ao seu reposit\u00f3rio e escolha as configura\u00e7\u00f5es desejadas. Anote o link do reposit\u00f3rio Git, por exemplo, <code>https:\/\/github.com\/seu-usuario\/nome-do-repositorio.git<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Clonando o reposit\u00f3rio na m\u00e1quina local<\/h2>\n\n\n\n<p>Em seguida, vamos clonar o reposit\u00f3rio em sua m\u00e1quina local. Abra o terminal ou prompt de comando e navegue at\u00e9 o diret\u00f3rio onde deseja clonar o projeto. Execute o seguinte comando para clonar o reposit\u00f3rio Git em sua m\u00e1quina local:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/seu-usuario\/nome-do-repositorio.git<\/code><\/pre>\n\n\n\n<p>Isso criar\u00e1 uma c\u00f3pia local do reposit\u00f3rio em seu computador.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preparando o ambiente<\/h2>\n\n\n\n<p>\u00c9 recomendado ter o Vite instalado em seu ambiente de desenvolvimento. Voc\u00ea pode utilizar o gerenciador de pacotes npm para isso. Navegue at\u00e9 o diret\u00f3rio do projeto clonado e execute o seguinte comando para instalar o Vite:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install create-vite -g<\/code><\/pre>\n\n\n\n<p>Agora, crie um novo projeto React utilizando o Vite:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>create-vite nome-do-projeto --template react<\/code><\/pre>\n\n\n\n<p>Isso criar\u00e1 uma estrutura b\u00e1sica de um projeto React pronto para ser desenvolvido juntamente com as configura\u00e7\u00f5es b\u00e1sicas do Vite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando o Github Actions<\/h2>\n\n\n\n<p>Agora, vamos configurar o Github Actions para automatizar o deploy do seu projeto. No diret\u00f3rio raiz do projeto, crie um arquivo chamado <code>.github\/workflows\/main.yml<\/code> com o seguinte conte\u00fado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>on:\n    push:\n        branches:\n            - main\n\nname: \ud83d\ude80 Deploy website on push\njobs:\n  web-deploy:\n    name: \ud83c\udf89 Deploy\n    runs-on: ubuntu-latest\n    steps:\n    - name: \ud83d\ude9a Get latest code\n      uses: actions\/checkout@v3\n\n    - name: Use Node.js 16\n      uses: actions\/setup-node@v2\n      with:\n        node-version: '16'\n      \n    - name: \ud83d\udd28 Build Project\n      run: |\n        npm install\n        npm run build --prod\n    \n    - name: \ud83d\udcc2 Sync files\n      uses: SamKirkland\/FTP-Deploy-Action@v4.3.4\n      with:\n        server: ${{ secrets.FTP_SERVER }}\n        username: ${{ secrets.FTP_USERNAME }}\n        password: ${{ secrets.FTP_PASSWORD }}\n        local-dir: .\/dist\/<\/code><\/pre>\n\n\n\n<p>Antes de tudo, primeiramente precisamos configurar as vari\u00e1veis de ambiente <code>FTP_SERVER<\/code>, <code>FTP_USERNAME<\/code> e <code>FTP_PASSWORD<\/code> no reposit\u00f3rio do Github, para que possamos usar essas informa\u00e7\u00f5es de maneira segura durante o deploy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando Secrets no Github<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Acesse o reposit\u00f3rio do seu projeto no Github.<\/li>\n\n\n\n<li>Na p\u00e1gina do reposit\u00f3rio, clique na aba &#8220;Settings&#8221; (Configura\u00e7\u00f5es) no menu superior.<\/li>\n\n\n\n<li>Na p\u00e1gina de configura\u00e7\u00f5es, navegue at\u00e9 a se\u00e7\u00e3o &#8220;Secrets&#8221; (Segredos) no menu lateral esquerdo e clique nela.<\/li>\n\n\n\n<li>Em seguida, clique no bot\u00e3o &#8220;New repository secret&#8221; (Novo segredo do reposit\u00f3rio).<\/li>\n\n\n\n<li>Ser\u00e1 exibido um formul\u00e1rio para adicionar um novo segredo.<\/li>\n\n\n\n<li>No campo &#8220;Name&#8221; (Nome), digite o nome do segredo. Por exemplo, &#8220;FTP_USERNAME&#8221;.<\/li>\n\n\n\n<li>No campo &#8220;Value&#8221; (Valor), insira o valor do segredo. Neste caso, seria o nome de usu\u00e1rio do FTP.<\/li>\n\n\n\n<li>Clique no bot\u00e3o &#8220;Add secret&#8221; (Adicionar segredo) para salvar o segredo.<\/li>\n\n\n\n<li>Repita os passos 4 a 8 para adicionar o segredo &#8220;FTP_PASSWORD&#8221; e &#8220;FTP_SERVER&#8221;, inserindo os valores da mesma forma.<\/li>\n\n\n\n<li>Ap\u00f3s adicionar os segredos, voc\u00ea ver\u00e1 uma lista de segredos na se\u00e7\u00e3o &#8220;Secrets&#8221; da p\u00e1gina de configura\u00e7\u00f5es do reposit\u00f3rio.<\/li>\n<\/ol>\n\n\n\n<p>Como resultado, ao referenciar <code>${{ secrets.NOME_DO_SEGREDO }}<\/code> no arquivo YAML do Github Actions, o valor do segredo ser\u00e1 substitu\u00eddo durante o processo de deploy, garantindo que as informa\u00e7\u00f5es sens\u00edveis (como nome de usu\u00e1rio e senha) n\u00e3o sejam expostas no c\u00f3digo-fonte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando a hospagedagem compartilhada<\/h2>\n\n\n\n<p>Fa\u00e7a login no painel de controle da sua conta na <em>Hostgator<\/em> (estou usando Hostgator s\u00f3 para ilustrar, voc\u00ea pode usar qualquer outra) e acesse o Gerenciador de Arquivos. Crie uma pasta chamada <code>public_html<\/code> na raiz do seu diret\u00f3rio de hospedagem compartilhada. \u00c9 nessa pasta que sua aplica\u00e7\u00e3o ser\u00e1 implantada. Normalmente essa pasta j\u00e1 existe, e se seu site j\u00e1 tem algo publicado muito provavelmente ela j\u00e1 existe. Nesse caso voc\u00ea n\u00e3o precisa criar uma nova.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementando o deploy<\/h2>\n\n\n\n<p>Por fim volte para o seu projeto no Github e fa\u00e7a um commit e um push para o reposit\u00f3rio remoto. Isso acionar\u00e1 o Github Actions e iniciar\u00e1 o processo de build e deploy. Por\u00e9m, para nossa Action ser chamada corretamente \u00e9 importante fazer push para a branch <em>main <\/em>pois dessa maneira a configura\u00e7\u00e3o que colocamos nas primeiras linhas do arquivo YAML ir\u00e3o ser contempladas.<\/p>\n\n\n\n<p>O fluxo de trabalho definido no arquivo YAML ir\u00e1:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Fazer o checkout do c\u00f3digo-fonte do reposit\u00f3rio.<\/li>\n\n\n\n<li>Configurar a vers\u00e3o do Node.js.<\/li>\n\n\n\n<li>Instalar as depend\u00eancias do projeto.<\/li>\n\n\n\n<li>Construir a aplica\u00e7\u00e3o React.<\/li>\n\n\n\n<li>Efetuar o deploy para a hospedagem compartilhada atrav\u00e9s do FTP.<\/li>\n<\/ol>\n\n\n\n<p>Ap\u00f3s o processo ser conclu\u00eddo, finalmente sua aplica\u00e7\u00e3o React estar\u00e1 implantada na pasta <code>public_html<\/code> do seu servidor de hospedagem compartilhada da <em>Hostgator<\/em> ou qualquer outra similar.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Qualquer d\u00favida deixa nos coment\u00e1rios \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O deploy de uma aplica\u00e7\u00e3o React \u00e9 uma etapa crucial para disponibilizar sua cria\u00e7\u00e3o na web. Neste artigo, vamos explorar como fazer o deploy de uma aplica\u00e7\u00e3o React feita com Vite em uma hospedagem compartilhada, usando as ferramentas Github Actions e FTP. Essa combina\u00e7\u00e3o permitir\u00e1 automatizar o processo de deploy, tornando mais f\u00e1cil para voc\u00ea, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2185,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-2179","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP - Blog do Andr\u00e9 Felizardo<\/title>\n<meta name=\"description\" content=\"Como fazer deploy de uma aplica\u00e7\u00e3o React com Vite em uma hospedagem compartilhada usando Github Actions e FTP\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP - Blog do Andr\u00e9 Felizardo\" \/>\n<meta property=\"og:description\" content=\"Como fazer deploy de uma aplica\u00e7\u00e3o React com Vite em uma hospedagem compartilhada usando Github Actions e FTP\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog do Andr\u00e9 Felizardo\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-05T11:56:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-05T12:09:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"805\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Felizardo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Felizardo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Felizardo\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\"},\"headline\":\"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP\",\"datePublished\":\"2023-07-05T11:56:34+00:00\",\"dateModified\":\"2023-07-05T12:09:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/\"},\"wordCount\":800,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Automatizando-deploy-react.png\",\"articleSection\":[\"Tecnologia\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/\",\"name\":\"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP - Blog do Andr\u00e9 Felizardo\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Automatizando-deploy-react.png\",\"datePublished\":\"2023-07-05T11:56:34+00:00\",\"dateModified\":\"2023-07-05T12:09:51+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\"},\"description\":\"Como fazer deploy de uma aplica\u00e7\u00e3o React com Vite em uma hospedagem compartilhada usando Github Actions e FTP\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Automatizando-deploy-react.png\",\"contentUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Automatizando-deploy-react.png\",\"width\":1536,\"height\":805},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/\",\"name\":\"Blog do Andr\u00e9 Felizardo\",\"description\":\"Programa\u00e7\u00e3o de dev para dev\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\",\"name\":\"Andr\u00e9 Felizardo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"caption\":\"Andr\u00e9 Felizardo\"},\"sameAs\":[\"http:\\\/\\\/www.andrefelizardo.com.br\"],\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/author\\\/andrefelizardo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP - Blog do Andr\u00e9 Felizardo","description":"Como fazer deploy de uma aplica\u00e7\u00e3o React com Vite em uma hospedagem compartilhada usando Github Actions e FTP","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/","og_locale":"pt_BR","og_type":"article","og_title":"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP - Blog do Andr\u00e9 Felizardo","og_description":"Como fazer deploy de uma aplica\u00e7\u00e3o React com Vite em uma hospedagem compartilhada usando Github Actions e FTP","og_url":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/","og_site_name":"Blog do Andr\u00e9 Felizardo","article_published_time":"2023-07-05T11:56:34+00:00","article_modified_time":"2023-07-05T12:09:51+00:00","og_image":[{"width":1536,"height":805,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png","type":"image\/png"}],"author":"Andr\u00e9 Felizardo","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Andr\u00e9 Felizardo","Est. tempo de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#article","isPartOf":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/"},"author":{"name":"Andr\u00e9 Felizardo","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b"},"headline":"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP","datePublished":"2023-07-05T11:56:34+00:00","dateModified":"2023-07-05T12:09:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/"},"wordCount":800,"commentCount":0,"image":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png","articleSection":["Tecnologia"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/","url":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/","name":"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP - Blog do Andr\u00e9 Felizardo","isPartOf":{"@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#primaryimage"},"image":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png","datePublished":"2023-07-05T11:56:34+00:00","dateModified":"2023-07-05T12:09:51+00:00","author":{"@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b"},"description":"Como fazer deploy de uma aplica\u00e7\u00e3o React com Vite em uma hospedagem compartilhada usando Github Actions e FTP","breadcrumb":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#primaryimage","url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png","contentUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png","width":1536,"height":805},{"@type":"BreadcrumbList","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/automatize-o-deploy-de-uma-aplicacao-react-com-github-actions-e-ftp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"http:\/\/www.andrefelizardo.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Automatize o deploy de uma aplica\u00e7\u00e3o React com Github Actions e FTP"}]},{"@type":"WebSite","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#website","url":"http:\/\/www.andrefelizardo.com.br\/blog\/","name":"Blog do Andr\u00e9 Felizardo","description":"Programa\u00e7\u00e3o de dev para dev","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.andrefelizardo.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b","name":"Andr\u00e9 Felizardo","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","contentUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","caption":"Andr\u00e9 Felizardo"},"sameAs":["http:\/\/www.andrefelizardo.com.br"],"url":"https:\/\/www.andrefelizardo.com.br\/blog\/author\/andrefelizardo\/"}]}},"jetpack_featured_media_url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2023\/07\/Automatizando-deploy-react.png","jetpack_shortlink":"https:\/\/wp.me\/p6EP66-z9","jetpack-related-posts":[{"id":438,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/o-que-e-angularjs\/","url_meta":{"origin":2179,"position":0},"title":"O que \u00e9 AngularJS","author":"Andr\u00e9 Felizardo","date":"14 de dezembro de 2015","format":false,"excerpt":"AngularJS \u00e9 um framework para o desenvolvimento de aplica\u00e7\u00f5es web, utilizando a o JavaScript.\u00a0Seu objetivo \u00e9 aumentar aplicativos que podem ser acessados por um navegador web, sob o padr\u00e3o model\u2013view\u2013controller (MVC), em um esfor\u00e7o para facilitar tanto o desenvolvimento quanto o teste dos aplicativos. O que \u00e9 AngularJS? Hist\u00f3ria do\u2026","rel":"","context":"Em &quot;Dicas&quot;","block_context":{"text":"Dicas","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dicas\/"},"img":{"alt_text":"AngularJS","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/12\/angularjs.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/12\/angularjs.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/12\/angularjs.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/12\/angularjs.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/12\/angularjs.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/12\/angularjs.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":926,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/o-que-e-ember-js\/","url_meta":{"origin":2179,"position":1},"title":"O que \u00e9 Ember.js","author":"Andr\u00e9 Felizardo","date":"30 de setembro de 2017","format":false,"excerpt":"Ember.js \u00e9 um framework Javascript (sim, mais um) para construir aplica\u00e7\u00f5es web ambiciosas. O objetivo dele \u00e9 aumentar a produtividade de desenvolvimento de aplica\u00e7\u00f5es web, mas focado no paradigma de que \u00e9 melhor gastar um pouco mais de tempo no desenvolvimento por\u00e9m facilitar a manuten\u00e7\u00e3o. Antes de detalhar mais o\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"Logo Ember.js","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/09\/ember.js.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/09\/ember.js.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/09\/ember.js.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/09\/ember.js.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1183,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/github-satellite-2020\/","url_meta":{"origin":2179,"position":2},"title":"Github Satellite 2020 &#8211; Muitas novidades","author":"Andr\u00e9 Felizardo","date":"7 de maio de 2020","format":false,"excerpt":"Satellite 2020 foi a primeira confer\u00eancia virtual do Github. O Github j\u00e1 tinha sido liberado gratuitamente para times nesse ano, lan\u00e7ado o app mobile, sem falar na compra do npm. E pensar que tinha gente na #bolhadev que achava que a Microsoft poderia destruir o Github. nem vou comentar o\u2026","rel":"","context":"Em &quot;Tecnologia&quot;","block_context":{"text":"Tecnologia","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/tecnologia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/05\/capa-blog-github-satellite-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/05\/capa-blog-github-satellite-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/05\/capa-blog-github-satellite-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/05\/capa-blog-github-satellite-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/05\/capa-blog-github-satellite-1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2020\/05\/capa-blog-github-satellite-1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":963,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/o-que-e-vue-js\/","url_meta":{"origin":2179,"position":3},"title":"O que \u00e9 Vue.js","author":"Andr\u00e9 Felizardo","date":"10 de janeiro de 2018","format":false,"excerpt":"Vue.js \u00e9 uma biblioteca\u00a0JavaScript\u00a0acess\u00edvel, vers\u00e1til e perform\u00e1tica. E apesar do site oficial dizer que Vue.js \u00e9 um framework JavaScript Progressivo, eu j\u00e1 vou come\u00e7ar discordando :) Entendemos por framework, aquela solu\u00e7\u00e3o 'fechada' quando voc\u00ea j\u00e1 tem definido por exemplo a estrutura de diret\u00f3rios, ou a forma como voc\u00ea faz uma\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/01\/vuejs.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/01\/vuejs.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/01\/vuejs.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/01\/vuejs.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":981,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/jasmine-testando-seu-codigo-javascript\/","url_meta":{"origin":2179,"position":4},"title":"Jasmine &#8211; Testando seu c\u00f3digo JavaScript","author":"Andr\u00e9 Felizardo","date":"3 de fevereiro de 2018","format":false,"excerpt":"Conforme evolu\u00edmos na complexidade das aplica\u00e7\u00f5es de front-end que desenvolvemos, uma necessidade come\u00e7a a se tornar \u00f3bvia: testar o c\u00f3digo JavaScript. Jasmine \u00e9 um framework exatamente para resolver essa necessidade. Jasmine \u00e9 um framework de testes para o c\u00f3digo JavaScript, que adere aos conceitos de Behavior Driven Development. BDD Jasmine\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/02\/jasmine-logo.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":706,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/react-js-o-que-e-introducao-ao-react\/","url_meta":{"origin":2179,"position":5},"title":"React.js, o que \u00e9? &#8211; Introdu\u00e7\u00e3o ao React","author":"Andr\u00e9 Felizardo","date":"18 de outubro de 2016","format":false,"excerpt":"Se voc\u00ea tem acompanhado o mundo do Front-end nos \u00faltimos anos, com certeza voc\u00ea percebeu um boom em Frameworks e bibliotecas Javascript, como o AngularJS, React.js e v\u00e1rios outros. O que \u00e9 o React.js? React.js \u00e9 uma biblioteca JavaScript, desenvolvida por engenheiros\u00a0do Facebook (s\u00f3 de colocar o nome do Facebook\u2026","rel":"","context":"Em &quot;Curiosidades&quot;","block_context":{"text":"Curiosidades","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/curiosidades\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2016\/10\/react.js.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2179"}],"version-history":[{"count":0,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2179\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/media\/2185"}],"wp:attachment":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}