首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 YAML 文件配置 Jenkins 流水线

几年前,我们的 CTO 写了一篇关于使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续集成服务的文章。...我们的项目依赖的一个或多个 Docker 镜像的执行(应用,数据库,Redis 等) * 如有必要,易于配置和复制 * 易于增加新项目 * 易于修改构建步骤。...### Jenkinsfile的成与败 使用当前的 Jenkins 版本,我们可以利用Jenkins pipeline对我们的构建流进行建模,存到一个文件中。 该文件会被签入代码库。...通过 Jenkins 的共享库技术,构建逻辑 Jenkinsfile 中移到了 YAML 文件中。...同样的,我们可以构建逻辑移动 JSON 文件中,或者任何格式的文件中,只你的共享库能解析它,并将它转换成 Jenkins 能理解的格式。

4.7K40

【玩转Lighthouse】便于自己魔改的mastodon搭建方式

但是由于我们现在没有重新启动,因此我们需要首次手动加载它: iptables-restore < /etc/iptables/rules.v4 安装 fail2ban,以便阻止重复登录尝试 编辑放入其中...进入postgres sudo -u postgres psql 创建数据库退出: CREATE USER mastodon CREATEDB; \q 设置乳齿象 是时候下载乳齿象代码了。...bundle configbundle install 生成配置 运行交互安装向导: RAILS_ENV=production bundle exec rake mastodon:setup 这将:...创建配置文件 运行资产预编译 创建数据库架构 配置文件另存为 。.../etc/nginx/sites-available/mastodon 此时,您应该能够在浏览器中访问您的域名,看到大象击中计算机屏幕错误页面。因为服务还没有启动。

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

使用 Mastodon 搭建个人信息平台:前篇

后台任务(Ruby Sidekiq)、缓存和队列(Redis)、数据库Postgres),以及可选的全文索引(Elasticsearch 7)构成。...出于上面的考虑,我们可以执行命令,创建一个额外的虚拟网卡进行组件之间的通讯打通: docker network create mastodon_networks 搭建数据库Postgres 官方配置文件中...,对于数据库的定义是这样的: version: '3' services: db: restart: always image: postgres:14-alpine shm_size...,但是数据库运行之后,我们会收到程序到一些运行警告。...解决这个问题其实很简单,静态资源彻底 Ruby Web 服务中迁出即可:一来可以解决这个问题,二来则可以提升服务整体性能,以及在未来让服务更容易做水平扩展。

1.8K31

慢的不是 Ruby,而是你的数据库

其中一个 Rails 的问题是它与数据库的高度耦合(也可以说是一种好处)。Rails 专注于掌控数据库的一切。没有数据库Rails 毫无用处,甚至可能阻碍工作进展,而不是提供帮助 [2]。...这个例子展示了表中获取一条记录的操作,虽然它并非关系型数据库所擅长的领域,但它揭示了 ORM 存在的实际性能问题:缺乏连接、排序、过滤和计算等操作。...使用 Rails 人性化的 active-record API,很容易忘记你仍然只是在查询一个复杂的关系数据库。它需要微调、调优和调整,以便在合理的时间内为你提供数据。...这也是 Ruby 很少在 Rails(和 / 或 Web)之外使用的原因之一。 [7] 令人惊讶的是,内存中的 SQLite 中查找比数据库中查找要慢。...但这说明了另一个重要问题:数据库运行在单独的线程中,甚至可能在单独的硬件上。因此负载是分布的:在 SQLite 和我们的内存示例中,一个 Ruby 线程完成了所有的过滤、获取和提升。

12130

2019年你应该知道的编程语言、框架和工具

我们认为,在 2018 年,渐进 Web Apps 变得更加重要,也值得我们去探究。在这里查看相关概述。 聊天机器人 运行聊天机器人的平台到构建其的框架,现在每个人都在谈论它。...Ruby 2.3 已在今年早些时候发布了,带来了一些性能上的改进。同时,Ruby 也是学习通用脚本语言的一个好选择,但是只有当它和 Rails 相配合的时候才能发挥出其最大的功效。...对于 Ruby 来说,Rails 框架是首选的。Rails 5.0 版本已于今年发布,并为 Web Sockets、API 模型等方面提供了支持。...Postgres 适用于大规模、TB 级规模的数据集以及繁忙的 Web Apps,这些优化都是很受欢迎的。 MySQL 8.0 将是数据库的下一个主要版本。...它是一个快速、可扩展的 JSON 存储系统,同时公开了一个 REST-ful HTTP API.此数据库易于使用,同时性能卓越。

91530

你应该知道的编程语言,代码学习关注我开始

