小编Pie*_*eau的帖子

Gitlab 屏蔽变量

我似乎无法屏蔽 Gitlab CI 上的变量 -

我正在尝试上传 ssh 私钥,无论我做什么,它都拒绝屏蔽它。

那是我试图在 Gitlab 上存储一个私钥供我的生产服务器具有公钥的 Gitlab运行器使用。我不是在问如何在构建过程中将它介绍给跑步者,如这个问题的答案中所述

我使用的是 ed25519 密钥,因此字符开始时并非都是 base 64。

所以在生成密钥之后

$ cat gitlab
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmU....etc etc
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

我通过管道将它传输到 base64

$ cat gitlab|base64
Run Code Online (Sandbox Code Playgroud)

没有喜悦。

Gitlab 似乎也将换行符引入粘贴的文本/变量字段

所以我做了

$ cat gitlab|base64|tr -d '\r'
Run Code Online (Sandbox Code Playgroud)

乃至

$ cat gitlab|base64|tr -d '\r'|xclip
Run Code Online (Sandbox Code Playgroud)

我找到了这个人 ,这到底是怎么回事

$ cat gitlab|base64|base32|tr -d '\r'|xclip
Run Code Online (Sandbox Code Playgroud)

都没有快乐。

任何人得到这个工作?

gitlab-ci

4
推荐指数
1
解决办法
2352
查看次数

ldap3 库:修改具有多个值的属性

尝试修改具有多个值的 ldap 属性,似乎无法弄清楚语法。

我正在将ldap3库与 python3 一起使用。

文档给出了一个修改条目的两个属性示例- 但每个属性只有一个值。

该示例中的字典是我遇到的问题:

c.modify('cn=user1,ou=users,o=company',
     {'givenName': [(MODIFY_REPLACE, [<what do I put here>])]})
Run Code Online (Sandbox Code Playgroud)

我想修改 memberuid 属性,而不是只有一个值的“givenname”,该属性显然会有许多名称作为条目。

因此,我将所有 memberuid 放入一个列表中,进行修改,然后尝试将新的用户名/memberuid 列表提供给 MODIFY 命令。就像这样:

oldval = 'super.man'
newval = 'clark.kent'

existingmembers = ['super.man', 'the.hulk', 'bat.man']
newmemberlist = [newval if x==oldval else x for x in existingmembers]
# newmemberlist = ", ".join(str(x) for x in newmemberlist)
Run Code Online (Sandbox Code Playgroud)

我尝试过将 newmemberlist 作为列表传递

'memberuid': [(MODIFY_REPLACE, ['clark.kent', 'the.hulk','bat.man'])] 
Run Code Online (Sandbox Code Playgroud)

这给了我TypeError: 'str' object cannot be interpreted as an …

python ldap python-3.x

2
推荐指数
1
解决办法
3983
查看次数

让 pytest 中的猴子补丁工作

我正在尝试使用 pytest 为类方法开发一个测试,该方法从字符串列表中随机选择一个字符串。

它看起来本质上类似于下面的 givemeannumber 方法:

import os.path
from random import choice

class Bob(object):
  def getssh():
    return os.path.join(os.path.expanduser("~admin"), '.ssh')

  def givemeanumber():
    nos = [1, 2, 3, 4]
    chosen = choice(nos)
    return chosen
Run Code Online (Sandbox Code Playgroud)

第一种方法,getssh,在 Bob 类中只是pytest 文档中的例子

我的生产代码从数据库中获取字符串列表,然后随机选择一个。所以我希望我的测试获取字符串,然后选择第一个字符串而不是随机选择。这样我就可以针对已知字符串进行测试。

根据我的阅读,我认为我需要使用monkeypatching 来伪造随机化。

这是我到目前为止所得到的

import os.path
from random import choice
from _pytest.monkeypatch import MonkeyPatch
from bob import Bob

class Testbob(object):
    monkeypatch = MonkeyPatch()

    def test_getssh(self):
        def mockreturn(path):
            return '/abc'
        Testbob.monkeypatch.setattr(os.path, 'expanduser', mockreturn)
        x = Bob.getssh()
        assert x == '/abc/.ssh'

    def test_givemeanumber(self):
        Testbob.monkeypatch.setattr('random.choice', …
Run Code Online (Sandbox Code Playgroud)

python monkeypatching pytest

1
推荐指数
1
解决办法
7067
查看次数

标签 统计

python ×2

gitlab-ci ×1

ldap ×1

monkeypatching ×1

pytest ×1

python-3.x ×1