{"id":5940,"date":"2023-06-13T11:24:45","date_gmt":"2023-06-13T14:24:45","guid":{"rendered":"https:\/\/blog.botcity.dev\/?p=5940"},"modified":"2023-06-13T15:41:48","modified_gmt":"2023-06-13T18:41:48","slug":"como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado","status":"publish","type":"post","link":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/","title":{"rendered":"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado"},"content":{"rendered":"<p>\u00c9 poss\u00edvel que voc\u00ea j\u00e1 tenha ouvido falar sobre o GitHub Actions. E caso ainda n\u00e3o tenha tido a oportunidade de conhecer essa funcionalidade, aproveite e explore a documenta\u00e7\u00e3o sobre ela neste\u00a0<a href=\"https:\/\/docs.github.com\/pt\/actions\">link<\/a>.<\/p>\n<p>E para aproveitar a praticidade de realizar diversas a\u00e7\u00f5es em projetos a partir desta funcionalidade, n\u00f3s criamos uma fun\u00e7\u00e3o do GitHub Actions para automatizar a atualiza\u00e7\u00e3o dos bots, chamada BotCity Actions, e voc\u00ea pode encontr\u00e1-la dispon\u00edvel neste\u00a0<a href=\"https:\/\/github.com\/botcity-dev\/botcity-action-bots\">reposit\u00f3rio<\/a>.<\/p>\n<h2>Por que utilizar o BotCity Actions?<\/h2>\n<p>Sempre que podemos automatizar um processo para facilitar o nosso dia-a-dia, faz sentido aprendermos como faz\u00ea-lo e entendermos se faz sentido em nosso contexto e necessidade. Ent\u00e3o, caso voc\u00ea tenha um processo cont\u00ednuo de desenvolvimento dos seus bots, por que n\u00e3o facilitar o seu dia-a-dia e automatizar n\u00e3o apenas os processos de neg\u00f3cio e produto, mas tamb\u00e9m o deploy e atualiza\u00e7\u00e3o de suas releases?<\/p>\n<h2>Como funciona o BotCity Actions?<\/h2>\n<p>A nossa fun\u00e7\u00e3o realiza updates, deploys e releases de forma autom\u00e1tica para o nosso orquestrador, BotCity Maestro, sem a necessidade de implementa\u00e7\u00f5es manuais. Inclusive, caso voc\u00ea ainda n\u00e3o tenha familiaridade com a API do BotCity Maestro, para melhor aproveitamento, fique \u00e0 vontade para consultar nossa documenta\u00e7\u00e3o neste\u00a0<a href=\"https:\/\/documentation.botcity.dev\/pt\/maestro\/\">link<\/a>.<\/p>\n<h2>Aplicando a fun\u00e7\u00e3o BotCity Actions em seu projeto<\/h2>\n<p>Acompanhe o passo-a-passo abaixo. No exemplo, estamos considerando projetos constru\u00eddos com a linguagem Python. Contudo, fique \u00e0 vontade para utilizar outras linguagens e, caso tenha interesse, temos exemplos em nossa\u00a0<a href=\"https:\/\/documentation.botcity.dev\/pt\/how-to\/github-action-bot\/\">documenta\u00e7\u00e3o<\/a>\u00a0para configura\u00e7\u00e3o de projetos em Java, JavaScript e TypeScript.<\/p>\n<h3><a href=\"https:\/\/dev.to\/botcitydev\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado-o0i#0-configura%C3%A7%C3%A3o-do-projeto\" name=\"0-configura%C3%A7%C3%A3o-do-projeto\"><\/a>[0] Configura\u00e7\u00e3o do projeto<\/h3>\n<p>Como primeiro passo, voc\u00ea precisa adicionar uma estrutura de pastas em seu projeto. Primeiramente crie a pasta com o exato nome\u00a0<code>.github<\/code>\u00a0na raiz do seu projeto. Dentro dessa pasta, crie outra com o exato nome\u00a0<code>workflows<\/code>.<\/p>\n<p>Essa especifica\u00e7\u00e3o vem diretamente do GitHub e \u00e9 dessa forma que ser\u00e1 interpretado onde est\u00e3o as fun\u00e7\u00f5es que precisam ser executadas. Para maiores esclarecimentos, lembre-se de consultar a\u00a0<a href=\"https:\/\/docs.github.com\/pt\/actions\/quickstart\">documenta\u00e7\u00e3o<\/a>.<\/p>\n<h3>[1] Cria\u00e7\u00e3o do primeiro workflow<\/h3>\n<p>Neste ponto, estamos considerando que voc\u00ea j\u00e1 tenha bots desenvolvidos. Mas se quiser uma ajuda, d\u00e1 uma olhada nesse link da nossa\u00a0<a href=\"https:\/\/documentation.botcity.dev\/pt\/tutorials\/python-automations\/web\/\">documenta\u00e7\u00e3o<\/a>. Temos um tutorial bem interessante sobre como desenvolver um bot com os nossos frameworks Open Source.<\/p>\n<p>Ainda assim, ressaltamos que voc\u00ea pode usar bots constru\u00eddos com outras tecnologias em nosso orquestrador, por exemplo, Java, JavaScript, Selenium, scripts bash, entre muitos outros.<\/p>\n<p>Um dos eventos que podemos considerar em nossa action seria o\u00a0<code>push<\/code>\u00a0na branch\u00a0<code>main<\/code>. Isso significa que toda vez que ocorrer uma altera\u00e7\u00e3o na branch principal, voc\u00ea quer que um novo deploy seja feito no BotCity Maestro para atualizar o bot. Funciona dessa forma caso voc\u00ea esteja considerando algumas regras e boas pr\u00e1ticas do Git Flow, em que a branch\u00a0<code>main<\/code>\u00a0\u00e9 a branch de produ\u00e7\u00e3o.<\/p>\n<p>Neste passo, dentro da pasta\u00a0<code>workflows<\/code>, vamos criar o arquivo\u00a0<code>update_bot.yml<\/code>. E voc\u00ea dever\u00e1 adicionar o c\u00f3digo abaixo para considerar justamente as altera\u00e7\u00f5es explicadas acima do evento\u00a0<code>push<\/code>\u00a0na branch\u00a0<code>main<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>name: Update the latest version bot on BotCity Maestro.\r\n\r\non:\r\n    push:\r\n      branches:\r\n        - main\r\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\"><span style=\"color: #111111; font-family: Roboto, Arial, sans-serif; font-size: 1.368em; font-weight: bold;\">[2] Gerando o bot pela fun\u00e7\u00e3o BotCity Actions<\/span><\/div>\n<\/div>\n<\/div>\n<p>Para saber o que precisa ser adicionado na fun\u00e7\u00e3o, \u00e9 necess\u00e1rio tamb\u00e9m entender o \u00e9 necess\u00e1rio para o deploy do seu bot.<\/p>\n<p>Por exemplo, considerando que voc\u00ea desenvolveu sua automa\u00e7\u00e3o com o nosso framework Open Source, precisamos atender o seguinte pr\u00e9-requisito: gerar um arquivo zipado com o c\u00f3digo e as depend\u00eancias do bot, que pode ser criado a partir da execu\u00e7\u00e3o do script\u00a0<code>.\/build.sh<\/code>\u00a0ou\u00a0<code>.\/build.bat<\/code>, dependendo do sistema operacional. Esse script fica localizado na raiz do projeto criado a partir do nosso template do framework\u00a0<a href=\"https:\/\/documentation.botcity.dev\/pt\/frameworks\/desktop\/\">desktop<\/a>\u00a0ou\u00a0<a href=\"https:\/\/documentation.botcity.dev\/pt\/frameworks\/web\/\">web<\/a>.<\/p>\n<p>Ent\u00e3o, precisamos adicionar em nossa fun\u00e7\u00e3o as seguintes a\u00e7\u00f5es:<\/p>\n<ul>\n<li>Executar em um ambiente (que no caso escolhemos Ubuntu, pela facilidade e rapidez, contudo voc\u00ea pode analisar o seu caso em espec\u00edfico e entender se h\u00e1 depend\u00eancias importantes a serem consideradas e, se necess\u00e1rio, executar em um ambiente Windows ou MacOS, por exemplo);<\/li>\n<li>Dar a permiss\u00e3o para o arquivo\u00a0<code>build.sh<\/code>\u00a0ser executado;<\/li>\n<li>Rodar o comando\u00a0<code>.\/build.sh<\/code>.<\/li>\n<\/ul>\n<p>Com essas novas a\u00e7\u00f5es, nosso arquivo\u00a0<code>update_bot.yml<\/code>\u00a0ficar\u00e1 assim:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>name: Update the latest version bot on BotCity Maestro.\r\n\r\non:\r\n    push:\r\n      branches:\r\n        - main\r\njobs:\r\n  update-latest:\r\n    name: Update the latest version bot on BotCity Maestro.\r\n    #  Running the latest version of Ubuntu.\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      # Checking out the project.\r\n      - uses: actions\/checkout@v3\r\n      # Implemented executable permission to `.sh`\r\n      - name: Get permission to build.\r\n        run: chmod +x build.sh\r\n      # Execute to build.\r\n      - name: Execute to build.\r\n        run: .\/build.sh\r\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\"><span style=\"color: #111111; font-family: Roboto, Arial, sans-serif; font-size: 1.368em; font-weight: bold;\">[3] Utilizando a fun\u00e7\u00e3o<\/span><\/div>\n<\/div>\n<\/div>\n<p>A sequ\u00eancia de passos que adicionamos no arquivo\u00a0<code>update_bot.yml<\/code>\u00a0at\u00e9 o momento foi para definir um ambiente para buildar e tamb\u00e9m para criarmos o arquivo compactado que faremos o envio no deploy no Maestro. Contudo, agora precisamos configurar os passos para a fun\u00e7\u00e3o ser utilizada.<\/p>\n<p>Adicionamos, neste caso, alguns dados importantes para o deploy acontecer com sucesso. S\u00e3o eles: botId, technology (onde voc\u00ea deve informar a linguagem utilizada no seu bot e, em nosso exemplo, consideramos Python) e botPath (local na raiz do projeto onde o arquivo compactado estar\u00e1 para ser feito upload na plataforma do nosso orquestrador.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>name: Update the latest version bot on BotCity Maestro.\r\n\r\non:\r\n  push:\r\n    branches:\r\n      - main\r\njobs:\r\n  update-latest:\r\n    name: Update the latest version bot on BotCity Maestro.\r\n    #  Running the latest version of Ubuntu.\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      # Checking out the project.\r\n      - uses: actions\/checkout@v3\r\n      # Implemented executable permission to `.sh`\r\n      - name: Get permission to build.\r\n        run: chmod +x build.sh\r\n      # Execute to build.\r\n      - name: Execute to build.\r\n        run: .\/build.sh\r\n      - name: Using a Botcity action.\r\n        # Using the v1.0.0 version of botcity-action-bots\r\n        uses: botcity-dev\/botcity-action-bots@v1.0.0\r\n        with:\r\n          # Use the update function.\r\n          update: true\r\n          # Bot Id in Maestro.\r\n          botId: 'example'\r\n          # Technology utilized in bot\r\n          technology: 'python'\r\n          # Path from the root of the project where the generated .zip\/.jar will be.\r\n          botPath: '.\/bot.zip'\r\n        env:\r\n          # These secrets must be configured in your repository.\r\n          LOGIN: ${{ secrets.LOGIN }}\r\n          SERVER: ${{ secrets.SERVER }}\r\n          KEY: ${{ secrets.KEY }}\r\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\"><span style=\"font-size: 19px;\">Perceba que adicionamos tamb\u00e9m algumas vari\u00e1veis de ambiente como LOGIN, SERVER e KEY. Essas s\u00e3o secrets importantes para voc\u00ea conseguir utilizar o BotCity Maestro. Ent\u00e3o lembre-se de configurar essas chaves de maneira segura no seu reposit\u00f3rio.<\/span><\/div>\n<\/div>\n<\/div>\n<h3><a href=\"https:\/\/dev.to\/botcitydev\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado-o0i#onde-posso-encontrar-mais-dicas\" name=\"onde-posso-encontrar-mais-dicas\"><\/a>Onde posso encontrar mais dicas?<\/h3>\n<p>Voc\u00ea pode acessar o guia que criamos em nossa\u00a0<a href=\"https:\/\/documentation.botcity.dev\/pt\/how-to\/github-action-bot\/\">documenta\u00e7\u00e3o<\/a>\u00a0com muito mais dicas e orienta\u00e7\u00f5es sobre como utilizar o BotCity Actions, inclusive para criar releases e muito mais.<\/p>\n<p>Al\u00e9m disso, n\u00e3o esque\u00e7a de entrar em nossa\u00a0<a href=\"http:\/\/communitybotcitydev.slack.com\">comunidade<\/a>\u00a0para compartilhar seus projetos Open Source e tirar suas d\u00favidas com outras pessoas. Vai ser muito interessante aprender com a sua experi\u00eancia.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c9 poss\u00edvel que voc\u00ea j\u00e1 tenha ouvido falar sobre o GitHub Actions. E caso ainda n\u00e3o tenha tido a oportunidade de conhecer essa funcionalidade, aproveite e explore a documenta\u00e7\u00e3o sobre ela neste\u00a0link. E para aproveitar a praticidade de realizar diversas a\u00e7\u00f5es em projetos a partir desta funcionalidade, n\u00f3s criamos uma fun\u00e7\u00e3o do GitHub Actions para<\/p>\n","protected":false},"author":214060721,"featured_media":5945,"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_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[773027],"tags":[773181,773180,773179,773029,773055,773030],"class_list":["post-5940","post","type-post","status-publish","format-standard","has-post-thumbnail","category-automacao-python","tag-deploy","tag-github","tag-github-actions","tag-python-pt-br","tag-python-rpa","tag-rpa-pt-br"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado - Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a<\/title>\n<meta name=\"description\" content=\"Aprenda a utilizar fun\u00e7\u00f5es do GitHub Actions para automatizar o deploy e a atualiza\u00e7\u00e3o do seu bot Python RPA em produ\u00e7\u00e3o.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado - Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a\" \/>\n<meta property=\"og:description\" content=\"Aprenda a utilizar fun\u00e7\u00f5es do GitHub Actions para automatizar o deploy e a atualiza\u00e7\u00e3o do seu bot Python RPA em produ\u00e7\u00e3o.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-13T14:24:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-13T18:41:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lorhan Caproni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lorhan Caproni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/\"},\"author\":{\"name\":\"Lorhan Caproni\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/person\\\/c70dcd8d50fca4702dc06ce662e0f111\"},\"headline\":\"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado\",\"datePublished\":\"2023-06-13T14:24:45+00:00\",\"dateModified\":\"2023-06-13T18:41:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/\"},\"wordCount\":914,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Posts-2.png\",\"keywords\":[\"deploy\",\"github\",\"github actions\",\"python\",\"python rpa\",\"rpa\"],\"articleSection\":[\"Automa\u00e7\u00e3o Python\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/\",\"name\":\"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado - Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Posts-2.png\",\"datePublished\":\"2023-06-13T14:24:45+00:00\",\"dateModified\":\"2023-06-13T18:41:48+00:00\",\"description\":\"Aprenda a utilizar fun\u00e7\u00f5es do GitHub Actions para automatizar o deploy e a atualiza\u00e7\u00e3o do seu bot Python RPA em produ\u00e7\u00e3o.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Posts-2.png\",\"contentUrl\":\"https:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Posts-2.png\",\"width\":1280,\"height\":720,\"caption\":\"Fundo escuro com uma foto de um teclado de computador. No centro est\u00e1 o logo da BotCity na cor branca. Logo abaixo o texto \\\"python rpa + github actions\\\" e embaixo \\\"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado\\\".\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/2023\\\/06\\\/13\\\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/\",\"name\":\"Blog BotCity\",\"description\":\"Explore o blog BotCity com conte\u00fados para automatizar e governar em Python. Mantenha-se informado e melhore o desempenho tecnol\u00f3gico, a seguran\u00e7a e o ROI da sua empresa.\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#organization\",\"name\":\"BotCity\",\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo_botcity_2024_black.png\",\"contentUrl\":\"http:\\\/\\\/blog.botcity.dev\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo_botcity_2024_black.png\",\"width\":1611,\"height\":384,\"caption\":\"BotCity\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/#\\\/schema\\\/person\\\/c70dcd8d50fca4702dc06ce662e0f111\",\"name\":\"Lorhan Caproni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g\",\"caption\":\"Lorhan Caproni\"},\"description\":\"BotCity Cofounder and CEO\",\"sameAs\":[\"http:\\\/\\\/botcitydev.wordpress.com\"],\"url\":\"https:\\\/\\\/blog.botcity.dev\\\/pt-br\\\/author\\\/lorhanb8c3fbc9af\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado - Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a","description":"Aprenda a utilizar fun\u00e7\u00f5es do GitHub Actions para automatizar o deploy e a atualiza\u00e7\u00e3o do seu bot Python RPA em produ\u00e7\u00e3o.","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:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/","og_locale":"pt_BR","og_type":"article","og_title":"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado - Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a","og_description":"Aprenda a utilizar fun\u00e7\u00f5es do GitHub Actions para automatizar o deploy e a atualiza\u00e7\u00e3o do seu bot Python RPA em produ\u00e7\u00e3o.","og_url":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/","og_site_name":"Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a","article_published_time":"2023-06-13T14:24:45+00:00","article_modified_time":"2023-06-13T18:41:48+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png","type":"image\/png"}],"author":"Lorhan Caproni","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Lorhan Caproni","Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#article","isPartOf":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/"},"author":{"name":"Lorhan Caproni","@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/person\/c70dcd8d50fca4702dc06ce662e0f111"},"headline":"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado","datePublished":"2023-06-13T14:24:45+00:00","dateModified":"2023-06-13T18:41:48+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/"},"wordCount":914,"commentCount":0,"publisher":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#organization"},"image":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png","keywords":["deploy","github","github actions","python","python rpa","rpa"],"articleSection":["Automa\u00e7\u00e3o Python"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/","url":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/","name":"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado - Blog BotCity - Conte\u00fado para Automa\u00e7\u00e3o e Governan\u00e7a","isPartOf":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#primaryimage"},"image":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png","datePublished":"2023-06-13T14:24:45+00:00","dateModified":"2023-06-13T18:41:48+00:00","description":"Aprenda a utilizar fun\u00e7\u00f5es do GitHub Actions para automatizar o deploy e a atualiza\u00e7\u00e3o do seu bot Python RPA em produ\u00e7\u00e3o.","breadcrumb":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#primaryimage","url":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png","contentUrl":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png","width":1280,"height":720,"caption":"Fundo escuro com uma foto de um teclado de computador. No centro est\u00e1 o logo da BotCity na cor branca. Logo abaixo o texto \"python rpa + github actions\" e embaixo \"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado\"."},{"@type":"BreadcrumbList","@id":"https:\/\/blog.botcity.dev\/pt-br\/2023\/06\/13\/como-utilizar-o-github-actions-para-manter-seu-projeto-python-rpa-atualizado\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.botcity.dev\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Como utilizar o GitHub Actions para manter seu projeto Python RPA atualizado"}]},{"@type":"WebSite","@id":"https:\/\/blog.botcity.dev\/pt-br\/#website","url":"https:\/\/blog.botcity.dev\/pt-br\/","name":"Blog BotCity","description":"Explore o blog BotCity com conte\u00fados para automatizar e governar em Python. Mantenha-se informado e melhore o desempenho tecnol\u00f3gico, a seguran\u00e7a e o ROI da sua empresa.","publisher":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.botcity.dev\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/blog.botcity.dev\/pt-br\/#organization","name":"BotCity","url":"https:\/\/blog.botcity.dev\/pt-br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/logo\/image\/","url":"http:\/\/blog.botcity.dev\/wp-content\/uploads\/2025\/09\/logo_botcity_2024_black.png","contentUrl":"http:\/\/blog.botcity.dev\/wp-content\/uploads\/2025\/09\/logo_botcity_2024_black.png","width":1611,"height":384,"caption":"BotCity"},"image":{"@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blog.botcity.dev\/pt-br\/#\/schema\/person\/c70dcd8d50fca4702dc06ce662e0f111","name":"Lorhan Caproni","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4f02f5e361046d8a6d852df16da98ddff27755dc746d7151c3b577231cbf3ba?s=96&d=identicon&r=g","caption":"Lorhan Caproni"},"description":"BotCity Cofounder and CEO","sameAs":["http:\/\/botcitydev.wordpress.com"],"url":"https:\/\/blog.botcity.dev\/pt-br\/author\/lorhanb8c3fbc9af\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/blog.botcity.dev\/wp-content\/uploads\/2023\/06\/Posts-2.png","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pdx8c3-1xO","_links":{"self":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts\/5940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/users\/214060721"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/comments?post=5940"}],"version-history":[{"count":6,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts\/5940\/revisions"}],"predecessor-version":[{"id":5956,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/posts\/5940\/revisions\/5956"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/media\/5945"}],"wp:attachment":[{"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/media?parent=5940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/categories?post=5940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.botcity.dev\/pt-br\/wp-json\/wp\/v2\/tags?post=5940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}