我们认为,在 2018 年,渐进 Web Apps 变得更加重要,也值得我们去探究。在这里查看相关概述。 聊天机器人 运行聊天机器人的平台到构建其的框架,现在每个人都在谈论它。...Ruby 2.3 已在今年早些时候发布了,带来了一些性能上的改进。同时,Ruby 也是学习通用脚本语言的一个好选择,但是只有当它和 Rails 相配合的时候才能发挥出其最大的功效。...对于 Ruby 来说,Rails 框架是首选的。Rails 5.0 版本已于今年发布,并为 Web Sockets、API 模型等方面提供了支持。...Postgres 适用于大规模、TB 级规模的数据集以及繁忙的 Web Apps,这些优化都是很受欢迎的。 MySQL 8.0 将是数据库的下一个主要版本。...它是一个快速、可扩展的 JSON 存储系统,同时公开了一个 REST-ful HTTP API.此数据库易于使用,同时性能卓越。

1K00

讲解Flask API TypeError: Object of type Response is not JSON serializable

return resp返回了一个自定义的类的实例:如果我们API函数中返回了一个自定义的类的实例,而这个类没有实现自己的JSON序列化方法,也会触发该错误。...以下是一些解决这个错误的方法:返回一个可以被JSON序列化的对象或数据类型:这包括基本的数据类型(例如整数字符串、列表、字典等)或有序列化方法的自定义类的实例。...在该函数中,我们创建了一个包含学生对象的列表,然后每个学生对象转换为字典,并将所有学生的信息存储在一个字典列表中。最后,使用jsonify函数字典列表转换为JSON格式的数据返回给客户端。...我们学生对象转换成字典,使用jsonify函数字典转换为JSON格式的数据,确保可以被正确序列化返回给客户端。 请注意,这只是一个简单的示例,实际应用中可以根据具体需求进行更复杂的操作和处理。...它提供了许多有用的功能,如获取请求参数、处理请求头、设置响应头等。参数解析:Flask提供了在请求中解析参数的功能,例如从URL中获取参数、解析查询字符串、解析JSON数据等。

81410

GitLab企业级私有代码仓库安装与基础使用

[TOC] 0x00 前言简述 PS: 在开源世界中,是没有终结的尽头! 描述:GitLab 是一个非常优秀的开源项目,基于Ruby on Rails开发的开源应用程序。...redis:缓存数据库 sidekiq:用于在后台执行队列任务(异步执行) unicorn:GitLab Rails应用是托管在这个服务器上面的。...命令 基础示例: gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab gitlab-rake db:migrate # 数据库关系升级...(保证数据库没有新的连接不会有写数据情况) gitlab-ctl stop unicorn gitlab-ctl stop sidekiq # 指定恢复文件会自动去备份目录找格式`1587001493...解决思路: 方法一、重新配置一个Ldap服务把之前的数据库导进来,迁移到新的机器上然后修改Gitlab的认证服务地址。 方法二、直接修改Gitlab的数据库,对帐号的认证方式修改。

6K10

持续部署Microservices的实践和准则

每个Microservices完成一个独立的业务逻辑,它可以是一个HTTP API服务,提供给其他服务或者客户端使用。也可以是一个ETL服务,用于完成数据迁移工作。...容器化之后,我们可以基于Docker构建我们的持续部署流水线: 上图描述了一个基于Ruby on Rails(简称:Rails)服务的持续部署流水线。...下面Dockerfile可以描述一个Rails项目的基础环境: FROM ruby:2.3.3 RUN apt-get update -y && \ apt-get install -y libpq-dev...在服务需要访问数据库时,我们可以通过Docker Compose服务的Image和数据库的Image组合在一起,然后使用Docker Compose在持续集成服务器上进行部署运行测试。...上图描述了Rails服务和Postgres数据库的组装过程。

1.4K40

在 PostgreSQL 中解码 Django Session

若是,服务器检索与其关联的 session_data 获取有关用户及会话的原数据。 这就是你可以在一个 Django 请求中访问 request.user 的原因。...然而,在 Postgres 中如果你尝试解析一个非法 JSON 文本,Postgres 会抛出一个错误终止你的查询。在我自己的数据库中,有一些会话数据不能被作为 JSON 解析。...当 JSON 转换到 text 的时候,Postgres 会在其两端添加双引号。最终我们想要 user_id 的类型为 int,但 Postgres 不会将一个带有双引号的字符串换为 int。...带有 BOTH 的 TRIM 函数会将指定的字符字符串的两端去除,留下可以轻松转换为整数类型的干净的字符串。...中的编码以及字符串操作比常见的用于 web 应用的语言(如 Python、Ruby 或 PHP)来说更加繁琐些,但是用纯 Postgres 构建出一个可以快速提取你要的 数据让你可以和其他表直接连表查询的视图

