{"id":583,"date":"2024-05-06T10:31:33","date_gmt":"2024-05-06T13:31:33","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?p=583"},"modified":"2024-05-13T08:52:01","modified_gmt":"2024-05-13T11:52:01","slug":"aprenda-a-compatibilizar-sua-biblioteca-com-o-boss","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/aprenda-a-compatibilizar-sua-biblioteca-com-o-boss\/","title":{"rendered":"Aprenda a compatibilizar sua biblioteca com o Boss"},"content":{"rendered":"\n<p>O <strong>Boss<\/strong> \u00e9 uma ferramenta de gerenciamento de pacotes criada especificamente para o ambiente de desenvolvimento Delphi pela equipe <strong>HashLoad<\/strong> e \u00e9 OpenSource. Ele automatiza o processo de busca, instala\u00e7\u00e3o, atualiza\u00e7\u00e3o e remo\u00e7\u00e3o de bibliotecas e componentes Delphi, que s\u00e3o essenciais para o desenvolvimento de aplica\u00e7\u00f5es robustas. Funciona de maneira semelhante a outros gerenciadores de pacotes populares como npm para Node.js ou Maven para Java, mas \u00e9 totalmente dedicado ao ecossistema Delphi.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"has-large-font-size\"><strong>Por que \u00e9 importante fazer a gest\u00e3o de depend\u00eancias em sistemas?<\/strong><\/p>\n\n\n\n<p>A gest\u00e3o de depend\u00eancias \u00e9 um aspecto fundamental no desenvolvimento de software moderno. Ela permite que os desenvolvedores:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Evitem conflitos de vers\u00f5es<\/strong>: Assegura que todos os componentes do projeto funcionem com compatibilidade, evitando que atualiza\u00e7\u00f5es incompat\u00edveis quebrem funcionalidades existentes.<\/li>\n\n\n\n<li><strong>Mantenham consist\u00eancia<\/strong>: Todos os desenvolvedores trabalham com as mesmas vers\u00f5es de cada depend\u00eancia, garantindo que o software se comporte de maneira uniforme, independentemente do ambiente de desenvolvimento.<\/li>\n\n\n\n<li><strong>Facilitem upgrades<\/strong>: Atualizar um pacote \u00e9 t\u00e3o simples quanto modificar a vers\u00e3o em uma configura\u00e7\u00e3o e deixar que o gerenciador trate de resolver qualquer quest\u00e3o de compatibilidade.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"has-large-font-size\"><strong>Vantagens de instalar bibliotecas e componentes diretamente no projeto<\/strong><\/p>\n\n\n\n<p>Um das grandes vantagens de outras IDE\/linguagens de desenvolvimento \u00e9 jutamente instalar componentes e bibliotecas diretamente no projeto, ao inv\u00e9s de instalar na IDE, como acontece no Delphi. Isso muitas vezes dificulta a reinstala\u00e7\u00e3o do Delphi quando h\u00e1 necessidade, por isso usar o Boss no dia a dia torna a vida do desenvolvedor mais f\u00e1cil. Instalar componentes diretamente no projeto ao inv\u00e9s de no ambiente de desenvolvimento Delphi traz benef\u00edcios significativos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Flexibilidade e Isolamento<\/strong>: Permite que diferentes projetos usem vers\u00f5es diferentes de uma mesma biblioteca sem interfer\u00eancia, facilitando testes e upgrades.<\/li>\n\n\n\n<li><strong>Simplifica\u00e7\u00e3o do controle de vers\u00f5es e colabora\u00e7\u00e3o<\/strong>: Quando as bibliotecas est\u00e3o integradas ao projeto, as informa\u00e7\u00f5es de vers\u00e3o s\u00e3o compartilhadas atrav\u00e9s do controle de vers\u00e3o, melhorando a colabora\u00e7\u00e3o em equipe.<\/li>\n\n\n\n<li><strong>Reprodutibilidade de ambientes<\/strong>: Novos desenvolvedores podem configurar seus ambientes rapidamente, simplesmente clonando o reposit\u00f3rio e instalando as depend\u00eancias necess\u00e1rias.<\/li>\n<\/ul>\n\n\n\n<p>Claro que continuaremos instalando componentes diretamente na IDE, entretanto podemos compatibilizar nossas pr\u00f3prias bibliotecas com o Boss, assim podemos simplesmente instalar tais bibliotecas diretamente no projeto. Tenho certeza que voc\u00ea tem aquela unit de fun\u00e7\u00f5es ou conjunto de units com diversas fun\u00e7\u00f5es que voc\u00ea sempre usa em diversos projetos diferentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"has-large-font-size\"><strong>Onde o GitHub entra nessa hist\u00f3ria?<\/strong><\/p>\n\n\n\n<p>O GitHub \u00e9 crucial para o gerenciamento de c\u00f3digo-fonte usando Git, apesar do Boss ser compat\u00edvel com outras ferramentas. Ele oferece funcionalidades que facilitam a colabora\u00e7\u00e3o entre desenvolvedores, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Controle de vers\u00e3o<\/strong>: Manter um hist\u00f3rico completo de altera\u00e7\u00f5es, permitindo reverter para vers\u00f5es anteriores se necess\u00e1rio.<\/li>\n\n\n\n<li><strong>Issues e Pull Requests<\/strong>: Gerenciar tarefas e melhorias, al\u00e9m de revisar e discutir mudan\u00e7as no c\u00f3digo antes de integr\u00e1-las ao projeto principal.<\/li>\n\n\n\n<li><strong>Releases e Tags<\/strong>: Marcar vers\u00f5es espec\u00edficas do software para libera\u00e7\u00e3o, usando tags para controlar vers\u00f5es est\u00e1veis.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"has-large-font-size\"><strong>Criando um projeto teste no GitHub<\/strong><\/p>\n\n\n\n<p>N\u00e3o vamos nos aprofundar no GitHub, vamos falar somente dos passos necess\u00e1rios pra colocar seu projeto l\u00e1 e compatibilizar para que voc\u00ea possa fazer a instala\u00e7\u00e3o da sua biblioteca por Boss em seus projetos. <\/p>\n\n\n\n<p><em>Requisito: Ter uma conta v\u00e1lida no GitHub.<\/em><\/p>\n\n\n\n<p>Nesse tutorial vamos simular um cen\u00e1rio. Imagine que voc\u00ea possui uma unit recheada de fun\u00e7\u00f5es e procedimentos gen\u00e9ricos que voc\u00ea costuma usar em seus projetos. N\u00f3s vamos criar um reposit\u00f3rio, armazenar essa fun\u00e7\u00e3o e compatibilizar para que possamos us\u00e1-la com o Boss.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Login no GitHub<\/strong>: Acesse sua conta.<\/li>\n\n\n\n<li><strong>Criar reposit\u00f3rio<\/strong>: Clique em &#8220;New repository&#8221;.<\/li>\n\n\n\n<li><strong>Configurar reposit\u00f3rio<\/strong>: Defina o nome, descri\u00e7\u00e3o e visibilidade (p\u00fablica ou privada).<\/li>\n\n\n\n<li><strong>Inicializar reposit\u00f3rio<\/strong>: Opcionalmente, adicione um README, .gitignore, e escolha uma licen\u00e7a.<\/li>\n\n\n\n<li><strong>Criar reposit\u00f3rio<\/strong>: Clique em &#8220;Create repository&#8221;.<\/li>\n<\/ol>\n\n\n\n<p>Uma dica \u00e9 escolher o .gitignore e marcar a linguagem Delphi. Isso far\u00e1 com que ao subir vers\u00f5es novas da sua biblioteca para o GitHub, arquivos desnecess\u00e1rios n\u00e3o sejam enviados, tais como .dcus, arquivos de hist\u00f3rico do Delphi, entre outros arquivos. Eis um exemplo de configura\u00e7\u00e3o abaixo:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"774\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-1024x774.png\" alt=\"\" class=\"wp-image-584\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-1024x774.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-300x227.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-768x581.png 768w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image.png 1062w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>O nome do reposit\u00f3rio ser\u00e1 usado para fazer a instala\u00e7\u00e3o pelo Boss. No exemplo acima teremos a seguinte linha de comando:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:sh decode:true \" >boss install github.com\/adrianosantostreina\/TestBoss<\/pre><\/div>\n\n\n\n<p>N\u00e3o \u00e9 necess\u00e1rio adicionar <strong>https:\/\/<\/strong> no Boss. Basta incluir <code>github.com\/&lt;usuario>\/&lt;nome_biblioteca><\/code>, ou seja, bem f\u00e1cil.<\/p>\n\n\n\n<p>Em seguida, voc\u00ea ser\u00e1 redirecionado para a tela principal do seu reposit\u00f3rio, que se parecer\u00e1 com essa tela.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"939\" height=\"641\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-1.png\" alt=\"\" class=\"wp-image-586\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-1.png 939w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-1-300x205.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-1-768x524.png 768w\" sizes=\"(max-width: 939px) 100vw, 939px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/adrianosantos.link\/treinamentos\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"800\" height=\"150\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1.png\" alt=\"\" class=\"wp-image-222\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1.png 800w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1-300x56.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1-768x144.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<p>O pr\u00f3ximo passo \u00e9 baixar esse reposit\u00f3rio e cadastr\u00e1-lo em uma ferramenta client de Git, recomendo o <a href=\"https:\/\/www.sourcetreeapp.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Source Tree,<\/a> que \u00e9 bem f\u00e1cil de usar e gratuito. Caso n\u00e3o tenha nenhum conhecimento sobre Git\/GitHub e Source Tree, vou deixar abaixo um v\u00eddeo do meu amigo <strong>Gabriel Baltazar <\/strong>que vai abrir sua mente e ensinar voc\u00ea a entrar nesse mundo de GitHub.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Git - Pr\u00e1ticas no versionamento de c\u00f3digo\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/j46Q3hbrlpc?start=1&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Download da biblioteca<\/strong><\/p>\n\n\n\n<p>Voc\u00ea deve estar pensando:<em> &#8220;Mas acabei de criar a biblioteca, n\u00e3o tenho nada, por que fazer o download.&#8221;<\/em> Costumo realizar esse passo para deixar a biblioteca salva em um diret\u00f3rio comum no meu computador onde poderei fazer altera\u00e7\u00f5es nela quando necess\u00e1rio e subir a vers\u00e3o nova. Voc\u00ea pode fazer tudo isso direto no GitHub, por\u00e9m \u00e9 bem mais f\u00e1cil fazer local.<\/p>\n\n\n\n<p>Vou imaginar que voc\u00ea voc\u00ea instalou o Source Tree, ele \u00e9 f\u00e1cil e as fun\u00e7\u00f5es nele s\u00e3o bem parecidas com outras ferramentas, como o GitKraken por exemplo. <\/p>\n\n\n\n<p>Ao abrir o Source Tree, crie uma nova Aba e ent\u00e3o clique no bot\u00e3o <strong>Clone<\/strong>. Retorne ao GitHub, clique no bot\u00e3o <strong>&lt;> Code<\/strong> e copie o endere\u00e7o do git:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"494\" height=\"455\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-3.png\" alt=\"\" class=\"wp-image-589\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-3.png 494w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-3-300x276.png 300w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><\/figure>\n\n\n\n<p>Cole o endere\u00e7o no primeiro campo do Source Tree. A ferramenta selecionar\u00e1 automaticamente uma pasta no seu computador pra fazer o downloa, modifique a pasta se necess\u00e1rio e tamb\u00e9m o nome caso seja o seu desejo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"619\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-2.png\" alt=\"\" class=\"wp-image-588\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-2.png 808w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-2-300x230.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-2-768x588.png 768w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/figure>\n\n\n\n<p>Uma vez feito o download, agora \u00e9 s\u00f3 copiar as units que compoem sua biblioteca para dentro da pasta. O Source Tree ir\u00e1 detectar automaticamente as mudan\u00e7as no diret\u00f3rio. Para enviar os arquivos para o GitHub voc\u00ea precisar\u00e1 fazer um <strong>Commit<\/strong>, clique no bot\u00e3o correspondente. Em seguida clique em <strong>Stage all<\/strong> para que todos os arquivos passem a ser monitorados pelo Source Tree, d\u00ea uma descri\u00e7\u00e3o para o commit e confirme. Por fim, clique em Push e confirme. O Push ir\u00e1 enviar os arquivos para o GitHub online.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"603\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-4.png\" alt=\"\" class=\"wp-image-590\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-4.png 1024w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-4-300x177.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-4-768x452.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Todos esses passos e detalhes voc\u00ea aprender\u00e1 no v\u00eddeo que compartilhei anteriorente.<\/p>\n\n\n\n<p>Retorne agora para o GitHub e perceba as mudan\u00e7as. Pra organizar o projeto criei uma pasta chamada <strong>src<\/strong> onde toda a minha biblioteca ficar\u00e1 armazenada. Veja um exemplo abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"939\" height=\"407\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-5.png\" alt=\"\" class=\"wp-image-591\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-5.png 939w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-5-300x130.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-5-768x333.png 768w\" sizes=\"(max-width: 939px) 100vw, 939px\" \/><\/figure>\n\n\n\n<p>\u00c9 interesssante criar branches, que s\u00e3o, grosseiramente falando, c\u00f3pias do c\u00f3digo-fonte com vers\u00f5es diferentes, assista ao v\u00eddeo e entenda melhor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"has-large-font-size\"><strong>Releases no GitHub: Uma vis\u00e3o detalhada<\/strong><\/p>\n\n\n\n<p>No GitHub, um &#8220;Release&#8221; \u00e9 uma funcionalidade que permite aos desenvolvedores distribuir vers\u00f5es finais de c\u00f3digo para usu\u00e1rios e outros desenvolvedores. \u00c9 uma maneira de empacotar e entregar software que inclui o c\u00f3digo fonte, bin\u00e1rios, documenta\u00e7\u00e3o e outros recursos necess\u00e1rios para o uso ou desenvolvimento do software. Os releases s\u00e3o tipicamente utilizados para marcar pontos espec\u00edficos na hist\u00f3ria de um projeto que s\u00e3o considerados est\u00e1veis ou que representam uma vers\u00e3o significativa do software.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Componentes de um release<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Tag<\/strong>: Cada release \u00e9 associado a uma tag espec\u00edfica no reposit\u00f3rio do Git. Uma tag funciona como uma refer\u00eancia est\u00e1tica para um ponto espec\u00edfico na linha do tempo do reposit\u00f3rio. Tags s\u00e3o frequentemente vers\u00f5es sem\u00e2nticas, como <code>v1.0.0<\/code>, <code>v2.0.0<\/code>, etc.<\/li>\n\n\n\n<li><strong>Bin\u00e1rios<\/strong>: Releases podem incluir arquivos bin\u00e1rios, que s\u00e3o vers\u00f5es compiladas do software que podem ser executadas em sistemas operacionais espec\u00edficos sem a necessidade de compilar o c\u00f3digo fonte.<\/li>\n\n\n\n<li><strong>Documenta\u00e7\u00e3o<\/strong>: Geralmente, documenta\u00e7\u00e3o relevante \u00e9 inclu\u00edda, como notas de lan\u00e7amento que detalham o que h\u00e1 de novo, melhorado ou corrigido na vers\u00e3o.<\/li>\n\n\n\n<li><strong>Artefatos Adicionais<\/strong>: Qualquer outro recurso relevante para o release, como scripts de instala\u00e7\u00e3o, exemplos de c\u00f3digo, ou outros documentos.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Processo de cria\u00e7\u00e3o de um Release<\/strong><\/p>\n\n\n\n<p>O processo de cria\u00e7\u00e3o de um release no GitHub \u00e9 integrado e orientado pela interface de usu\u00e1rio do site:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Acesso aos Releases<\/strong>: Na p\u00e1gina principal do reposit\u00f3rio no GitHub, h\u00e1 uma se\u00e7\u00e3o ou aba chamada &#8220;Releases&#8221; onde os usu\u00e1rios podem ver todos os releases existentes e criar novos.<\/li>\n\n\n\n<li><strong>Criar um Novo Release<\/strong>: Ao clicar em &#8220;Draft a new release&#8221;, voc\u00ea \u00e9 levado para uma p\u00e1gina onde pode configurar o novo release. Aqui, voc\u00ea seleciona a tag Git correspondente ao estado do c\u00f3digo que deseja liberar. Se a tag ainda n\u00e3o existir, voc\u00ea pode cri\u00e1-la nesse momento.<\/li>\n\n\n\n<li><strong>Adicionar Detalhes<\/strong>: Voc\u00ea pode adicionar um t\u00edtulo ao release e uma descri\u00e7\u00e3o detalhada, que geralmente inclui um changelog. Este changelog pode ser autom\u00e1tico, baseado em commits, ou manual, com descri\u00e7\u00f5es detalhadas das altera\u00e7\u00f5es.<\/li>\n\n\n\n<li><strong>Upload de Artefatos<\/strong>: \u00c9 poss\u00edvel fazer upload de bin\u00e1rios e outros artefatos que deveriam acompanhar o release.<\/li>\n\n\n\n<li><strong>Publicar o Release<\/strong>: Ap\u00f3s configurar todos os detalhes e adicionar todos os artefatos necess\u00e1rios, o release pode ser publicado, tornando-o dispon\u00edvel para qualquer pessoa com acesso ao reposit\u00f3rio.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Benef\u00edcios de usar releases<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Organiza\u00e7\u00e3o<\/strong>: Releases ajudam a manter o projeto organizado, facilitando para usu\u00e1rios e desenvolvedores encontrar vers\u00f5es espec\u00edficas do software.<\/li>\n\n\n\n<li><strong>Rastreabilidade<\/strong>: Cada release \u00e9 imut\u00e1vel uma vez criado, o que significa que os usu\u00e1rios podem sempre voltar a uma vers\u00e3o anterior se a mais recente apresentar problemas.<\/li>\n\n\n\n<li><strong>Comunica\u00e7\u00e3o<\/strong>: As notas de release permitem que os desenvolvedores comuniquem eficientemente o que foi alterado, corrigido ou melhorado em uma vers\u00e3o espec\u00edfica do software.<\/li>\n<\/ul>\n\n\n\n<p>Os releases s\u00e3o, portanto, uma parte integrante do ciclo de vida de desenvolvimento de software no GitHub, oferecendo uma forma robusta e acess\u00edvel de gerenciar e distribuir vers\u00f5es de software.<\/p>\n\n\n\n<p>O Release tamb\u00e9m ser\u00e1 importante para que possamos baixar o c\u00f3digo-fonte da nossa biblioteca em nosso projeto. Vamos criar um release, dar uma tag pra ele e fechar uma vers\u00e3o. Vamos l\u00e1:<\/p>\n\n\n\n<p>Na raiz da url da biblioteca note que \u00e0 direita h\u00e1 um link chamadao &#8220;Create a new release&#8221;. Clique nele e uma janela vazia ser\u00e1 criada. A primeira provid\u00eancia \u00e9 criar uma TAG. Clique em &#8220;Choose a tag&#8221;, digite uma tag e em seguida em &#8220;<strong>Create new tag: &#8230;<\/strong>&#8220;. Costumo usar sempre a letra &#8220;v&#8221; e uma vers\u00e3o de tr\u00eas d\u00edgitos, \u00e9 o mais comum no mercado, mas voc\u00ea pode mudar isso se preferir.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"492\" height=\"234\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-6.png\" alt=\"\" class=\"wp-image-593\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-6.png 492w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-6-300x143.png 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/><\/figure>\n\n\n\n<p>Adicione um t\u00edtulo e descri\u00e7\u00e3o. Veja um exemplo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"349\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-7.png\" alt=\"\" class=\"wp-image-594\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-7.png 602w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-7-300x174.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>Pronto, uma vez feito isso, criamos o primeiro Release e ele j\u00e1 est\u00e1 pronto para ser instalado pelo Boss. Isso mesmo! F\u00e1cil assim. Agora poderemos fazer a instala\u00e7\u00e3o dessa biblioteca em qualquer projeto simplesmente usando a linha de comando<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:sh decode:true \" >boss install github.com\/adrianosantostreina\/TestBoss<\/pre><\/div>\n\n\n\n<p class=\"has-large-font-size\"><strong>Instalando o Boss no Windows. <\/strong><\/p>\n\n\n\n<p>Gravei um v\u00eddeo para o meu canal onde mostro como fazer uso do Boss, portanto serei breve aqui no artigo, pois no v\u00eddeo voc\u00ea conseguir\u00e1 ter uma vis\u00e3o mais detalhada. Assista ao v\u00eddeo abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Boss - Como gerenciar depend\u00eancias no seu projeto?\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/oFHMMWSL1Sk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Acesse o GitHub oficial do Boss <a href=\"https:\/\/github.com\/hashLoad\/boss\" target=\"_blank\" rel=\"noreferrer noopener\">nesse link<\/a>. Voc\u00ea pode simplesmente clicar no <strong>Release <\/strong>\u00e0 direita do GitHub, at\u00e9 o fechamento desse artigo a vers\u00e3o era <strong>v3.0.12<\/strong>. Na janela que se abre, escolha o sistema operacional e baixe a vers\u00e3o correspondente. Creio que esteja usando o Windows, ent\u00e3o poder\u00e1 escolher entre a vers\u00e3o 32 e 64 bits.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"483\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-9.png\" alt=\"\" class=\"wp-image-597\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-9.png 490w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-9-300x296.png 300w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/figure>\n\n\n\n<p>Recomendo criar uma pasta em <strong>C:\\Boss<\/strong>, acho mais f\u00e1cil, por\u00e9m fica a seu crit\u00e9rio. Descompacte o arquivo e pronto, voc\u00ea ter\u00e1 o Boss dispon\u00edvel para uso. Recomendo que adicione um caminho nas vari\u00e1veis de ambiente do Windows para que voc\u00ea consiga acessar o Boss de qualquer lugar no Terminal do Windows. Com isso encerramos a instala\u00e7\u00e3o do Boss.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Usando o Boss e instalando sua biblioteca em um projeto<\/strong><\/p>\n\n\n\n<p>Agora vem a parte mais legal, vamos criar um projeto novo para exemplificar e instalar nele a nossa biblioteca criada e compatibilizada com o Boss. Crie um projeto simples no Delphi, salve em uma pasta e em seguida abra um terminal do Windows e navegue at\u00e9 a pasta do projeto exemplo, na raiz. <\/p>\n\n\n\n<p>Uso aqui o Git Bash dentro do Windows Terminal, criei uma pasta chamda Meu Projeto Exemplo e listei os arquivos na pasta. Veja que ele me mostra os arquivos de projeto e a unit principal.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"397\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-10.png\" alt=\"\" class=\"wp-image-598\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-10.png 941w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-10-300x127.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-10-768x324.png 768w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><\/figure>\n\n\n\n<p>No terminal a primeira provid\u00eancia \u00e9 inicializar a gest\u00e3o de depend\u00eancias com o comando <code>boss init<\/code>. Responda as perguntas que o Boss faz (opcionais, portanto voc\u00ea pode dar Enter em tudo se quiser). Isso far\u00e1 com que o Boss crie os arquivos <code>boss.json<\/code> e <code>boss-lock.json<\/code>. Agora basta fazermos a instala\u00e7\u00e3o da nossa biblioteca. Digite o comando:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:sh decode:true \" >boss install github.com\/&lt;usuario&gt;\/TestBoss<\/pre><\/div>\n\n\n\n<p>Lembre-se, <strong>&lt;usuario><\/strong> \u00e9 o seu nome de usu\u00e1rio no GitHub e ele comp\u00f5e a url da biblioteca. No meu caso ficou dessa forma.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"933\" height=\"682\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-11.png\" alt=\"\" class=\"wp-image-599\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-11.png 933w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-11-300x219.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-11-768x561.png 768w\" sizes=\"(max-width: 933px) 100vw, 933px\" \/><\/figure>\n\n\n\n<p>Uma vez executado o comando, o Boss far\u00e1 o download da biblioteca, criar\u00e1 uma pasta chamada modules e colocar\u00e1 a sua biblioteca nessa pasta. Em seguida ele adicionar\u00e1 o caminho da biblioteca no Library Path do seu projeto no Delphi, ou seja, far\u00e1 tudo que \u00e9 necess\u00e1rio pra que seu projeto tenha a biblioteca adicionada.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"364\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-12.png\" alt=\"\" class=\"wp-image-600\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-12.png 914w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-12-300x119.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/05\/image-12-768x306.png 768w\" sizes=\"(max-width: 914px) 100vw, 914px\" \/><\/figure>\n\n\n\n<p>No arquivos boss.json agora haver\u00e1 uma refer\u00eancia a biblioteca na tag depend\u00eancias, veja.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:js decode:true \" >{\n        \"name\": \"Meu Projeto Teste\",\n        \"description\": \"\",\n        \"version\": \"1.0.0\",\n        \"homepage\": \"\",\n        \"mainsrc\": \".\/src\",\n        \"projects\": [],\n        \"dependencies\": {\n                \"github.com\/adrianosantostreina\/testeboss\": \"^v1.0.0\"\n        }\n}<\/pre><\/div>\n\n\n\n<p>Um detalhe importante. Caso voc\u00ea n\u00e3o adicione um Release\/TAG, o download ser\u00e1 feito do mesmo modo, entretanto a vers\u00e3o ficar\u00e1 com o valor <strong>0.0.0<\/strong> no <code>boss.json<\/code>. Recomendo fortemente que insira a vers\u00e3o atrav\u00e9s da tag, isso \u00e9 uma premissa importante e ajudar\u00e1 voc\u00ea a gerenciar a vers\u00e3o da biblioteca adicionada. <\/p>\n\n\n\n<p>Quando uma nova vers\u00e3o da biblioteca estiver pronta, voc\u00ea pode novamente fazer o Commit\/Push no Source Tree, criar um novo Release no GitHub e ent\u00e3o atualizar a vers\u00e3o atrav\u00e9s do Boss usando:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:sh decode:true \" >boss update github.com\/&lt;usuario&gt;\/TestBoss<\/pre><\/div>\n\n\n\n<p>Fazendo isso o Boss automaticamente pegar\u00e1 a vers\u00e3o mais atual e far\u00e1 a instala\u00e7\u00e3o, ou voc\u00ea ainda poder\u00e1 informar qual vers\u00e3o espec\u00edfica deseja instalar, algo como:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >boss install github.com\/&lt;usuario&gt;\/TestBoss^v1.0.1<\/pre><\/div>\n\n\n\n<p>ou seja, informando qual a vers\u00e3o deseja instalar. F\u00e1cil n\u00e3o? E ainda \u00e9 poss\u00edvel desinstalar a biblitoteca usando:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:sh decode:true \" >boss uninstall github.com\/&lt;usuario&gt;\/TestBoss<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p class=\"has-large-font-size\"><strong>Conclus\u00e3o<\/strong><\/p>\n\n\n\n<p>A utiliza\u00e7\u00e3o do BOSS em conjunto com o GitHub transforma radicalmente a maneira como gerenciamos as depend\u00eancias e colaboramos em projetos Delphi. A integra\u00e7\u00e3o dessas ferramentas oferece uma abordagem sistem\u00e1tica para o controle de vers\u00f5es e a gest\u00e3o de bibliotecas, proporcionando uma s\u00e9rie de benef\u00edcios que incluem maior consist\u00eancia entre ambientes de desenvolvimento, facilidade de manuten\u00e7\u00e3o, e melhoria na colabora\u00e7\u00e3o entre equipes.<\/p>\n\n\n\n<p>Ao adotar o BOSS, os desenvolvedores Delphi podem se beneficiar da automa\u00e7\u00e3o no gerenciamento de pacotes, garantindo que todas as depend\u00eancias sejam tratadas de forma eficaz e que os projetos permane\u00e7am limpos e organizados. Por outro lado, o GitHub serve como um ponto central para o controle de vers\u00f5es e colabora\u00e7\u00e3o, oferecendo uma plataforma robusta para hospedar c\u00f3digo, gerenciar mudan\u00e7as atrav\u00e9s de pull requests e releases, e documentar cada etapa do desenvolvimento.<\/p>\n\n\n\n<p>As pr\u00e1ticas descritas neste artigo n\u00e3o apenas simplificam processos t\u00e9cnicos, mas tamb\u00e9m fortalecem a cultura de desenvolvimento, promovendo melhores pr\u00e1ticas e padr\u00f5es elevados de qualidade de c\u00f3digo. Em \u00faltima an\u00e1lise, a implementa\u00e7\u00e3o dessas ferramentas e metodologias \u00e9 um investimento significativo na qualidade, escalabilidade e sucesso de projetos de software desenvolvidos em Delphi, proporcionando uma base s\u00f3lida para o desenvolvimento cont\u00ednuo e a inova\u00e7\u00e3o no ecossistema de software moderno.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Comunidade no <a href=\"https:\/\/t.me\/AdrianoSantosCommunity\">Telegram<\/a><\/p>\n\n\n\n<p>\ud83d\ude80Comente no campo abaixo \ud83d\udc47\ud83d\udc47\ud83d\udc47 o que achou e qual sua d\u00favida.<\/p>\n\n\n\n<p>Te vejo na pr\u00f3xima<\/p>\n\n\n\n<p>Adriano Santos<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Boss \u00e9 uma ferramenta de gerenciamento de pacotes criada especificamente para o ambiente de desenvolvimento Delphi pela equipe HashLoad e \u00e9 OpenSource. Ele automatiza o processo de busca, instala\u00e7\u00e3o, atualiza\u00e7\u00e3o e remo\u00e7\u00e3o de bibliotecas e componentes Delphi, que s\u00e3o essenciais para o desenvolvimento de aplica\u00e7\u00f5es robustas. Funciona de maneira semelhante a outros gerenciadores de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":608,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=583"}],"version-history":[{"count":11,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions"}],"predecessor-version":[{"id":607,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions\/607"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/608"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}