首页
学习
活动
专区
圈层
工具
发布

使用 YAML 文件配置 Jenkins 流水线

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

6K40

【玩转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 此时,您应该能够在浏览器中访问您的域名,并看到大象击中计算机屏幕错误页面。因为服务还没有启动。

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

    使用 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 服务中迁出即可:一来可以解决这个问题,二来则可以提升服务整体性能,以及在未来让服务更容易做水平扩展。

    2.4K31

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

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

    4.3K30

    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.此数据库易于使用,同时性能卓越。

    1.2K30

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

    我们认为,在 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.此数据库易于使用,同时性能卓越。

    1.4K00

    Discourse深度解析:2025年现代化社区论坛平台的典范

    ───────┐ ┌─────────────┐ │ 客户端 │ │ Discourse后端 │ │ 数据库 │ │ (浏览器/APP) │ │ (Ruby...后端:基于Ruby on Rails的API服务器,处理业务逻辑 数据存储:PostgreSQL数据库,存储所有持久化数据 缓存系统:Redis,用于缓存和会话管理 消息队列:Sidekiq,用于处理后台任务...2.2 技术栈与依赖 Discourse主要采用Ruby on Rails和Ember.js作为核心技术栈,结合多种开源技术构建: 技术/依赖 用途 版本要求 Ruby on Rails 后端Web框架...7.0+ Ruby 编程语言 3.1+ PostgreSQL 主数据库 13.0+ Redis 缓存和会话存储 6.0+ Ember.js 前端JavaScript框架 5.0+ Node.js 前端资源构建...: # 创建开发和测试数据库 rake db:create db:migrate # 加载种子数据 rake db:seed_fu 启动开发服务器: # 启动Rails服务器 rails s # 在另一个终端启动

    47410

    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的数据库,对帐号的认证方式修改。

    7.7K10

    持续部署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.7K40

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

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

    2.3K10

    在 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 构建出一个可以快速提取你要的 数据并让你可以和其他表直接连表查询的视图

    4.9K20

    web框架在什么程度上受限 ?

    该服务将使用数据库,但是对于某些重要的操作,没有明确的方法可以将“模型”对象直接存储到数据库表中。此外,还需要完全控制数据何时以及如何写入数据库。...与 Django 配合使用可以参考:不建议使用 Django 来编写 REST API。Django 的 ORM 不支持多个数据库(除非使用 1.2 alpha 版)。...将对象转储到 json/xml 所需的功能非常小,因此从中获得的唯一真正剩余的优势可能是 ActiveRecord 和路由,并且如果无法想象数据干净地拟合模型,那么就没有留下太多。...对以下声明感兴趣:“该服务将依赖数据库,但是对于一些更重要的操作,没有明确的方法可以将“模型”对象直接存储到数据库表中。”不确定此语句是什么意思…在某些时候必须将一些东西放入数据库,对吧?...如果使用 JSON,强烈建议查看 MongoDB 等数据库。MongoDB 完全基于存储 JSON 数据,因此可能非常适合应用程序。答案8:没有写下任何要求,而是写下了技术决策。这是完全不同的东西。

    1.7K10

    激荡二十年:HTTP API 的变迁

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

    2.4K30

    或许需要一个整洁的API!

    ,为上层逻辑提供统一的数据视图; Response(响应)对象 则承担最终输出的封装工作,能够将数据转换为 JSON、HAML 或其他客户端可识别的格式返回。...最后,参数提取器(Parameter Extractor) 从原始的 params 散列中提取数据,并将其转换为正确的类型,如整数、浮点数或字符串,为后续逻辑提供强类型的输入保障。...服务对象负责确保输入参数的有效性,验证用户是否有权限访问目标资源,并通过 Repo(用于数据库操作) 或 Adapter(用于外部 API 调用) 从实体逻辑层获取所需数据。...假设我们要创建一个允许用户将某个文件添加到其收藏夹的功能。在这个过程中,尽管表面上看只需要一个简单的数据库操作,但实际上,这个功能隐式地依赖于我们之前定义的每一层架构。...这些未经处理的原始参数构成了一个隐式的请求对象。

    29900

    云原生应用的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.8K110

    云原生概念

    例如,如果应用的数据库服务由于硬件问题出现异常,管理员可以从最近的备份中恢复一个数据库,卸载当前的数据库,然后加载新的数据库 – 整个过程都不需要修改代码。 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.8K51

    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

    7.2K60

    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

    8.2K21

    项目开发学习与总结

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

    66820

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

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

    3.1K20
    领券