标签: continuous-integration

开发人员构建最快的文件系统是什么?

我正在组装一个 Linux 机器,作为持续集成构建服务器;我们将主要构建 Java 的东西,但我认为这个问题适用于任何编译语言。

我应该使用什么文件系统和配置设置?(例如,我知道我不需要时间!)构建服务器将花费大量时间读取和写入小文件,并扫描目录以查看哪些文件已被修改。

更新:在这种情况下,数据完整性的优先级较低;它只是一台构建机器......最终的工件将被压缩并存档在其他地方。如果构建机器上的文件系统损坏并丢失所有数据,我们可以擦除并重新映像;构建将像以前一样继续运行。

performance filesystems build-server continuous-integration

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

Gitlab CI - 通过 SSH 部署到远程服务器

我有一个使用 Gitlab CI 的 Gitlab 环境,用于一个新项目来证明编译的文件并通过 rsync 复制到生产服务器。

这些资源的构建是 exec 的机器是 docker(节点 6)的映像,但现在我必须使用 linux 将结果文件从该容器 Docker 命令复制到服务器......我的问题是通过 ssh 连接同步。

目前我有以下几点:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

通过这个我得到:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that …
Run Code Online (Sandbox Code Playgroud)

ssh deployment continuous-integration gitlab

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

确保持续集成服务“干净的系统”的有效方法

我们想为我们的项目设置持续集成 (CI) 服务。CI 服务应该控制项目生命周期的所有方面,包括部署。

也就是说,我们希望在每次迭代时都有一个 CI 代理采用一个干净的系统(特别是 Ubuntu Server),在那里部署我们的项目并运行测试。

我们可能会从头开始自己编写 CI 服务,因为我们的生态系统相当不寻常。问题是:如何为每次 CI 迭代有效地提供全新的系统?

项目部署安装一些 Debian 包,配置几个 nginx 站点,并在系统范围内在特定于实现语言的包管理器 (LuaRocks) 中安装一些包。没有什么比这更具侵入性的了(我相信)。因此,与确保绝对隔离和清洁相比,能够快速设置干净的状态(在现代硬件上在一分钟内,更快——更好)更重要。

我看到了两种方法来做我们需要的事情:

  • 要么建立某种监狱(比如 lxc,也许)。
  • 或者安装一些可以做快照的虚拟机,并使用它们。

但在这一点上,我没有足够的信息来决定。

你有什么建议?还有其他选择吗?有具体的工具名称吗?

注意:CI 服务将在 Citrix XenServer 来宾中运行。如果价格合理,付费解决方案是可以的。(通常他们在这个领域是不合理的。)远程 CI 解决方案不行。

virtualization linux ubuntu continuous-integration

10
推荐指数
2
解决办法
620
查看次数

为来自 GitLab 网络钩子的合并请求触发 Jenkins 构建

我希望 Jenkins (1.561) 构建提交到 GitLab (6.7.5) 的合并(拉取)请求,由合并请求 Web 钩子触发。我有一个参数化构建,以及 Jenkins 插件“GitLab Merge Request Builder”(1.2.0)和“GitLab Hook”(1.0.0)。不幸的是,迁移到 Jenkins CI 并不是一个真正的选择。

只要变量、 和可用,合并请求构建器插件能够构建合并请求。当插件轮询存储库本身时,这很有效,或者我使用手动有效负载(例如)触发构建,但我无法使用钩子执行此操作。gitlabMergeRequestIdgitlabTargetBranchgitlabSourceBranchcurl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters

使用 GitLab Hook 插件,我能够在 JSON 有效负载中获取必要的数据,但这些值具有“错误”的键:

  • gitlabMergeRequestIdid
  • gitlabTargetBranchtarget_branch
  • gitlabSourceBranchsource_branch

我已经尝试使用 GitLab Merge Request Builder 插件的要求和变量值来配置构建参数。不幸的是(并且可能是故意的),字段中的变量没有被替换,因此 Jenkins 正在寻找具有 id和类似分支值的合并请求。NameDefault ValueDefault Value${id}

我发现无法配置从 GitLab 发送的有效负载,并且 GitLab Hook 插件和 GitLab Merge Request Builder 插件使用的参数名称都没有配置选项。

我正在考虑编写一个小的 PHP 脚本来拦截和更改来自 POST 的有效负载,然后再将其传递给 Jenkins。虽然我确信这会奏效,但它确实看起来不必要地复杂。 …

hook continuous-integration jenkins gitlab

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

Tomcat Parallel Deployment,自动卸载旧应用

