小编Str*_*ter的帖子

Github Actions 动态容器名称

概括:

Github Actions 允许使用 Docker 容器来运行作业,但它似乎不允许为此容器映像提供动态值(使用环境变量)。

这有效(不是所需的解决方案):

jobs:
  pytest-test:
    container:
      image: ghcr.io/ashrafgt/test:latest    ...
Run Code Online (Sandbox Code Playgroud)

这不起作用(所需的解决方案):

jobs:
  pytest-test:
    container:
      # env variables defined at the start of the workflow
      image: ${{ env.REGISTRY_NAME }}/test:${{ env.IMAGE_TAG }} 
    ...
Run Code Online (Sandbox Code Playgroud)

给出这个错误:

Invalid workflow file : .github/workflows/workflow.yaml
The workflow is not valid. Unrecognized named-value: 'env'. Located at position 1 within expression: env.REGISTRY_NAME
Run Code Online (Sandbox Code Playgroud)

除了执行 a 之外,还有其他方法可以做到这一点吗run: docker run ...

完整示例:

在此示例中,我尝试构建并推送 Docker 映像(用当前提交 SHA 标记),然后使用相同的映像来运行单元测试:

name: Main CI Pipeline

on: [push]

env:
  REGISTRY_NAME: ghcr.io/${{ github.repository_owner }} …
Run Code Online (Sandbox Code Playgroud)

continuous-integration docker github-actions

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

在 Gitlab CI 中将“only/ except”子句转换为“rules”子句

问题总结:

我的目标是添加一个rules子句来配置 Gitlab CI 作业,以便在设置环境变量或执行手动操作时运行。不幸的是,该步骤当前使用了onlyandexcept子句,因此我还必须将它们转换为rules语法,而我尚未完全掌握语法。

目前的职位定义:

deploy:
  only:
    - branches
  except:
    refs:
      - /flux-.*$/  
      - master
  stage: deploy
  when: manual
Run Code Online (Sandbox Code Playgroud)

所需更改:

我将更换

when: manual
Run Code Online (Sandbox Code Playgroud)

rules:
  - if: '$CI_ENVIRONMENT_NAME'
  - when: manual
Run Code Online (Sandbox Code Playgroud)

现在我想学习如何翻译这些only/except条款。我认为它将完全基于预定义的环境变量测试,尽管我不确定哪些变量对此翻译感兴趣。

非常感谢您的任何建议或指示。

gitlab-ci

12
推荐指数
1
解决办法
3万
查看次数

如何在Python中的Kubeflow容器化组件之间传递数据或文件

我正在探索 Kubeflow 作为部署和连接典型机器学习管道的各种组件的选项。我使用 docker 容器作为 Kubeflow 组件,到目前为止我无法成功使用ContainerOp.file_outputs对象在组件之间传递结果。

根据我对该功能的理解,创建并保存到声明为file_outputs组件之一的文件应该会导致它持续存在并可供以下组件读取。

这就是我尝试在管道 python 代码中声明这一点的方式:

import kfp.dsl as dsl 
import kfp.gcp as gcp

@dsl.pipeline(name='kubeflow demo')
def pipeline(project_id='kubeflow-demo-254012'):
    data_collector = dsl.ContainerOp(
        name='data collector', 
        image='eu.gcr.io/kubeflow-demo-254012/data-collector',
        arguments=[ "--project_id", project_id ],
        file_outputs={ "output": '/output.txt' }
    )   
    data_preprocessor = dsl.ContainerOp(
        name='data preprocessor',
        image='eu.gcr.io/kubeflow-demo-254012/data-preprocessor',
        arguments=[ "--project_id", project_id ]
    )
    data_preprocessor.after(data_collector)
    #TODO: add other components
if __name__ == '__main__':
    import kfp.compiler as compiler
    compiler.Compiler().compile(pipeline, __file__ + '.tar.gz')
Run Code Online (Sandbox Code Playgroud)

在组件的 python 代码中,data-collector.py我获取数据集,然后将其写入output.txt. 我可以从同一组件内的文件中读取内容,但不能在data-preprocessor.py我获得 …

kubeflow kubeflow-pipelines

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

将 yaml 文件注入 Argo 工作流程步骤的最佳方法是什么?

概括:

我们有一个 golang 应用程序,它根据请求将 Argo 工作流提交给 kubernetes 集群。我想将 yaml 文件传递​​给其中一个步骤,我想知道这样做的选项是什么。

环境:

  • 阿尔戈:v2.4.2
  • K8s:1.13.12-gke.25

额外细节:

最后,我想将此文件传递给测试步骤,如下例所示:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: test-
spec:
  entrypoint: test
  templates:
  - name: test
    container:
      image: gcr.io/testproj/test:latest
      command: [bash]
      source: |
        python test.py --config_file_path=/path/to/config.yaml
Run Code Online (Sandbox Code Playgroud)

此步骤中使用的图像将有一个 python 脚本,该脚本接收此文件的路径,然后访问它。

要使用 golang 提交 Argo 工作流,我们使用以下依赖项:

谢谢你。

go kubernetes argoproj argo-workflows

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

无法在带有 Docker 驱动程序的 Minikube 上使用 GPU

目标:

\n\n

我正在尝试在使用默认 Docker 驱动程序的 Minikube 集群上使用 Nvidia GPU 功能。

\n\n

问题:

\n\n

我可以使用nvidia-docker默认docker上下文,但是当切换到默认上下文时minikube docker-env,出现以下错误:

\n\n
$ docker run --gpus all nvidia/cuda:10.0-base nvidia-smi\ndocker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].\nERRO[0000] error waiting for container: context canceled\n
Run Code Online (Sandbox Code Playgroud)\n\n

