标签: continuous-deployment

Jenkins - Docker集成

我正在寻找将Docker集成到Jenkins中以执行构建/测试命令的最佳方法.我找到的最好的资源是这篇博文:http: //blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and-jenkins-part-i

它主要提供用"docker run"包装所有执行命令.

我希望看到与Jenkins插件更好的集成,但我在这方面找不到任何东西.有谁能建议一个好的方法继续下去?是否有任何项目可以解决这个问题?

谢谢

continuous-integration continuous-deployment jenkins docker

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

AWS ECS:监控服务更新的状态

我正在尝试使用 Fargate 将一组微服务从 Docker Swarm 迁移到 AWS ECS。

我已经创建了一个ECS集群。此外,我还使用 ECR 初始化了存储库,每个存储库都包含一个微服务的映像。

我已经成功地想出了一种创建新图像并将它们推入 ECR 的方法。事实上,随着代码的每次更改,都会构建、标记并推送一个新的 docker 镜像。

此外,我还创建了一个链接到服务的任务定义。该任务定义包含一个容器以及所有必要的信息。此外,其服务定义该任务将在VPC中运行,并链接到负载均衡器,并且具有目标组。我假设每个新部署都使用带有“最新”标签的映像。

到目前为止,根据我的解释,一切都很清楚并且运行良好。

下面是让我困惑的部分。在每次新构建之后,我想更新服务,以便部署具有更新映像的新任务。我使用 cli 通过以下命令来执行此操作:

aws ecs update-service --cluster <cluster-name> --service <service-name>

通常,执行命令后,我会在事件选项卡下监视部署日志,并使用以下命令检查服务的状态:

aws ecs describe-services --cluster <cluster-name> --service <service-name>

最后,我尝试模拟新创建的图像包含错误代码的情况。因此,新任务将无法部署。我所目睹的是 Fargate 将继续尝试(不间断)部署新任务。此外,除了事件日志之外,describe-services除了 Fargate 正在执行的操作(例如,注册/取消注册任务)之外,该命令不包含相关信息。令我惊讶的是,我找不到任何指示 Fargate 或服务停止部署并回滚到现有部署的机制。

我找到这篇文章(https://aws.amazon.com/blogs/compute/automating-rollback-of-failed-amazon-ecs-deployments/),它提供了一个解决方案。然而,这是一个相当复杂的问题,并且假设每个新部署都是由新任务定义触发的,这不是我想要的。

因此,考虑到我上面的描述,我希望你能回答以下问题:

1)使用CLI命令(出于自动化目的)是否有一种方法可以指示Fargate在几次尝试部署新任务失败后自动停止当前部署?

2)使用CLI命令,有没有办法监控部署的当前状态?例如,当对Docker swarm上的服务进行服务更新时,终端会生成更新过程的实时日志

3) 部署失败后,Fargate 是否有办法发出错误代码、标志或消息?

amazon-web-services amazon-ecs continuous-deployment aws-fargate

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

Jenkins Pipeline阶段跳过基于管道中定义的groovy变量

我试图跳过stage基于常规变量,该变量值将在另一个阶段计算。

在下面的示例中,Validate阶段是基于环境变量有条件地跳过的VALIDATION_REQUIRED,我将在构建/触发作业时传递该环境变量。---这按预期工作。

Build而即使isValidationSuccess变量设置为 ,阶段也始终运行false。我尝试更改when条件表达式,例如{ return "${isValidationSuccess}" == true ; } or{ return "${isValidationSuccess}" == 'true' ; }但没有成功。打印变量时它显示为“false”