一段时间以来,我一直在使用 Tomcat 8 的并行部署作为零停机持续部署设置的一部分。

运行测试手套后,CI 服务器自动将 .war 文件重命名为 application##{version-number}.war 并将 war 复制到 /webapp 文件夹。application##333 将与 application##332 很好地共存。

我遇到的唯一问题是,一旦所有流量(新会话)自动转换到新应用程序,我就必须手动取消部署旧应用程序。

Tomcat 是否有一些内置机制可以说“嘿,当这个服务减少到零会话时,它应该被删除”?也许我可以利用某种“最后一次会议刚刚过期”的事件。

如果其他人已经自动取消部署这种应用程序,我很想听听。谢谢!

deployment tomcat continuous-integration

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

用于 nodeJs 应用程序的没有 Docker 的 Gitlab-ci 部署?

是否可以在不使用任何 docker 镜像的情况下实现 gitlab ci 工作流?我看到的所有 gitlab runner 示例都仅基于 docker。即使用于生产部署。

如何在我现有的 linux 机器上实现 gitlab-ci 和部署过程?在生产服务器上我想部署代码运行 npm install 如果 package.json 被修改并重新启动节点实例

我想使用多个跑步者,并且每个跑步者都有 docker 图像会消耗资源。

continuous-integration gitlab

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

无法访问 Jenkins 服务器

我正在尝试在我的 Web 服务器上安装Jenkins,这是一个在 Amazon EC2 实例上运行的 Ubuntu 13.10 服务器。我已经重新启动詹金斯使用

sudo /etc/init.d/jenkins restart
Run Code Online (Sandbox Code Playgroud)

当我检查我的进程时

ps aux | grep jenkins
Run Code Online (Sandbox Code Playgroud)

我可以看到多个项目正在运行,并具有以下描述:

jenkins  22356  0.0  0.0  20268   400 ?        S    10:10   0:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1 --httpListenAddress=127.0.0.1 --ajp13ListenAddress=127.0.0.1 --preferredClassLoader=java.net.URLClassLoader
jenkins  22358  5.9  5.7 1618372 97376 ?       Sl   10:10   0:17 /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1 --httpListenAddress=127.0.0.1 --ajp13ListenAddress=127.0.0.1 --preferredClassLoader=java.net.URLClassLoader
Run Code Online (Sandbox Code Playgroud)

服务器不想让我访问这个安装,所以如果我访问

x.x.x.x:8080
Run Code Online (Sandbox Code Playgroud)

我只是收到一个“糟糕!谷歌浏览器无法连接”页面,甚至没有 HTTP 状态 404 / 500。

我尝试检查/var/log/jenkins/jenkins.log,但它并不表示任何问题。重启后的日志输出如下:

Running …
Run Code Online (Sandbox Code Playgroud)

ubuntu continuous-integration jenkins

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

在詹金斯中执行 RSYNC 命令

我正在尝试将我的代码部署到远程服务器。到目前为止我已经尝试过

  • 通过 SSH 插件发布:问题是我无法保留文件权限
  • rsync 命令:这保留了文件权限,但问题是我不知道如何设置密码使其自动工作

这就是我得到的:

[JenkinsBuild] $ /bin/sh -xe /var/lib/jenkins/tmp/hudson4646064064846581974.sh
+ rsync -PSauve ssh --exclude=JenkinsBuild app bower.json config gruntfile.js karma.conf.js LICENSE.md Makefile node_modules package.json Procfile protractor.conf.js public README README.md server.js john@192.168.2.10:/srv/dp/prod
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
Run Code Online (Sandbox Code Playgroud)

任何想法我在这里做错了什么?

linux deployment continuous-integration jenkins

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

通过 Jenkins 进行盐态测试

全部,

我们正在尝试在我们的 Jenkins 设置中进行自动化测试,以在我们的 salt 状态文件 ( .sls) 中运行“smoke”和“lint”类型的测试。到目前为止,所有 google-foo 都产生了很少的信息。有一种test=True在命令行中进行测试的方法,但这不适用于无外壳帐户(就像 Jenkin 的帐户通常那样)。

我还没有遇到过对 SaltStack 状态进行这种自动测试的人。所以:

1)有没有可能

2)任何人都知道我可以查看的好资源

TIA。

automated-testing continuous-integration saltstack

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

如何配置 WinRM 跳转主机以与 Ansible 一起使用?

如何配置跳转主机来访问我无法直接访问的 Windows 服务器?

Ansible 文档解释了如何在 Linux 上执行此操作,但没有提及在 Windows 服务器上使用 WinRM 时如何实现类似的功能。

windows deployment continuous-integration ansible

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