社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  sytech  »  全部回复
回复总数  10
4 年前
回复了 sytech 创建的主题 » gitlab容器扫描程序无法安装aws cli

这个 container_scanning 作业(默认情况下) uses the docker image registry.gitlab.com/security-products/container-scanning:4

您还可以看到此图像将其用户指定为 gitlab ,这对我来说意味着图像中的用户与您传统使用的大多数图像不同,默认情况下没有root权限。

因此,该用户将没有写入的权限 /usr/local/

你可以通过使用 sudo

- sudo ./aws/install

(或者,如您所述,您可以使用将安装定向到另一个不需要提升权限才能写入的位置。) -i -b 安装程序的标志)。

4 年前
回复了 sytech 创建的主题 » Gitlab ci-如果给定文件已被修改,则在合并时显示警告

没有特定的方法在MR UI中引发自定义用户定义的警告/消息。然而,可能有一些解决方案对你有效。

使用代码所有者

你可以用 CODEOWNERS 还有 approval rule 这需要在修改所拥有的文件时获得代码所有者的批准。这样,每次修改您定义的文件时,MR UI中都会出现一条审批规则。但是,它不会包含任何类型的用户定义的消息。

自定义批准规则

另一种方法可能是定义一个名为“你更新配置了吗?”之类的描述性自定义批准规则然而,这并不取决于文件是否被修改;它会出现在每一位先生身上。

approval UI

自定义管道作业

您可以使用自定义管道作业来确定是否需要进行检查。原则上,这个管道作业可以在检测到文件已更改时对您的MR进行评论。或者甚至可以分析是否需要更改配置文件并使管道失败。

定制服务/webhook

对于与您描述的类似的用例,我为MR事件创建了一个批准规则和一个MR webhook,根据MR的内容,只要确定不需要人工批准,就会自动提供来自bot用户的批准。不过,这需要创建一个服务来响应Webhook。

换句话说:如果不需要任何操作,bot会为您批准MR(满足定制批准规则)。如果需要采取行动,机器人将什么也不做,这意味着人类必须进行批准才能满足批准规则。

类似于机器人用户的类似评论可能也适用于您的用例。

在MRs中呈现信息的其他方式

GitLab的其他一些功能会导致消息出现在UI中,因此您可以(ab)使用这些功能来显示自定义ish消息,例如:

  1. Metrics reports 在夫人
  2. SAST scanning 结果是MRs
  3. 也许还有其他人?
4 年前
回复了 sytech 创建的主题 » 可以在GITLAB CI目录中间使用通配符。yml

是的,您可以在路径段的中间使用通配符。GitLab使用Ruby的 fnmatch 用于测试 changes: .

irb(main):002:0> File.fnmatch('server-*-files/**/*', 'server-a-files/foo/bar')
=> true

你的docker版本已经过时了。您需要运行docker CE至少1.17.04或更高版本(这是支持 delegated 添加了模式,但理想情况下应该安装更新的版本)。

如评论中所述,您当前的版本是1.13.1,不支持此模式。

要解决这个问题,您应该更新docker版本。

4 年前
回复了 sytech 创建的主题 » 如何在gitlab中从python重写JSON文件

使用文件api文件对象。 Reference

f = project.files.get(file_path='README.rst', ref='main')
decoded_content = f.decode()
new_content = modify_content(decoded_content) # you implement this

# update the contents and commit the changes
f.content = new_content
f.save(branch='main', commit_message='Update file')

你可以用 json.dumps 获取新内容的字符串。

f.content = json.dumps(data)
f.save(...)
4 年前
回复了 sytech 创建的主题 » 如何从GitLab管道向电报发送通知?

发送通知的一种简单方法(尤其是当您使用多个服务或聊天时)是使用 apprise .

要发送到一个电报频道:

apprise -vv --body="Notify telegram chat" \
  tgram://bottoken/ChatID1 \

这使得一次从管道中通知多个服务变得很容易,而无需针对每个服务的API编写代码(apprise为您处理)。

image: python:3.9-slim # or :3.9-alpine if you prefer a smaller image
before_script:
  - pip install apprise # consider caching PIP_CACHE_DIR for performance
script: | 
  # Set a notification to multiple telegram chats, a yahoo email account, 
  # Slack, and a Kodi Server with a bit of added verbosity:
  apprise -vv --body="Notify more than one service" \
    tgram://bottoken/ChatID1/ChatID2/ChatIDN \
    mailto://user:password@yahoo.com \
    slack://token_a/token_b/token_c \
    kodi://example.com
4 年前
回复了 sytech 创建的主题 » 在Gitlab管道的多个阶段中使用$CI_JOB_ID作为常量

