我有一个 web 应用程序,由以下部分组成: - 前端存储库 (Angular 8) - 后端存储库 (Node.js/NestJS 6)
我使用 Gitlab 作为 SCM 提供程序、docker 注册表和 CI/CD 工具。安装、检查、测试(单元)和构建已经可以与 CI 配合使用。
现在我想介绍我使用 Cypress 在前端存储库中添加的 E2E 测试。
为了使测试正常工作,我需要 - 运行后端(使用 docker-compose),包括 S3 模拟和数据库(mongo) - 将演示数据插入后端(为此获得一个脚本) - 运行指向后端 API - 运行 cypress 测试
我的问题是:如何运行包含 CI 阶段中的依赖项的 dockerized 后端,以便我有一个后端实例来运行 e2e 测试?
我已经尝试在舞台内通过 docker-compose 运行后端。这导致容器启动,但无法从 gitlab-runner 容器内访问它们。
这是前端存储库 .gitlab-ci.yml 中的一个阶段:
e2e:
image: docker:stable
stage: e2e
script:
- apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make nodejs npm git curl
- pip install …Run Code Online (Sandbox Code Playgroud) continuous-integration gitlab-ci e2e-testing gitlab-ci-runner
我想创建用户权限管理。我在 Postgresql 中使用 Typeorm。这是用户实体中权限的列定义:
@Column({
type: 'text',
array: true
})
permissions: UserPermission[] = [];
Run Code Online (Sandbox Code Playgroud)
这是 UserPermission 枚举:
export enum UserPermission {
APP_USER = 'APP_USER',
USER_ADMIN = 'USER_ADMIN',
SUPERADMIN = 'SUPERADMIN'
}
Run Code Online (Sandbox Code Playgroud)
我想找到一位拥有“SUPERADMIN”权限的用户,但我无法在解释如何执行此操作的文档/github 问题中找到正确的位置。我已经为此花费了一个多小时,我想这是一项简单的任务。
是否有类似“包含”的东西来检查权限数组是否包含特定元素和/或包含多个元素?
const user = await this.userRepository.findOne({
where: {
permissions: Includes('SUPERADMIN')
}
});
Run Code Online (Sandbox Code Playgroud)
如果有人可以将我指向正确的文档页面,我将非常感激:)
编辑:
以下对我有用,但我认为它还不是最佳的:
@Column('simple-json')
permissions: string[];
Run Code Online (Sandbox Code Playgroud)
let user = await this.userRepository.createQueryBuilder('user')
.where('user.permissions like :permissions', { permissions: `%"${UserPermission.SUPERADMIN}"%`})
.getOne();
Run Code Online (Sandbox Code Playgroud)