3.2K20

激荡二十年:HTTP API 的变迁

这一次,我试图 OpenAPI v3 spec 出发,构建一切可以自动化生成的代码,甚至包括 API 的测试。...如果我们重新审视 API 的作用,我们会发现,作为客户端和服务端数据的桥梁,API 解析客户端的请求,服务端某个 data store(可能是数据库,也可能是其他服务的数据等),获取相应的数据,然后按照...比如用户只能修改自己的帖子,但可以读别人的帖子这样的业务需求,如果没有 RLS,很难数据库级别直接安全地实现。...Hasura 试图回答一个问题:有没有可能把 GraphQL 的 query 一对一换成 SQL 语句?...本来这篇文章应该在上周末发表出来,可是我一时技痒,把周末可用的时间匀给了代码实现,于是我在撰写了(主要是通过 psql -E 偷师 psql 命令是如何查询的)上百行 SQL,postgres获取关于

1.7K30

云原生应用的12要素

例如,如果应用的数据库服务由于硬件问题出现异常,管理员可以最近的备份中恢复一个数据库,卸载当前的数据库,然后加载新的数据库 – 整个过程都不需要修改代码。 V....理想状态下,进程敲下命令到真正启动等待请求的时间应该只需很短的时间。...类型 语言 类库 适配器 数据库 Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite 队列 Python/Django Celery RabbitMQ,...日志没有确定开始和结束,但随着应用在运行会持续的增加。 12-factor应用本身从不考虑存储自己的输出流。 不应该试图去写或者管理日志文件。...例如,如果Ruby的web进程使用了命令 bundle exec thin start ,那么数据库移植应使用 bundle exec rake db:migrate 。

4.2K110

云原生概念

例如,如果应用的数据库服务由于硬件问题出现异常,管理员可以最近的备份中恢复一个数据库,卸载当前的数据库,然后加载新的数据库 – 整个过程都不需要修改代码。 V....理想状态下,进程敲下命令到真正启动等待请求的时间应该只需很短的时间。...类型 语言 类库 适配器 数据库 Ruby/Rails ActiveRecord MySQL, PostgreSQL, SQLite 队列 Python/Django Celery RabbitMQ,...日志没有确定开始和结束,但随着应用在运行会持续的增加。 12-factor应用本身从不考虑存储自己的输出流。 不应该试图去写或者管理日志文件。...例如,如果Ruby的web进程使用了命令 bundle exec thin start ,那么数据库移植应使用 bundle exec rake db:migrate 。

4.2K51

Gitlab CI 配置文件 .gitlab-ci.yaml 详解(下)

---- 配置示例 通过使用当前job的名字作为存档名称: job: artifacts: name: "$CI_JOB_NAME" 使用当前分支名称或者是tag作为存到名称,只存档没有被Git...coverage允许你配置代码覆盖率将会该job中提取输出。 在这里正则表达式是唯一有效的值。因此,字符串的前后必须使用/包含来表明一个正确的正则表达式规则。特殊字符串需要转义。...你可以通过设置GIT_STRATEGY用于获取最新的代码,可以再全局variables或者是在单个job的variables模块中设置。如果没有设置,将从项目中使用默认值。...Git数据仓库肯定是存在的,但是他肯定不是最新的,所以你只能依赖于项目工作区的缓存或者是artifacts带来的文件。...: services: - postgres - ruby .mysql_services: services: - mysql - ruby test:postgres

7.1K21

项目开发学习与总结

[TOC] 0x00 前言 软件开发流程: 软件需求分析,软件要做什么功能 软件页面原型设计,把实现功能画出功能图 把原型转换为静态页面,把功能图转换成html页面 数据库设计和技术选型 系统的编码 系统的测试...例如,如果应用的数据库服务由于硬件问题出现异常,管理员可以最近的备份中恢复一个数据库,卸载当前的数据库,然后加载新的数据库整个过程都不需要修改代码(只要满足程序最低的运行限制)。 V....Q:进程应当追求最小启动时间: 理想状态下进程敲下命令到真正启动等待请求的时间应该只需很短的时间, 以便提供更敏捷的发布以及扩展过程,此外还增加了健壮性,因为进程管理器可以在授权情形下容易的进程搬到新的物理机器上...与此不同,开发人员经常希望执行一些管理或维护应用的一次性任务,例如: (1) 运行数据移植(Django 中的 manage.py migrate, Rails 中的 rake db:migrate)。...大多数语言都通过解释器提供了一个 REPL 工具(python 或 perl) ,或是其他命令(Ruby 使用 irb, Rails 使用 rails console)。

49420

Gitlab安装使用及汉化配置

