我可以在 pubspec.yaml 中使用环境变量吗?

问题描述 投票:0回答:2

我的 Flutter 移动应用项目中有来自 GitLab 的私有依赖项。它在

pubspec.yaml
中通过 git 存储库链接指定,如果我使用 ssh,我可以成功运行
pub get
(我已生成 ssh 密钥并将其添加到我的 gitlab 帐户)

  my_private_package:
    git:
      url: ssh://git@************/my_private_package.git

现在我想使用 AppCenter 构建我的应用程序并部署到商店。在 AppCenter 构建阶段不可能使用 ssh 密钥,因此我看到的唯一可行的解决方案是使用 GitLab Deploy Token 作为环境变量来从 AppCenter 计算机访问我的私有包。访问存储库的 Git 链接变成这样:

  my_private_package:
    git:
      url: https://gitlab+deploy-token-1:${DEPLOY_TOKEN}@************/my_private_package.git

现在,据我了解,pubspec 无法以这种方式解析

DEPLOY_TOKEN
环境变量。
pub get
完成但出现错误:

Git error. Command: `git clone --mirror https://gitlab+deploy-token-1:******@*******/my_private_package.git /Users/***/Library/flutter/.pub-cache/git/cache/my_private_package***`
stdout:                                                                 
stderr: Cloning into bare repository '/Users/***/Library/flutter/.pub-cache/git/cache/my_private_package***'...
remote: HTTP Basic: Access denied                                       
remote: You must use a personal access token with 'read_repository' or 'write_repository' scope for Git over HTTP.
remote: You can generate one at https://*****/-/profile/personal_access_tokens
fatal: Authentication failed for 'https://gitlab.*****/my_private_package.git/'
exit code: 128   

我还尝试使用上面错误消息中提到的个人访问令牌,但得到了相同的结果。尽管如果指定了

git clone https://gitlab+deploy-token-1:${DEPLOY_TOKEN}@*******/my_private_package.git
环境变量,则命令行中的
DEPLOY_TOKEN
可以正常工作。

我的问题:是否可以直接使用

pubspec.yaml
中的环境变量?如果不是,我如何从另一台(不是 gitlab runner)CI 机器获取我的私有包?

flutter dart continuous-integration environment-variables pubspec
2个回答
0
投票

目前无法在 pubspec.yaml 中设置环境变量,如本线程中所述。作为解决方法,您可以在本地获取存储库并将其将其配置为路径包


0
投票

尽管 App Center 计划于 2025 年 3 月结束,iirc,但我们使用“克隆后”脚本为我们的其他私有依赖项添加 SSH 密钥。

# Add SSH key so that we can access dependencies in other private Bitbucket repos
# See https://github.com/microsoft/appcenter/issues/237#issuecomment-527991036
echo "Adding private SSH key for accessing Bitbucket dependencies in other repos"
mkdir -p ~/.ssh
ssh-keyscan -t rsa bitbucket.org >> ~/.ssh/known_hosts
echo $BITBUCKET_SSH_KEY | base64 -D > ~/.ssh/bitbucket_appcenter
chmod 600 ~/.ssh/bitbucket_appcenter
ssh-add ~/.ssh/bitbucket_appcenter

我们不久前就这样做了,效果很好,尽管我们不再使用 App Center 进行构建。

© www.soinside.com 2019 - 2024. All rights reserved.