我使用 gitlab ci 来构建 docker 镜像,我想安装 python。当我构建时,以下是我的 gitlab-ci.yml:
image: docker:stable
stages:
- test
- build
before-script:
- apt install -y python-dev python pip
test1:
stage: test
script:
...
- pytest
build:
stage: build
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)
但我的工作失败了
/bin/sh: eval: line : apt: not found
ERROR: Job failed: exit code 127
Run Code Online (Sandbox Code Playgroud)
我也试过 apt-get install 但结果是一样的。
我如何安装python?
我尝试使用gitlabRunner构建APK
当我构建apk时,我不想每次都下载所有构建文件
所以我尝试缓存.gradle / caches和.gradle / wrappers
以下是我的gitlab-ci.yml
sdk_build_job
image: myimage:latest
stage: sdk-build
script:
...
cache:
key: gradle-cache
- /root/.gradle/caches
- /root/.gradle/wrapper
Run Code Online (Sandbox Code Playgroud)
但是创建gradle-cache总是发出警告
Creating cache gradle-cache...
WARNING: /root/.gradle/caches: no matching files
WARNING: /root/.gradle/wrapper: no matching files
Archive is up to date!
Run Code Online (Sandbox Code Playgroud)
我不知道为什么找不到缓存和包装器目录
当我进入Docker容器并找到文件夹时,位置很好
root@runner-3d9fa57b-project-4-concurrent-0:~/.gradle# pwd
/root/.gradle
root@runner-3d9fa57b-project-4-concurrent-0:~/.gradle# ls -al
total 28
drwxr-xr-x 7 root root 4096 Dec 28 02:21 .
drwx------ 1 root root 4096 Dec 28 02:19 ..
drwxr-xr-x 6 root root 4096 Dec 28 02:20 caches
drwxr-xr-x 3 …Run Code Online (Sandbox Code Playgroud) 我想为 Graphql 创建 RolesGuard
我创建角色装饰器如下
export const Roles = (...roles: string[]) => SetMetadata('roles', roles);
Run Code Online (Sandbox Code Playgroud)
我创建 GqlAuthGuard 和 RolesGuard 如下
gql-gurad.ts
@Injectable()
export class GqlAuthGuard extends AuthGuard('jwt') {
getRequest(context: ExecutionContext){
const ctx = GqlExecutionContext.create(context);
return ctx.getContext().req;
}
}
role-guard.ts
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private readonly reflector: Reflector) {}
canActivate(context: ExecutionContext): boolean {
const roles = this.reflector.get<string[]>('roles', context.getHandler());
if (!roles) {
return true;
}
const request = context.switchToHttp().getRequest();
const user = request.user;
...
}
}
Run Code Online (Sandbox Code Playgroud)
但行const request = …
我想在 docker 镜像中安装 openssl 版本 1.0.2g 所以我写道Dockerfile:
RUN apt-get update
RUN apt-get install -y build-essential cmake zlib1g-dev libcppunit-dev git subversion && rm -rf /var/lib/apt/lists/*
RUN wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz -O - | tar -xz
WORKDIR /openssl_1.0.2g
RUN ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
Run Code Online (Sandbox Code Playgroud)
并尝试构建它:
Removing intermediate container 0666b2c5021f
---> e92f7ed1e3a0
Step 11/14 : WORKDIR /openssl_1.0.2g
Removing intermediate container c8e083d9a453
---> 112f18273e8f
Step 12/14 : RUN ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
---> Running in 4871c00e5c35
/bin/sh: 1: ./config: not found
The command '/bin/sh -c ./config --prefix=/usr/local/openssl …Run Code Online (Sandbox Code Playgroud) 我认为两种方法可以测试Drf序列化程序验证
以下是我的序列化器验证代码
def validate_md5(self, md5):
if len(md5) != 40:
raise serializers.ValidationError("Wrong md5")
return md5
Run Code Online (Sandbox Code Playgroud)
这是测试代码
1)
def test_wrong_validate_md5_2(self):
url = reverse('apk-list')
response = self.client.post(url, {'md5':'test'}, format='json')
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
2)
def test_wrong_validate_md5(self):
serializer = ApkSerializer(data=self.apk)
if len(self.apk.get('md5')) != 40:
self.assertEqual(serializer.is_valid(), False)
else:
self.assertEqual(serializer.is_valid(), True)
Run Code Online (Sandbox Code Playgroud)
有什么比另一个更好的?还是有最好的解决方案?
我练习测试驱动的编码 是否需要编写上述测试代码
这是我的芹菜任务
def task_a(arg1, arg2, arg3, arg4)
Run Code Online (Sandbox Code Playgroud)
我称这个任务如下
arg1是列表,arg2,3,4是整数
task_a.apply_async(arg1, arg2, arg3, arg4)
Run Code Online (Sandbox Code Playgroud)
我收到了一条错误消息
File "/opt/envDjango/lib/python3.5/site-packages/celery/app/task.py", line 518, in apply_async
check_arguments(*(args or ()), **(kwargs or {}))
TypeError: functools.partial object argument after ** must be a mapping, not int
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
我试着写一本字典并改变论点位置,他们都失败了......
我正在使用 typegraphql,并且我使用 resgiterEnumType 注册 DayOfWeek 枚举类型。
以下是我的 enum 和 registerEnumType 函数,它们在一个文件中。
export enum DayOfWeek {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
}
registerEnumType(DayOfWeek, {
name: "DayOfWeekType", // this one is mandatory
});
Run Code Online (Sandbox Code Playgroud)
当我运行程序时它运行良好。但是当我运行 jest test 时,我收到如下消息
Looks like you've forgot to provide experimental metadata API polyfill.
12 | }
13 |
> 14 | registerEnumType(DayOfWeek, {
| ^
15 | name: "DayOfWeekType", // this one is mandatory
16 | });
17 |
Run Code Online (Sandbox Code Playgroud)
如果我将 enum 和 registerEnumType 放在同一个文件中,则运行良好,测试失败。
如果我将 enum …
我使用 kops 在 aws 中创建 k8s 集群
我写了 kubernetes 集群名称: test.fuzes.io
api 网址: https://api.test.fuzes.io/api/v1
我用结果填写 CA 证书字段
kubectl get secret {secrete_name} -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
最后我用结果填充服务令牌字段
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')
但是当我保存更改时,我收到消息
There was a problem authenticating with your cluster. Please ensure your CA Certificate and Token are valid.
我无法安装带有 kubernetes 错误的舵机:404
我真的不知道我做错了什么。请帮我....
我有民意调查应用程序
以下是我的根网址
urlpatterns = [
path('poll/', include('myproject.poll.urls')),
]
Run Code Online (Sandbox Code Playgroud)
我有应用程序网址
router = DefaultRouter()
router.register(r'', PollViewSet)
urlpatterns = [
path('', include(router.urls))
]
Run Code Online (Sandbox Code Playgroud)
我使用 ViewSet 所以我可以使用reverse('poll-list'),reverse('poll-detail')...
我可以访问xxx.xxx.xxx.xxx/poll并且xxx.xxx.xxx.xxx/poll/1/......
xxx.xxx.xxx.xxx/api/v1/poll/但我想在访问时重定向(映射?)网址xxx.xxx.xxx.xxx/poll
我不想更改现有的网址。
因为我想将多个应用程序的视图捆绑到一个 api url 文件中。
我怎样才能做到这一点?最好的方法是什么?
django ×3
gitlab-ci ×3
docker ×2
celery ×1
dockerfile ×1
graphql ×1
jestjs ×1
kops ×1
kubernetes ×1
nestjs ×1
openssl ×1
python ×1
serializer ×1
testing ×1
typegraphql ×1
validation ×1