环境:

\n\n
    \n
  • 乌班图18.04
  • \n
  • Minikube v1.10.0
  • \n
  • 码头工人版本:
  • \n
\n\n
$ docker version\nClient: Docker Engine - Community\n Version:           19.03.10\n API version:       1.40\n Go version:        go1.13.10\n Git commit:        9424aeaee9\n Built:             Thu …
Run Code Online (Sandbox Code Playgroud)

gpu docker minikube nvidia-docker

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

禁止ASP.Net核心身份JWT角色库身份验证

美好的一天。

该API适用于报价共享网络应用。

我安装了基于角色的JWT身份验证,其中我具有“成员”和“管理员”角色,并且这些角色的用户正确注册并能够检索令牌。

到目前为止,方法(或类)仅

[Authorize]
Run Code Online (Sandbox Code Playgroud)

可以通过注册令牌正确访问。

现在,一旦我添加了角色,就可以访问需要特定角色的方法或类

[Authorize(Role="Admin")]
Run Code Online (Sandbox Code Playgroud)

是禁止的(403),即使我确实通过Authorization标头传递了正确的令牌。

请注意:我已验证是否正确创建了用户(dbo.AspNetUsers),正确创建了角色(包含“管理员”和“成员”角色的dbo.AspNetRoles)以及正确映射了用户角色(dbo.AspNetUserRoles)。

这是Startup类,其中包含由Configure()调用的方法CreateRoles():

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }


    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<QuotContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<Member, IdentityRole>()
            .AddEntityFrameworkStores<QuotContext>()
            .AddDefaultTokenProviders();

        services.Configure<IdentityOptions>(options =>
        {
            // Password settings
            options.Password.RequireDigit = false;
            options.Password.RequiredLength = 4;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequireLowercase = false;
            options.Password.RequiredUniqueChars = 2;

            // Lockout settings
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
            options.Lockout.MaxFailedAccessAttempts = 10;
            options.Lockout.AllowedForNewUsers = true;

            // User settings …
Run Code Online (Sandbox Code Playgroud)

jwt asp.net-identity asp.net-core

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

如何在 GKE (Go) 中为 Google Cloud Storage 对象生成签名 URL

目标:

在 GKE Pod 内生成签名 URL,无需手动注入服务帐户 JSON 密钥。生成它们的语法需要服务帐户电子邮件和私钥。

//import "cloud.google.com/go/storage"
url, err := storage.SignedURL(bucketName, objectName, &storage.SignedURLOptions{
    ContentType:    contentType,
    GoogleAccessID: saEmail,
    PrivateKey:     saPrivateKey,
})
Run Code Online (Sandbox Code Playgroud)

换句话说,我想加载saEmailGKEsaPrivateKey节点中自动可用的默认凭据。

试图:

ctx := context.Background()
//errors ignored for brevity
//import "golang.org/x/oauth2/google"
creds, _ := google.FindDefaultCredentials(ctx, storage.ScopeReadWrite)
cfg, _ := google.JWTConfigFromJSON(creds.JSON)
url, _ := storage.SignedURL(bucketName, objectName, &storage.SignedURLOptions{
    ContentType:    contentType,
    GoogleAccessID: cfg.Email,
    PrivateKey:     cfg.PrivateKey,
})
Run Code Online (Sandbox Code Playgroud)

当我google.FindDefaultCredentials()在 GKE pod 中运行时,结果 JSON 为空。

环境:

  • Go1.13
  • GKE1.14.10-gke.36
  • cloud.google.com/gov0.58.0
  • cloud.google.com/go/storagev1.8.0

补充笔记:

我已经测试了两种可能的替代方案,涉及将服务帐户密钥 (JSON) …

go google-cloud-storage google-cloud-platform google-kubernetes-engine

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

通过 XMLHttpRequest 将数据从 JavaScript 发送到 PHP

再会。

我正在尝试将一个简单的数据从一个 php 文件 (manage.php) 发送到另一个 (view.php)。

我无法通过表单发送数据,我想通过 JS 脚本发送数据。这是我的尝试:

var read = function(id) {
  xmlhttp = new XMLHttpRequest();

  xmlhttp.open("POST", "view.php", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.send("id=" + id);
}
Run Code Online (Sandbox Code Playgroud)

在 view.php 中,使用 $_POST["id"] 会导致错误,指出索引“id”未定义。

发送数据的正确方法是什么?谢谢你。

javascript php ajax xmlhttprequest

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

如何将LoggerFactory的实例传递给ActionFilterAttribute [Asp.Net核心]

美好的一天。

我正在尝试通过在自定义ActionFilterAttribute类中注入LoggerFactory来使用日志记录,但是在一种控制器方法中使用Attribute时出现错误提示

[CS7036] There is no argument given that corresponds to the required formal parameter 'logger' of 'Tracker.Tracker(ILoggerFactory)' 
Run Code Online (Sandbox Code Playgroud)

这是该类的实现:

using System;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Logging;

namespace ImmoSales.Tracking
{
    public class Tracker : ActionFilterAttribute
    {
        public string ActionType { get; set; }
        public string ActionName { get; set; }
        private readonly ILoggerFactory _logger;

        public Tracker(ILoggerFactory logger)
        {
            _logger = logger;
        }

        public override void OnActionExecuting(ActionExecutingContext context)
        {
            base.OnActionExecuting(context);
        }

        public override void OnActionExecuted(ActionExecutedContext context)
        {
            base.OnActionExecuted(context);
        } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc custom-action-filter actionfilterattribute asp.net-core

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