{"id":101,"date":"2024-12-27T19:13:23","date_gmt":"2024-12-27T22:13:23","guid":{"rendered":"https:\/\/recover.rdconsolo.com.br\/?p=101"},"modified":"2024-12-27T19:39:38","modified_gmt":"2024-12-27T22:39:38","slug":"git-push-to-production","status":"publish","type":"post","link":"https:\/\/rdconsolo.com.br\/?p=101","title":{"rendered":"GIT \u2013 Push to Production"},"content":{"rendered":"\n<p>Uma das formas de publicar um branch local para um servidor de produ\u00e7\u00e3o \u00e9 usar o recurso de hooks nativo do git.<\/p>\n\n\n\n<p>Vamos aqui listar os passos para configurar esse recurso e conseguir enviar as altera\u00e7\u00e3o para o servidor usando apenas um \u00fanico comando na m\u00e1quina local.<\/p>\n\n\n\n<p>No lado de produ\u00e7\u00e3o vamos acessar o servidor e criar uma pasta para abrigar os arquivos do projeto. Eu prefiro utilizar o nome do branch que est\u00e1 associado ao ambiente de produ\u00e7\u00e3o (nesse caso ser\u00e1 o main) mas voc\u00ea pode usar qualquer nome, inclusivo o nome do seu projeto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ssh user@server\nmkdir pasta-do-branch<\/code><\/pre>\n\n\n\n<p>Em seguida, vamos criar um ambiente git vazio para abrigar os comando de hook necess\u00e1rios.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">git init --bare ~\/projeto.git<\/code><\/pre>\n\n\n\n<p>Na pasta hooks desse ambiente criado (entre na pasta nome-do-projeto.git) vamos criar o arquivo post-receive e inserir o c\u00f3digo nele por esse abaixo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">#!\/bin\/bash\nTARGET=\"\/pasta-do-branch\"\nGIT_DIR=\"\/projeto.git\"\nBRANCH=\"main\"\n\nwhile read oldrev newrev ref\ndo\n  if [ \"$ref\" = \"refs\/heads\/$BRANCH\" ];\n  then\n    echo \"Ref $ref received. Deploying ${BRANCH} branch to production...\"\n    git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH\n  fi\ndone<\/code><\/pre>\n\n\n\n<p>Esse arquivo, post-receive, deve ser marcado como execut\u00e1vel.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">chmod +x post-receive<\/code><\/pre>\n\n\n\n<p>Na m\u00e1quina local vamos adicionar o branch remoto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">git remote add branch user@server:\/path\/project.git<\/code><\/pre>\n\n\n\n<p>Dessa forma, de agora em diante, para publicar o c\u00f3digo do branch basta executar o comando abaixo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">git push projeto main<\/code><\/pre>\n\n\n\n<p>Para se aprofundar nos detalhes desse recurso, consulte a p\u00e1gina desse link:<br><a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Customizing-Git-Git-Hooks\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/git-scm.com\/book\/en\/v2\/Customizing-Git-Git-Hooks<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uma das formas de publicar um branch local para um servidor de produ\u00e7\u00e3o \u00e9 usar o recurso de hooks nativo do git. Vamos aqui listar os passos para configurar esse recurso e conseguir enviar as altera\u00e7\u00e3o para o servidor usando apenas um \u00fanico comando na m\u00e1quina local. No lado de produ\u00e7\u00e3o vamos acessar o servidor &hellip; <a href=\"https:\/\/rdconsolo.com.br\/?p=101\" class=\"more-link\">Continue lendo<span class=\"screen-reader-text\"> &#8220;GIT \u2013 Push to Production&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[26],"class_list":["post-101","post","type-post","status-publish","format-standard","hentry","category-devops","tag-git"],"_links":{"self":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=101"}],"version-history":[{"count":2,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions\/142"}],"wp:attachment":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}