def isValidationSuccess = true 
 pipeline {
    agent any
    stages(checkout) {
        // GIT checkout here
    }
    stage("Validate") {
        when {
            environment name: 'VALIDATION_REQUIRED', value: 'true'
        }
        steps {
            if(some_condition){
                isValidationSuccess = false;
            }
        }
    }
    stage("Build") {
        when {
            expression { return "${isValidationSuccess}"; }
        }
        steps { …
Run Code Online (Sandbox Code Playgroud)

groovy continuous-deployment jenkins jenkins-groovy jenkins-pipeline

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

gitlab ci/cd 将docker部署到aws ec2

我们正在开发 Spring Boot 应用程序,目前正在 AWS 中手动部署。为此,首先我们通过 Dockerfile 构建 docker 镜像,然后从笔记本电脑连接到 AWS EC2 实例,然后拉取镜像,然后使用 docker run 启动它。但我们希望使用 gitlab CI/CD 自动化该过程。我们创建了 .gitlab-ci.yml,构建阶段构建 spring-boot 应用程序并生成 jar 文件。打包阶段然后使用源代码中的 Dockerfile 构建 docker 映像,然后将映像推送到注册表。

现在我不知道如何完成部署阶段。大多数教程仅解释有关部署到 Google 云提供商的信息。我使用以下步骤来部署 docker 映像...

ssh -i "spring-boot.pem" ubuntu@ec2-IP_address.compute-2.amazonaws.com

sudo docker pull username/spring-boot:v1

sudo docker run -d -p 80:8080 username/spring-boot:v1
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我将上述步骤添加到部署阶段。我是否需要将 pem 文件添加到源中才能连接到 ec2 实例。或者有没有简单的方法可以从 gitlab ci/cd 在 ec2 中部署 docker。

amazon-ec2 continuous-deployment gitlab docker

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

如何从 GitHub 检查中删除 Azure Pipeline Build

我刚刚为 GitHub 存储库设置了 CI/CD。

  • 验证拉取请求的 CI 构建被设置为 GitHub Action。
  • CD 构建(应在合并拉取请求后运行)是使用 Azure Pipelines 设置的,因为我也想使用生成的工件作为使用 Azure Pipelines 的发布管道的触发器。

唯一仍然困扰我的是,CD 构建也会自动触发拉取请求,但我不知道在哪里可以配置这些检查。

创建拉取请求时当前运行的检查如下: 在此输入图像描述

我想在这里摆脱持续交付构建。

我尝试配置分支保护规则,但这没有效果: 在此输入图像描述

在Azure Pipeline端,我完全禁用了触发器: 在此输入图像描述 在此输入图像描述

但这对我来说也没有明显的影响。

continuous-integration continuous-deployment azure-pipelines github-actions

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

如何将正确的项目路径传递到bitbucket管道?

我想aws lamda .net core project使用部署bit bucket pipeline

我已经创建bitbucket-pipelines.yml如下,但构建运行后出现错误 -

MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.

文件代码-

image: microsoft/dotnet:sdk

pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        script: # Modify the commands below to build your repository.
          - export PROJECT_NAME=TestAWS/AWSLambda1/AWSLambda1.sln
          - dotnet restore
          - dotnet build $PROJECT_NAME
          - pipe: atlassian/aws-lambda-deploy:0.2.1
            variables:
              AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
              AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
              AWS_DEFAULT_REGION: 'us-east-1'
              FUNCTION_NAME: 'my-lambda-function'
              COMMAND: 'update' …
Run Code Online (Sandbox Code Playgroud)

bitbucket amazon-web-services continuous-deployment aws-lambda bitbucket-pipelines

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

Flux v2 是 Argo Flux 的替代品吗

我已经使用Flux v2设置了持续交付管道(因为 Flux v1 已弃用),并且运行良好。另一方面,我看到 Argo 和 Flux 在 2019 年底开始合并(请检查此链接)。

我想知道 Flux v2 是否是 Argo-Flux 合并的演变,或者它们是两个独立的 GitOps 实现选项。

我的印象是 Flux v2 非常活跃,所以我想它是一个真正的选择,并且至少会存在一段时间。但我对 Argo-Flux 不了解,也找不到太多信息。

谢谢!

continuous-deployment continuous-delivery argoproj fluxcd gitops

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

如何通过 terraform 中的 mongodbatlas 提供程序获取完整的 uri,包括用户名和密码

当我尝试使用 Terraform 和 mongodb atlas 提供程序输出 mongodb uri 时,我无法获取包含用户名和密码的完整 uri。例如,当我做类似的事情时:

terraform {
  required_version = "~> 0.14.7"

  required_providers {
    mongodbatlas = {
      source  = "mongodb/mongodbatlas"
      version = "0.8.2"
    }
  }
}

provider "mongodbatlas" {
  public_key  = var.mongodbatlas_public_key
  private_key = var.mongodbatlas_private_key
}

data "mongodbatlas_cluster" "db" {
  project_id = var.mongodbatlas_project_id
  name       = format("some-db-name-%s", var.env)
}

output "db_url" {
  value = data.mongodbatlas_cluster.db.connection_strings[0].address_srv
}
Run Code Online (Sandbox Code Playgroud)

我总是得到以下形式的 uri:mongodb+srv://some-db-name-staging.xjcol.mongodb.net 将其作为环境变量添加到我的 Web 应用程序中以连接到数据库不起作用,因为它需要使用用户名和密码进行身份验证。手动将用户名和密码添加到该字符串中mongodb+srv://[username]:[password]@some-db-name-staging.xjcol.mongodb.net,应用程序可以正常连接到数据库。

mongodb continuous-deployment continuous-delivery terraform mongodb-atlas

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

在 ArgoCD 中启动/停止应用程序

如何停止/启动ArgoCD中部署的应用程序?

我只看到删除同步或部署/重新部署选项。我正在运行服务器应用程序,并且我想暂时停止(关闭)它们在集群中的功能。或者我在这个概念中遗漏了一些东西?

我是否需要为我的服务器应用程序实现某种自定义接口,以使启动/停止功能成为可能并直接与我的应用程序通信?(所以它不属于ArgoCD的责任 - 即它不像Linux服务管理系统 - 我需要自己在应用程序级别实现它)

continuous-integration continuous-deployment continuous-delivery kubernetes argocd

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

如何通过 GitHub Actions 向 CRAN 提交 R 包?

我创建了一个 R 包,每当我将更改合并到 master 分支时,我想通过 GitHub Actions 将其上传到 CRAN。我发现了很多R 操作的示例,我什至查找了一些最流行的软件包(如 dplyr)是如何做到这一点的,尽管我找到了一个devtools::release()辅助函数,但我仍然没有看到一个工作流程可以当您将更改合并到主分支时,将库提交到 CRAN。软件包开发人员是否手动执行此操作?有什么原因导致这没有自动化吗?

r continuous-deployment cran github-actions r-usethis

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