标签: devops

Azure Devops - 将 YAML 脚本中的变量设置为日期时间

我正在尝试为 Azure DevOps YAML 管道中的 NuGet 包生成名称。

上下文正在每个自动构建上创建包,其中包含包的名称、分支的名称、日期和递增的修订号。

packageName-branchName-year-month-day-revision

这样,当创建新的功能分支时,它将生成一个独特的包,可用于在需要它的项目中进行测试。

我正在努力根据环境变量(例如日期或修订号)在 YAML 文件中设置变量。

使用 ##vso 命令,我可以将“myVariable”设置为 hello 并将其打印出来。

- script: |
    echo '##vso[task.setvariable variable=myVariable]hello'

- script: |
    echo my variable is $(myVariable)
Run Code Online (Sandbox Code Playgroud)

当我尝试如下从 PowerShell 设置变量时,出现以下错误“#$dateStr”未被识别为内部或外部命令”。

# Create a variable
- script: |
    #$dateStr = (Get-Date).ToString('yyyy-MM-dd') 
    echo '##vso[task.setvariable variable=myVariable]#$dateStr'

# Print the variable
- script: |
    echo my variable is $(myVariable) 
Run Code Online (Sandbox Code Playgroud)

当我尝试在 YAML 文件的变量部分中设置变量时,如下所示。

variables:
  solution: '**/*.sln'
  foo: $(Date:yyyyMMdd)

- script: |
    echo my variable is $(foo)
Run Code Online (Sandbox Code Playgroud)

该变量未进行插值,其输出为。

'我的变量是 $(Date:yyyyMMdd)'

如何根据 …

yaml devops azure-devops azure-pipelines

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

preStop钩子和terminationGracePeriodSeconds之间的关系

基本上我想做的是研究 Pod 生命周期,并检查我们是否可以在 Pod 终止之前进行一些清理/备份,例如复制日志。

我需要什么:在终止之前将日志/堆转储从容器复制到主机路径/S3

我尝试过的:

我使用了带有 bash 命令的 preStop 钩子来回显一条消息(只是为了看看它是否有效!!)。使用带有延迟的终止GracePeriodSeconds 来预停止并切换它们以查看进程是否有效。前任。保持终止GracePeriodSeconds:30秒(默认)并将preStop命令设置为休眠50秒,并且不应生成该消息,因为容器将在那时终止。这按预期工作。

我的问题:

  • preStop 钩子允许(推荐)什么样的进程?因为复制 15 GB 或更多的日志/堆转储将花费大量时间。该时间将用于定义终止GracePeriodSeconds
  • 当 preStop 花费的时间超过设置的 GracePeriod 时会发生什么?(如果日志很大,比如 10 场)
  • 如果我没有任何钩子但仍设置终止GracePeriodSeconds 会发生什么?容器会一直保持到宽限期吗?

我发现这篇文章与此密切相关,但无法通过https://github.com/kubernetes/kubernetes/issues/24695

所有投入表示赞赏!

kubernetes devops minikube kubernetes-deployment kubernetes-pod

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

在 Papertrail 应用程序中搜索时如何使用正则表达式?

我想在 Papertrailapp 的搜索栏中使用正则表达式进行搜索。

当我尝试这样的事情时

