keboola / storage-backend
Requires
- php: ^8.1
- ext-json: *
- ext-odbc: *
- ext-pdo: *
- aws/aws-sdk-php: ^3
- doctrine/dbal: ^3.3
- google/cloud-bigquery: ^1.23
- google/cloud-storage: ^1.27
- google/protobuf: ^3.21
- keboola/common-exceptions: ^1
- keboola/csv-options: ^1
- keboola/php-csv-db-import: ^6
- keboola/php-file-storage-utils: ^0.2.2
- keboola/php-temp: ^2.0
- keboola/php-utils: ^4.1
- keboola/retry: ^0.5.0
- microsoft/azure-storage-blob: ^1.4
- symfony/console: ^5.2|^6
- symfony/filesystem: ^5.2|^6
- symfony/process: ^4.4|^5.0|^6.0
Requires (Dev)
- keboola/coding-standard: ^15
- keboola/phpunit-retry-annotations: ^0.3.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.1
- phpstan/phpdoc-parser: ^1.6
- phpstan/phpstan: ^1.4
- phpstan/phpstan-phpunit: ^1
- phpstan/phpstan-symfony: ^1.1
- phpunit/phpunit: ^9
- react/async: ^4||^3
- squizlabs/php_codesniffer: ^3
- symfony/finder: ^5.4
- symplify/monorepo-builder: 11.1.30.72
- dev-main
- dev-jirka-ct-1687-update-odbc
- dev-odin-KAB-312
- dev-zajca-fix-distinct-on-nonnative-tables-2
- dev-zajca-ct-1642
- dev-zajca-ct-950-ignore-columns
- dev-zajca-fix-wrong-tests
- dev-zajca-tag.php
- dev-big-160-update-common
- dev-zajca-big-171
- dev-revert-84-zajca-ct-1118
- dev-zajca-ct-1118
- dev-BIG-126-external-buckets-2
- dev-BIG-126-external-buckets
- dev-big-153-roman-improve-type-hint
- dev-zajca-BIG-157
- dev-zajca-new-err-code
- dev-zajca-big-142
- dev-zajca-fix-zero-length
- dev-zajca-kbc-1003
- dev-zajca-CT-666-snflk-null
- dev-php81
- dev-roman-finish-release
- dev-ct-835-fixx-export-null
- dev-ct-843-fix-numeric-value-is-empty-string
- dev-CT-843-null-import
- dev-PST-631_SNFLK-add-missing-types
- dev-add-ie-lib-repo
- dev-roman-improve-docker
This package is auto-updated.
Last update: 2024-09-18 12:14:49 UTC
README
存储后端相关工具的单一代码仓库
此仓库包含的包
添加新仓库
如果您想向单一代码仓库添加新仓库,请遵循说明。
资源配置
一些库需要安装存储在S3上的后端驱动程序,为此我们创建了一个cloudformation模板。这个cloudformation模板在CI对应的AWS堆栈上手动管理。当向单一代码仓库添加新库时,我们可以使用基础角色进行构建,并使用如main.yml中第32行的设置,或者将新角色添加到cloudformation模板中,并将必要的资源分配给它。
- name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: ${{ env.AWS_CREDENTIALS_ROLE_TO_ASSUME }} aws-region: ${{ env.AWS_CREDENTIALS_REGION }}
如何使用单一代码仓库和包
我们使用symplify/monorepo-builder维护单一代码仓库。
要下载存储在S3上的驱动程序,请使用AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY(导出它们或在docker compose构建命令中使用--build-arg选项)从AWS账户"Dev - Main Legacy" -> 创建用户namesurname-kbc-drivers-download并添加策略"DriversDownload")。
基础docker服务是dev
。要安装依赖项,请使用
docker compose build dev docker compose run dev composer install docker compose run dev vendor/bin/monorepo-builder
单一代码仓库中各个包的服务名称以dev-
为前缀。因此,如果我们想为php-table-backend-utils
包安装composer,我们使用以下命令
docker compose build dev-php-table-backend-utils docker compose run dev-php-table-backend-utils composer install
然后运行例如单元测试,如下所示
docker compose run dev-php-table-backend-utils composer tests-unit
通过分离包并单独安装每个包,在运行上述命令时。因为monorep中的其他包是从packagist.org安装的,所以各个包之间的自定义设置不会共享。
例如,php-table-backend-utils
需要在php-datypes
中,但如果我们对php-datatypes
进行更改并调用docker compose run dev-php-table-backend-utils composer tests-unit
,更改将不会反映在php-table-backend-utils
测试中。
在本地运行测试
为了能够运行包括通过composer请求的所有更改和包的测试,我们可以使用全局phpunit。
docker compose run dev vendor/bin/phpunit packages/php-table-backend-utils/tests/Unit/
然而,通过在PHPStorm中创建新的CLI解释器,我们将实现更改将反映在整个单一代码仓库中。
因此,对于每个库,我们将创建自己的解释器。在创建新解释器时,还应为每个解释器单独添加环境变量。
例如,对于库php-table-backend-utils
,如图所示。
- 然后您需要配置
PHP->Test Frameworks
中的测试框架 - 点击+,然后选择PHPUnit by Remote Interpreter
- 然后在路径到脚本中选择
keboola/storage-backend/vendor/autoload.php
的路径 - 点击确定
发布
如果您想发布新版本的软件包,您需要
- 将PR合并到
main
分支 - 在main分支上创建并推送标签
<package>/<newVersion>
。例如,如果您想发布版本为7.7.0
的php-datatypes
,则标签为php-datatypes/7.7.0