首页 > 编程问答 >每个环境有不同的存储库

每个环境有不同的存储库

时间:2024-08-05 15:43:29浏览次数:7  
标签:python github-actions python-poetry aws-codeartifact

我们有一个内部包,我们将其发布到 AWS 代码工件并在另一个项目中使用。

我们在 pyproject.toml 中配置了针对不同环境(例如,开发和生产)的不同存储库,如下所示。部署时,相关存储库的凭据被配置为环境变量。

当我们部署到 prod 时,它会尝试连接到开发存储库并收到授权错误(预期)。我相信这是因为开发仓库是首先定义的。管理和配置它的正确方法是什么,以便我们可以针对不同的环境使用不同的存储库?

我们使用 GitHub Actions 进行部署。

[[tool.poetry.source]]
name = "codeartifact-dev"
url = "https://dev-env.com/pypi/beteende-constructs/simple/"
priority = "supplemental"

[[tool.poetry.source]]
name = "codeartifact-prod"
url = "https://prod-env.com/pypi/beteende-constructs/simple/"
priority = "supplemental"


pyproject.toml 文件中定义多个仓库的思路是正确的,但 Poetry 不会自动根据环境选择仓库。需要在部署过程中,根据环境设置 poetry 的配置。

以下是如何使用 GitHub Actions 实现此目的的步骤:

  1. 创建环境变量 : 在 GitHub 仓库的 Secrets 中,为每个环境分别创建存储库 URL 的环境变量,例如: CODEARTIFACT_DEV_URL CODEARTIFACT_PROD_URL

  2. 修改 GitHub Actions 工作流 : 在的 GitHub Actions 工作流文件中,根据部署环境设置 poetry 配置,使用相应的环境变量。例如,对于生产环境:

jobs:
  deploy-prod:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.x'
      - name: Configure Poetry
        run: |
          poetry config repositories.codeartifact-prod "${{ secrets.CODEARTIFACT_PROD_URL }}"
          poetry config source add codeartifact-prod -u "${{ secrets.CODEARTIFACT_PROD_URL }}"
      - name: Install dependencies
        run: poetry install
      # ... other deployment steps

解释 :

  • 我们使用 poetry config repositories.codeartifact-prod ... 命令更新 codeartifact-prod 仓库的 URL,使用存储在 GitHub Secrets 中的 CODEARTIFACT_PROD_URL 环境变量。
  • 我们使用 poetry config source add ... 命令将 codeartifact-prod 添加为 Poetry 的 source,并指定其 URL。这确保 Poetry 能够找到并使用正确的仓库。

  • 重复开发环境 : 为开发环境创建一个类似的工作流,使用 CODEARTIFACT_DEV_URL 环境变量。

其他注意事项 :

  • 确保在 pyproject.toml 中, codeartifact-dev codeartifact-prod priority 设置为相同的值,例如 supplemental ,以便 Poetry 能够根据配置找到正确的仓库。
  • 如果在部署过程中需要身份验证,请确保在 GitHub Secrets 中设置必要的凭据,并在工作流中配置 poetry 使用它们。

通过这种方式,可以在部署到不同环境时,使用不同的 CodeArtifact 仓库,并避免授权错误。

标签:python,github-actions,python-poetry,aws-codeartifact
From: 78833204

相关文章

  • 使用 Python 打印此图案
    1010101010101010使用python打印此我已经尝试过defprint_pattern(rows):foriinrange(rows):start_char='1'ifi%2==0else'0'pattern=''.join(start_charifj%2==0else('0'ifs......
  • python discord bot nextcord 斜线命令 更改语言
    我想根据用户的不和谐语言更改斜杠命令的名称。如果语言是韩语/서버如果语言是英语/服务器像这样。我可以使用ctx.locale更改里面的内容,但我也想更改名称和描述。我应该怎么办?当我问ChatGPT时,他们说的很奇怪,谷歌上也没有任何信息。但是有一个机器人可以根据语言......
  • 学习Python的书籍推荐--《Python编程从入门到实践》
    版权信息:书名:Python编程:从入门到实践(第3版)作者:[美]埃里克·马瑟斯(EricMatthes)译者:袁国忠评价:1.北京邮电大学副教授陈光老师是这样评价的:    编程教学之道,一是重在实践,二是循序渐进一一通过巧妙的实战项目,激发和保持学习的热情,让学习渐入佳境。在这两方......
  • 我可以将 Python 与 javascript 结合起来用于网站或应用程序吗
    我不知道如果j添加Python和javascript可以吗我尝试过。但决定在继续之前询问一下是否可以继续但是如果我只使用javascript还是只使用python会更好吗?我只需要建议或答案将Python与Javascript结合用于网站或应用程序不仅完全可行,而且也是一种非常常见的做法!二者......
  • Python 网络抓取与请求和美丽的汤被需要 javascript 阻止
    我正在尝试从网站上抓取文本。我使用简单的代码:requests.get(url_here)。我的代码直到最近才有效。现在,当我使用请求时,我收到一条消息,而不是获取网站的文本:“该网站需要启用JavaScript!您使用的浏览器不支持JavaScript,或者已关闭JavaScript。“我已验证我的浏览器确实......
  • python实现局域网及广域网私人聊天(Socket库局域网应用)
    引言在当今这个数字化时代,即时通讯已成为我们日常生活的一部分。无论是通过手机还是电脑,人们都在寻找更高效、更私密的沟通方式。想象一下,在你自己的局域网内,与朋友或同事建立一个专属的聊天室,无需担心数据泄露或者被第三方监听。本文将引导你从零开始,利用Python和Socket库......
  • 使用 python 抓取网页
    我有以下网页</div><ahref="https://www.emag.ro/laptop-lenovo-thinkbook-15-iil-cu-procesor-intel-core-i7-1065g7-pana-la-3-90-ghz-15-6-full-hd-16gb-512gb-ssd-intel-iris-plus-graphics-free-dos-mineral-grey-20sm003jrm/pd/DKBK1TMBM/#reviews-section&......
  • Python:需要有关类方法的帮助
    我有一个类“Duck”和“Dog”,如下所示:classDuck:defquack(self):print("quack")classDog:defbark(self):print("Ijustbark")以两种方式定义了另一个类并启动:case:1classItQuacks:def__init__(self,animal):......
  • 查找分层股东关系:在 python 中重构嵌套 if
    我想找到公司之间的股东关系。在下面的示例中,“人员1”直接拥有“公司1”50%的股份,那么需要检查“公司1”是否也拥有其他公司的股份。“公司1”拥有“公司2”50%的股份,“公司3”拥有20%的股份。这意味着“人员1”间接拥有“公司2”和“公司3”的部分股份。此......
  • 解决Python的pip问题:WARNING: Retrying (Retry(total=1, connect=None, read=None, re
    相关:pip安装第三方库报错Retrying(Retry(total=1,connect=None,read=None,redirect=None,status=None))国内镜像源下载常用国内源:清华:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.u......