我正在寻找将Docker集成到Jenkins中以执行构建/测试命令的最佳方法.我找到的最好的资源是这篇博文:http: //blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and-jenkins-part-i
它主要提供用"docker run"包装所有执行命令.
我希望看到与Jenkins插件更好的集成,但我在这方面找不到任何东西.有谁能建议一个好的方法继续下去?是否有任何项目可以解决这个问题?
谢谢
我正在尝试使用 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
我试图跳过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
我们正在开发 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。
我刚刚为 GitHub 存储库设置了 CI/CD。
唯一仍然困扰我的是,CD 构建也会自动触发拉取请求,但我不知道在哪里可以配置这些检查。
我想在这里摆脱持续交付构建。
但这对我来说也没有明显的影响。
continuous-integration continuous-deployment azure-pipelines github-actions
我想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
我已经使用Flux v2设置了持续交付管道(因为 Flux v1 已弃用),并且运行良好。另一方面,我看到 Argo 和 Flux 在 2019 年底开始合并(请检查此链接)。
我想知道 Flux v2 是否是 Argo-Flux 合并的演变,或者它们是两个独立的 GitOps 实现选项。
我的印象是 Flux v2 非常活跃,所以我想它是一个真正的选择,并且至少会存在一段时间。但我对 Argo-Flux 不了解,也找不到太多信息。
谢谢!
continuous-deployment continuous-delivery argoproj fluxcd gitops
当我尝试使用 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
如何停止/启动ArgoCD中部署的应用程序?
我只看到删除或同步或部署/重新部署选项。我正在运行服务器应用程序,并且我想暂时停止(关闭)它们在集群中的功能。或者我在这个概念中遗漏了一些东西?
我是否需要为我的服务器应用程序实现某种自定义接口,以使启动/停止功能成为可能并直接与我的应用程序通信?(所以它不属于ArgoCD的责任 - 即它不像Linux服务管理系统 - 我需要自己在应用程序级别实现它)
continuous-integration continuous-deployment continuous-delivery kubernetes argocd
我创建了一个 R 包,每当我将更改合并到 master 分支时,我想通过 GitHub Actions 将其上传到 CRAN。我发现了很多R 操作的示例,我什至查找了一些最流行的软件包(如 dplyr)是如何做到这一点的,尽管我找到了一个devtools::release()辅助函数,但我仍然没有看到一个工作流程可以当您将更改合并到主分支时,将库提交到 CRAN。软件包开发人员是否手动执行此操作?有什么原因导致这没有自动化吗?
docker ×2
jenkins ×2
amazon-ec2 ×1
amazon-ecs ×1
argocd ×1
argoproj ×1
aws-fargate ×1
aws-lambda ×1
bitbucket ×1
cran ×1
fluxcd ×1
gitlab ×1
gitops ×1
groovy ×1
kubernetes ×1
mongodb ×1
r ×1
r-usethis ×1
terraform ×1