使用 $CI_PIPELINE_ID instaed,这将在管道中的所有工作中保持不变。

variables:
  MY_ENV_VAR: env_$CI_PIPELINE_ID

看见 predefined environment variables 以供补充参考。

如果确实希望在一个作业中创建环境变量,并在管道的其余部分保持不变,可以使用 artifacts:reports:dotenv .

stages:
    - stage1
    - stage2

set_env:
  stage: .pre
  script:
    echo "MY_ENV_VAR=env_$CI_JOB_ID" > .myenv
  artifacts:
    reports:
      dotenv: .myenv

stage1_build:
    stage: stage1
    script:
        - echo $MY_ENV_VAR
stage2_build:
    stage: stage2
    script:
        - echo $MY_ENV_VAR
4 年前
回复了 sytech 创建的主题 » 为什么Gitlab CI/CD中的flask应用程序中的测试阶段失败?

在GitLab中,您创建的每个工作都是在一个全新的环境中开始的。所以,你必须在每项工作中安装你的需求。

你的 test message-requests: job不采取任何步骤来安装Flask或其他依赖项。你应该添加这些步骤。

4 年前
回复了 sytech 创建的主题 » 如何在GitLab CI中检测在创建合并请求时触发了管道

我们能否检测到是什么事件触发了合并请求范围内的管道?

是的,这包含在预定义的 CI_PIPELINE_SOURCE 变量,如 frakman1 answered .

我需要WebHook访问这个信息吗?

这取决于你想做什么。如上所述,该信息作为预定义变量在管道中固有地可用。然而,应该注意的是,只有某些事件会触发 merge request pipelines 完全

例如,合并请求上的注释不会触发管道。如果你想对评论或状态变化做出反应,你可能需要一个webhook。

管道源信息在webhooks和 list pipelines API source
Webhooks在 X-Gitlab-Event 标题和 payload 有关活动的信息。

还有另一种方法来做我的团队正在努力做的事情吗?

Webhook可能比依赖管道内作业更可靠,因为Webhook可以捕获比作业/管道更多的事件。例如,Webhooks可以在根本没有创建管道的情况下向您发送通知。如果您的管道因某种原因被阻塞/超时,它也会起作用。

然而,缺点是您需要开发和托管自己的web应用程序来处理传入的Webhook。

有很多 project integrations 内置于GitLab中,用于直接向各种服务发送通知Webhook。不幸的是,莱弗不是其中之一。

如果你想从乔布斯那里发送通知,我发现 apprise 大大简化了这一过程 supports ryver .

基本模板作业可能如下所示:

.send_notification:
  image: python:3.9-slim
  before_script:
    - pip install apprise
  variables:
    RYVER_ORG: "YourOrganization"
    # Define RIVER_TOKEN in your CI/CD variables settings
    NOTIFICATION_TITLE: "Placeholder Title"
    NOTIFICATION_BODY: "Placehodler Body"
  script:
    - apprise -vv -t "${NOTIFICATION_TITLE}" -b "${NOTIFICATION_BODY}" "ryver:///${RYVER_ORG}/${RYVER_TOKEN}"

将工作与 when: on_failure when: on_success 可能很有用:

stages:
  - build
  - build_notification

build:
  stage: build
  script:
    - make build

notify_build_failure:
  stage: build_notification
  when: on_failure
  extends: .send_notification
  variables:
    NOTIFICATION_TITLE: "Failed - $CI_PROJECT_NAME pipeline $CI_PIPELINE_ID"
    NOTIFICATION_BODY: "The build failed for the pipeline. See $CI_PIPELINE_URL"


notify_build_success:
  stage: build_notification
  when: on_success # the default
  extends: .send_notification
  variables:
    NOTIFICATION_TITLE: "Build Success - $CI_PROJECT_NAME pipeline $CI_PIPELINE_ID"
    NOTIFICATION_BODY: "The build has succeeded. See $CI_PIPELINE_URL"

或者使用默认值 after_script 即使作业失败也会运行。这是一个简单的方法,让你的 ryver.sh 脚本在每次作业后进行评估。脚本逻辑可以确定是否发送通知以及通知的内容。

default:
  after_script:
    - ./ryver.sh
5 年前
回复了 sytech 创建的主题 » django-限制前一个密码中出现“n”或更多字符

不,这在使用哈希密码时是不可能的。存储散列的全部意义在于不存储密码。

你可以阻止 准确的 与以前的密码匹配,但不是近似/模糊匹配。

不要试图以可逆状态、加密或其他方式存储密码。这样做的网站有一个耻辱大厅。加密密码是非常困难的 仅仅 比以明文存储更安全,而且实际上根本不安全。没有理由这么做。