一、GitLab简介 GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且项目设为私有还要收费。...运行数据库的服务器应至少有5-10 GB的可用存储空间,尽管具体要求取决于GitLab安装的大小 #PostgreSQL要求 GitLab 9.0起,PostgreSQL 9.2或更新版本是必需的,不支持早期版本...数据库既可以选择MySQL,也可以选择PostgreSQL;服务器既可以选择Apache,也可以选择Nginx。 缺点:国外的源不稳定,被墙时,依赖软件包难以下载。...缺点:数据库默认采用PostgreSQL,服务器默认采用Nginx,不容易定制。...  *execute[clear the gitlab-rails cache] action run     -execute /opt/gitlab/bin/gitlab-rake cache:clear

6K60

项目开发学习与总结

[TOC] 0x00 前言 软件开发流程: 软件需求分析,软件要做什么功能 软件页面原型设计,把实现功能画出功能图 把原型转换为静态页面,把功能图转换成html页面 数据库设计和技术选型 系统的编码 系统的测试...例如,如果应用的数据库服务由于硬件问题出现异常,管理员可以最近的备份中恢复一个数据库,卸载当前的数据库,然后加载新的数据库整个过程都不需要修改代码(只要满足程序最低的运行限制)。 V....Q:进程应当追求最小启动时间: 理想状态下进程敲下命令到真正启动等待请求的时间应该只需很短的时间, 以便提供更敏捷的发布以及扩展过程,此外还增加了健壮性,因为进程管理器可以在授权情形下容易的进程搬到新的物理机器上...与此不同,开发人员经常希望执行一些管理或维护应用的一次性任务,例如: (1) 运行数据移植(Django 中的 manage.py migrate, Rails 中的 rake db:migrate)。...大多数语言都通过解释器提供了一个 REPL 工具(python 或 perl) ,或是其他命令(Ruby 使用 irb, Rails 使用 rails console)。

29330

如何使用Capistrano自动部署:入门教程

但是,一般情况下,您可以将此工具视为您自己的部署助手,帮助您完成部署计算机上获取代码到引导部署过程的几乎所有操作 -并且它可以在多个系统上同时或以循环方式执行。...Ruby编程语言 Ruby是一种通用的(即不是为解决特定问题而创建的),动态编程语言随着Ruby-on-Rails Web应用程序开发框架的发布而大受欢迎。...应用程序部署 部署应用程序(无论是网站,API还是服务器)通常意味着从头开始(或及时拍摄的快照)设置系统,通过更新所有内容,下载依赖项,设置文件来准备它结构和权限,然后最终上传您的代码库 - 或使用源控制管理器...注意:所推荐的Capistrano,不包含你仓库内的任何敏感信息(如数据库连接的安全凭证)。...首先,我们创建一个部署者组,授予他们继续的权限。

2.2K20

你不知道的JavaScript(中卷)一

四、强制类型转换 A.值类型转换 1.值从一种类型转换为另一种类型通常称为类型转换(type casting),这是显的情况;的情况称为强制类型转换(coercion) 2.JS中的强制类型转换总是返回标量基本类型值...显强制类型转换可以代码中看出,而强制类型转换则不那么明显 5.例子: var a = 42; var b = 42+””;// var c = String(a);//显 B.抽象值操作...D.强制类型转换 1.字符串和数字之间的强制类型转换 • 根据ES5规范,如果某个操作数是字符串或者能够通过以下步骤转换为字符串的话,+进行拼接操作。...• 符号不能够被强制类型转换为数字(显都会产生错误),但可以被强制类型转换为布尔值(显都是true) E.宽松相等和严格相等 1....JSON-P(JSON数据封装为函数调用,比如foo({“a”:42}))通过JSON数据传递给函数来实现对其的访问,能将JSON换为合法的JS语法 • 代码块:[]+{}=“[object

1.2K20

数据类型转换看这篇就够了

开始查看每个字符,直到找到第一个非有效的字符为止,最后返回一个整数。...parseFloat(string) 相比上一节parseInt函数是值转换成整数,parseFloat函数则是值转换成浮点数且该方法方法也没有基模式(转换不了),只有对 String 类型调用这些方法...1.2 StringObject 通过JSON.parse来完成,该注意的是JSON.parse遇到不可解析的字符串时,会抛出SyntaxError异常。 ?...类数组对象你可以看做一种“伪数组”,虽然它无法调用数组的方法,但是具备length属性,可以索引获取内部项的数据结构 4.3 日期ObjectNumber 日期对象转换为数字(时间戳的形式),...symbol不能与其他类型的值进行运算,会报错(即不能转换),但是部分可以显示转换为字符串或者布尔值 ?

4.4K20
领券