randomText \(\d\d\d
Run Code Online (Sandbox Code Playgroud)

预期结果:随机文本(223

实际结果:未找到搜索。

对此的任何指导将不胜感激。谢谢。

devops papertrail-app

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

如何在 gitlab-ci.yaml 中设置环境变量?

我的 gitlab ci-cd 配置文件使用许多环境变量。为了设置它们,我使用 gitlab ci-cd 秘密变量。

例如,开发部署部分:

- echo "====== Deploy to dev server ======"
# Add target server`s secret key
- apk add git openssh bash
- mkdir ~/.ssh
- echo $DEV_SERVER_SECRET_KEY_BASE_64 | base64 -d > ~/.ssh/id_rsa
- chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
- echo "Test ssh connection for"
- echo "$DEV_SERVER_USER@$DEV_SERVER_HOST"
- ssh -o StrictHostKeyChecking=no -T "$DEV_SERVER_USER@$DEV_SERVER_HOST"
# Delploy
- echo "Setup target server directories"
- TARGET_SERVER_HOST=$DEV_SERVER_HOST TARGET_SERVER_USER=$DEV_SERVER_USER TARGET_SERVER_APP_FOLDER=$DEV_SERVER_APP_FOLDER pm2 deploy pm2.config.js dev setup 2>&1 …
Run Code Online (Sandbox Code Playgroud)

continuous-integration continuous-deployment gitlab gitlab-ci-runner devops

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

如何在 Bitbucket Pipeline 中执行步骤之前添加等待时间

我有一个 Bitbucket 管道,它使用 cloudformation 创建 AWS 资源并将网站部署到其中。但即使 cloudform 正确创建堆栈,部署也会失败。我认为问题是当部署发生时,cloudformation S3 存储桶创建可能尚未完成。

我有一个 Hugo 网站,并且创建了一个 bitbucket 管道以将其部署到服务器。它的作用是使用 cloudformation 创建 S3 存储桶来托管网站,然后将 Hugo 网站上传到其中。当我在终端中手动运行管道中的步骤并在每个步骤之间有延迟时,它会成功发生。但是当它发生在 Bitbucket 管道上时,它会给出错误,指出我尝试上传内容的 S3 存储桶不可用。当我检查 AWS 时,该存储桶实际上就在那里。这意味着 Cloudformation 已正常工作。但是当文件开始复制时,存储桶可能无法用于上传文件。这是我的假设。有没有解决这个问题的方法。在本地执行此操作时,我可以在 cloudformation 创建和文件复制这两个命令之间等待。但是在Bitbucket pipeline环境下如何处理呢。以下是我的管道代码。

pipelines:
  pull-requests:
    '**':
      - step:
          script:
            - aws cloudformation create-stack --stack-name demo-web --template-body file://cloudformation.json --parameters ParameterKey=S3BucketName,ParameterValue=demo-web
            - hugo
            - aws s3 cp public/ s3://demo-web/ --recursive

Run Code Online (Sandbox Code Playgroud)

如何以正确的方式处理这种情况。对于这种情况有解决方法吗?或者我发现的问题并不是实际问题。

bitbucket amazon-web-services aws-cloudformation devops bitbucket-pipelines

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

如何通过 bitbucket-hook 将 crumb 信息传递给 jenkins?

curl -X POST http://xxx.yyy.zzz:5555/job/job-name/build --user john-devops-jenkins:11df3ed41129c5c7da1518e9c3149896de -H 'Jenkins-Crumb:31827a74a160347a641c87ddbc8e3b6e'
Run Code Online (Sandbox Code Playgroud)

上面带有 post 请求的卷曲代码在触发 Jenkins 构建方面绝对工作得很好。

尝试过:

错误:No valid crumb was included in the request

仍然不走运,如何配置 bitbucket hook 到 crumb 的容器头信息或如何通过 url 传递它而不依赖第三方插件?

bitbucket jenkins devops bitbucket-pipelines

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

使用 Docker 在 VPS 上部署应用程序的最佳实践是什么?

我确实有一个(Python Flask)应用程序,我想使用 GitLab CI 和 Docker 将其部署到我的 VPS。

在我的服务器上,我希望拥有应用程序的生产版本和暂存版本。它们都需要 MongoDB 连接。

我的计划是在 GitLab 上自动构建应用程序并将其推送到 GitLab 的 Docker 注册表。如果我想将应用程序部署到暂存或生产环境,我会执行docker pull,docker rm和docker run。

计划是将配置(例如secret_key)存储在.production.env(和.staging.env)中并将其传递给应用程序使用docker run --env-file ./env.list

我的服务器上已经安装了 MongoDB,并且应用程序的两个环境应使用相同的 MongoDB 实例,但数据库名称不同(在 中配置.env)。

这是部署我的应用程序的最佳实践吗?你有什么建议?谢谢!

docker gitlab-ci devops

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

如何在 Ansible 中使用 --all 来区分是否修剪 Docker 镜像?

在 Ansible playbook 中,我们可以请求相当于调用

docker image prune
Run Code Online (Sandbox Code Playgroud)

这样:

docker image prune
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有一种方法可以请求--all,即修剪容器中未使用的所有图像。无论如何,默认情况下它不会这样做:

TASK [role : Clean up Docker images] ***
ok: [server] => {
    "changed": false, 
    "images": [], 
    "images_space_reclaimed": 0
}
Run Code Online (Sandbox Code Playgroud)

显然,images_filters有一些选项与 CLI Docker 选项不直接对应:

用于选择要删除的图像的过滤器值字典。例如,dangling: true。有关可能的过滤器的更多信息,请参阅docker 文档。

不幸的是,这个选项根本没有记录在案。删除悬空图像是默认设置,那么true甚至会产生什么效果呢?

我如何告诉 Ansible 执行相当于 的操作docker image prune --all?

ansible docker devops

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

将 Redis 集群公开 - 带有 kubernetes statefulset 到互联网

我创建了一个有状态集,将 Redis 映像部署到 kubernetes 上的 GCP。我面临的挑战是使用单个域名公开它。这样可以按以下顺序访问 Pod - redis.com/first、redis.com/second、redis.com/third

简单的图表显示了我想要实现的结构类型

这是 YAML 文件

有状态集

kind: StatefulSet
metadata:
  name: app-redis
spec:
  selector:
    matchLabels:
      app: apprenticeship-redis
  serviceName: 'redis-service'
  replicas: 3
  template:
    metadata:
      labels:
        app: app-redis
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: app-redis
          image: redis
          args:
            - /etc/redis/redis.conf
          volumeMounts:
            - mountPath: /etc/redis
              name: redis-config
              readOnly: false
            - name: redis-storage
              mountPath: /data
              readOnly: false
          resources:
            requests:
              cpu: 50m
              memory: 128Mi
            limits:
              cpu: 150m
              memory: 256Mi
          ports:
            - containerPort: 6379
              name: redis
          livenessProbe:
            exec:
              command: ['redis-cli', …
Run Code Online (Sandbox Code Playgroud)

redis kubernetes devops kubernetes-statefulset

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

我是否需要 gitlab runner 来为 gitlab 中的项目执行 CICD?

我是 gitlab CICD 的新手,我对 gitlab runner 的兴趣感到困惑。Gitlab 已经可以在项目上自动运行 CICD,而无需安装运行程序。所以我需要帮助了解建议的跑步者以及何时何地需要它?

gitlab-ci gitlab-ci-runner devops

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