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) 我的目标是添加一个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条款。我认为它将完全基于预定义的环境变量测试,尽管我不确定哪些变量对此翻译感兴趣。
非常感谢您的任何建议或指示。
我正在探索 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我获得 …
我们有一个 golang 应用程序,它根据请求将 Argo 工作流提交给 kubernetes 集群。我想将 yaml 文件传递给其中一个步骤,我想知道这样做的选项是什么。
最后,我想将此文件传递给测试步骤,如下例所示:
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 工作流,我们使用以下依赖项:
谢谢你。
目标:
\n\n我正在尝试在使用默认 Docker 驱动程序的 Minikube 集群上使用 Nvidia GPU 功能。
\n\n问题:
\n\n我可以使用nvidia-docker默认docker上下文,但是当切换到默认上下文时minikube docker-env,出现以下错误:
$ 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\nRun Code Online (Sandbox Code Playgroud)\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) 美好的一天。
该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) 在 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.13GKE1.14.10-gke.36cloud.google.com/gov0.58.0cloud.google.com/go/storagev1.8.0我已经测试了两种可能的替代方案,涉及将服务帐户密钥 (JSON) …
go google-cloud-storage google-cloud-platform google-kubernetes-engine
再会。
我正在尝试将一个简单的数据从一个 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”未定义。
发送数据的正确方法是什么?谢谢你。
美好的一天。
我正在尝试通过在自定义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
asp.net-core ×2
docker ×2
go ×2
ajax ×1
argoproj ×1
asp.net-mvc ×1
gitlab-ci ×1
gpu ×1
javascript ×1
jwt ×1
kubeflow ×1
kubernetes ×1
minikube ×1
php ×1