Files
jekyll/docs/continuous-integration/buddyworks/index.html
jekyllbot d11d4f7c3a Deploy docs from 6da6739952
Y.D.X.: Update WDM (0.1.1 → 0.2.0) in the Windows docs (#9897)

Merge pull request 9897
2025-12-21 20:48:58 +00:00

421 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link type="application/atom+xml" rel="alternate" href="https://jekyllrb.com/feed.xml" title="Jekyll • Simple, blog-aware, static sites" />
<link type="application/atom+xml" rel="alternate" href="/feed/release.xml" title="Jekyll releases posts" />
<link rel="alternate" type="application/atom+xml" title="Recent commits to Jekylls master branch" href="https://github.com/jekyll/jekyll/commits/master.atom">
<link rel="preload" href="/fonts/lato-v14-latin-300.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/fonts/lato-v14-latin-700.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/css/screen.css" as="style">
<link rel="stylesheet" href="/css/screen.css">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Buddy | Jekyll • Simple, blog-aware, static sites</title>
<meta name="generator" content="Jekyll v4.4.1" />
<meta property="og:title" content="Buddy" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Buddy is a Docker-based CI server that you can set up in 15-20 minutes to build, test, and deploy your Jekyll websites. It supports GitHub, Bitbucket, and GitLab repositories, and can be installed on-premises or used in cloud. The following guide will show you how to set up a free environment to build and test your Jekyll project." />
<meta property="og:description" content="Buddy is a Docker-based CI server that you can set up in 15-20 minutes to build, test, and deploy your Jekyll websites. It supports GitHub, Bitbucket, and GitLab repositories, and can be installed on-premises or used in cloud. The following guide will show you how to set up a free environment to build and test your Jekyll project." />
<link rel="canonical" href="https://jekyllrb.com/docs/continuous-integration/buddyworks/" />
<meta property="og:url" content="https://jekyllrb.com/docs/continuous-integration/buddyworks/" />
<meta property="og:site_name" content="Jekyll • Simple, blog-aware, static sites" />
<meta property="og:image" content="https://jekyllrb.com/img/jekyll-og.png" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2025-12-21T12:48:54-08:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://jekyllrb.com/img/jekyll-og.png" />
<meta property="twitter:title" content="Buddy" />
<meta name="twitter:site" content="@jekyllrb" />
<meta name="google-site-verification" content="onQcXpAvtHBrUI5LlroHNE_FP0b2qvFyPq7VZw36iEY" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2025-12-21T12:48:54-08:00","datePublished":"2025-12-21T12:48:54-08:00","description":"Buddy is a Docker-based CI server that you can set up in 15-20 minutes to build, test, and deploy your Jekyll websites. It supports GitHub, Bitbucket, and GitLab repositories, and can be installed on-premises or used in cloud. The following guide will show you how to set up a free environment to build and test your Jekyll project.","headline":"Buddy","image":"https://jekyllrb.com/img/jekyll-og.png","mainEntityOfPage":{"@type":"WebPage","@id":"https://jekyllrb.com/docs/continuous-integration/buddyworks/"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://jekyllrb.com/img/logo-2x.png"}},"url":"https://jekyllrb.com/docs/continuous-integration/buddyworks/"}</script>
<!-- End Jekyll SEO tag -->
<!--[if lt IE 9]>
<script src="/js/html5shiv.min.js"></script>
<script src="/js/respond.min.js"></script>
<![endif]-->
</head>
<body class="wrap"><header>
<div class="flexbox">
<div class="center-on-mobiles">
<h1>
<a href="/" class="logo">
<span class="sr-only">Jekyll</span>
<img src="/img/logo-2x.png" width="140" height="65" alt="Jekyll Logo">
</a>
</h1>
</div>
<nav class="main-nav hide-on-mobiles">
<ul>
<li><a href="/">Home</a></li>
<li class="current"><a href="/docs/">Docs</a></li>
<li><a href="/resources/">Resources</a></li>
<li><a href="/showcase/">Showcase</a></li>
<li><a href="/news/">News</a></li>
</ul>
</nav>
<div class="search hide-on-mobiles">
<input type="text" id="docsearch-input" placeholder="Search the docs…" aria-label="Search"></div>
<div class="meta hide-on-mobiles">
<ul>
<li><a href="https://github.com/jekyll/jekyll/releases/tag/v4.4.1">v4.4.1</a></li>
<li><a href="https://github.com/jekyll/jekyll">GitHub</a></li>
</ul>
</div>
</div>
<nav class="mobile-nav show-on-mobiles">
<ul>
<li><a href="/">Home</a></li>
<li class="current" aria-current="page" ><a href="/docs/">Docs</a></li>
<li><a href="/resources/">Resources</a></li>
<li><a href="/news/">News</a></li>
<li><a href="https://github.com/jekyll/jekyll" target="_blank" rel="noopener">GitHub</a></li>
</ul></nav>
</header>
<section class="docs">
<div class="grid">
<div class="docs-nav-mobile unit whole show-on-mobiles">
<select id="doc-nav" onchange="navigateToUrl(this)" aria-label="Select a page from the documentation">
<option value="">Navigate the docs…</option>
<optgroup label="Getting Started">
<option value="/docs/">Quickstart</option>
<option value="/docs/installation/">Installation</option>
<option value="/docs/ruby-101/">Ruby 101</option>
<option value="/docs/community/">Community</option>
<option value="/docs/step-by-step/01-setup/">Step by Step Tutorial</option>
</optgroup>
<optgroup label="Build">
<option value="/docs/usage/">Command Line Usage</option>
<option value="/docs/configuration/">Configuration</option>
<option value="/docs/rendering-process/">Rendering Process</option>
</optgroup>
<optgroup label="Content">
<option value="/docs/pages/">Pages</option>
<option value="/docs/posts/">Posts</option>
<option value="/docs/front-matter/">Front Matter</option>
<option value="/docs/collections/">Collections</option>
<option value="/docs/datafiles/">Data Files</option>
<option value="/docs/assets/">Assets</option>
<option value="/docs/static-files/">Static Files</option>
</optgroup>
<optgroup label="Site Structure">
<option value="/docs/structure/">Directory Structure</option>
<option value="/docs/liquid/">Liquid</option>
<option value="/docs/variables/">Variables</option>
<option value="/docs/includes/">Includes</option>
<option value="/docs/layouts/">Layouts</option>
<option value="/docs/permalinks/">Permalinks</option>
<option value="/docs/themes/">Themes</option>
<option value="/docs/pagination/">Pagination</option>
</optgroup>
<optgroup label="Guides">
<option value="/docs/plugins/">Plugins</option>
<option value="/docs/migrations/">Blog Migrations</option>
<option value="/docs/upgrading/">Upgrading</option>
<option value="/docs/deployment/">Deployment</option>
</optgroup>
</select>
</div>
<div class="unit four-fifths">
<article>
<div class="improve right hide-on-mobiles">
<a data-proofer-ignore href="https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/buddyworks.md">
<i class="fa fa-pencil"></i> &nbsp;Improve this page
</a>
</div>
<h1>Buddy</h1>
<p><a href="https://buddy.works">Buddy</a> is a <a href="https://www.docker.com/">Docker</a>-based CI server that you can set up in 15-20 minutes to build, test, and deploy your Jekyll websites. It supports <a href="https://github.com">GitHub</a>, <a href="https://bitbucket.org/">Bitbucket</a>, and <a href="https://gitlab.com">GitLab</a> repositories, and can be installed on-premises or used in cloud. The following guide will show you how to set up a free environment to build and test your Jekyll project.</p>
<h2 id="1-getting-started">1. Getting started</h2>
<ol>
<li>Log in at <a href="https://buddy.works">https://buddy.works</a> with your GitHub/Bitbucket account or email</li>
<li>Choose your Git provider and select or push your Jekyll Project</li>
<li>Create a new pipeline and set the trigger mode to On every push</li>
<li>Add and configure the Jekyll action and save the pipeline</li>
</ol>
<h2 id="2-how-it-works">2. How it works</h2>
<p>Whenever you make a push to the selected branch, the Jekyll action runs <code class="language-plaintext highlighter-rouge">jekyll build</code> in an isolated <a href="https://hub.docker.com/r/jekyll/jekyll/">Jekyll Docker image</a>. The output is generated to the <code class="language-plaintext highlighter-rouge">/filesystem</code> directory, and can be further deployed to FTP/SFTP and IaaS services. You can add your own commands, install additional packages, attach services, and run Selenium tests, as well as add other actions down the pipeline, eg. a Slack notification or an SSH script that will restart your server.</p>
<h2 id="3-using-yaml-for-configuration">3. Using YAML for configuration</h2>
<p>If you prefer configuration as code over GUI, you can generate a <code class="language-plaintext highlighter-rouge">buddy.yml</code> that will create a pipeline with the Jekyll action once you push it to the target branch:</p>
<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="pi">-</span> <span class="na">pipeline</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Build</span><span class="nv"> </span><span class="s">and</span><span class="nv"> </span><span class="s">Deploy</span><span class="nv"> </span><span class="s">Jekyll</span><span class="nv"> </span><span class="s">site"</span>
<span class="na">trigger_mode</span><span class="pi">:</span> <span class="s2">"</span><span class="s">ON_EVERY_PUSH"</span>
<span class="na">ref_name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">master"</span>
<span class="na">actions</span><span class="pi">:</span>
<span class="pi">-</span> <span class="na">action</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Execute:</span><span class="nv"> </span><span class="s">jekyll</span><span class="nv"> </span><span class="s">build"</span>
<span class="na">type</span><span class="pi">:</span> <span class="s2">"</span><span class="s">BUILD"</span>
<span class="na">docker_image_name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">jekyll/jekyll"</span>
<span class="na">docker_image_tag</span><span class="pi">:</span> <span class="s2">"</span><span class="s">latest"</span>
<span class="na">execute_commands</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s2">"</span><span class="s">chown</span><span class="nv"> </span><span class="s">jekyll:jekyll</span><span class="nv"> </span><span class="s">$WORKING_DIR"</span>
<span class="pi">-</span> <span class="s2">"</span><span class="s">jekyll</span><span class="nv"> </span><span class="s">build"</span>
</code></pre></div></div>
<h2 id="4-setting-up-on-premises-server">4. Setting up on-premises server</h2>
<p>The self-hosted version of Buddy can be installed on any type of server supporting Docker, including <a href="https://buddy.works/knowledge/standalone/installation-linux">Linux</a>, <a href="https://buddy.works/knowledge/standalone/installation-mac-osx">Mac</a>, <a href="https://buddy.works/knowledge/standalone/installation-amazon-ec2">AWS EC2</a>, <a href="https://buddy.works/knowledge/standalone/installation-digitalocean">DigitalOcean</a>, and <a href="https://buddy.works/knowledge/standalone/installation-azure">Microsoft Azure</a>.</p>
<h2 id="5-questions">5. Questions?</h2>
<p>This entire guide is open-source. Go ahead and <a href="https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/buddyworks.md">edit it</a> if you want to expand it or have a fix or <a href="https://jekyllrb.com/help/">ask for help</a> if you run into trouble and need assistance. Buddy also has an <a href="https://forum.buddy.works/">online community</a> for help.</p>
</article>
</div>
<div class="unit one-fifth hide-on-mobiles">
<aside>
<h4>Getting Started</h4>
<ul>
<li><a href="/docs/">
Quickstart
</a>
</li>
<li><a href="/docs/installation/">
Installation
</a>
</li>
<li><a href="/docs/ruby-101/">
Ruby 101
</a>
</li>
<li><a href="/docs/community/">
Community
</a>
</li>
<li><a href="/docs/step-by-step/01-setup/">
Step by Step Tutorial
</a>
</li>
</ul>
<h4>Build</h4>
<ul>
<li><a href="/docs/usage/">
Command Line Usage
</a>
</li>
<li><a href="/docs/configuration/">
Configuration
</a>
</li>
<li><a href="/docs/rendering-process/">
Rendering Process
</a>
</li>
</ul>
<h4>Content</h4>
<ul>
<li><a href="/docs/pages/">
Pages
</a>
</li>
<li><a href="/docs/posts/">
Posts
</a>
</li>
<li><a href="/docs/front-matter/">
Front Matter
</a>
</li>
<li><a href="/docs/collections/">
Collections
</a>
</li>
<li><a href="/docs/datafiles/">
Data Files
</a>
</li>
<li><a href="/docs/assets/">
Assets
</a>
</li>
<li><a href="/docs/static-files/">
Static Files
</a>
</li>
</ul>
<h4>Site Structure</h4>
<ul>
<li><a href="/docs/structure/">
Directory Structure
</a>
</li>
<li><a href="/docs/liquid/">
Liquid
</a>
</li>
<li><a href="/docs/variables/">
Variables
</a>
</li>
<li><a href="/docs/includes/">
Includes
</a>
</li>
<li><a href="/docs/layouts/">
Layouts
</a>
</li>
<li><a href="/docs/permalinks/">
Permalinks
</a>
</li>
<li><a href="/docs/themes/">
Themes
</a>
</li>
<li><a href="/docs/pagination/">
Pagination
</a>
</li>
</ul>
<h4>Guides</h4>
<ul>
<li><a href="/docs/plugins/">
Plugins
</a>
</li>
<li><a href="/docs/migrations/">
Blog Migrations
</a>
</li>
<li><a href="/docs/upgrading/">
Upgrading
</a>
</li>
<li><a href="/docs/deployment/">
Deployment
</a>
</li>
</ul>
</aside>
</div>
<div class="clear"></div>
</div>
</section>
<footer>
<div class="grid">
<div class="unit two-thirds center-on-mobiles">
<p>Jekyll is lovingly maintained by the <a href="/team/">core team</a> of volunteers. </p>
<p>The contents of this website are <br />&copy;&nbsp;2025 under the terms of the <a href="https://github.com/jekyll/jekyll/blob/master/LICENSE">MIT License</a>.</p>
</div>
<div class="unit one-third align-right center-on-mobiles">
<p>
Proudly hosted by
<a href="https://github.com">
<img src="/img/footer-logo.png" width="100" height="30" alt="GitHub • Social coding">
</a>
</p>
<p>
Jekyll is funded thanks to its <a href="https://github.com/jekyll/jekyll#sponsors">sponsors!</a>
</p>
</div>
</div>
</footer>
<script>
/* Creates an anchor element with the given ID and link for the permalink*/
const anchorForId = (id) => {
const anchor = document.createElement("a");
anchor.className = "header-link";
anchor.href = `#${id}`;
anchor.innerHTML = `<span class="sr-only">Permalink</span><i class="fa fa-link" aria-hidden="true"></i>`;
anchor.title = "Permalink";
return anchor;
};
/* Finds all headers of the specified level within the given element, and adds a permalink to each header*/
const linkifyAnchors = (level, containingElement) => {
const headers = Array.from(containingElement.getElementsByTagName(`h${level}`));
headers.forEach((header) => {
if (header.id) {
header.appendChild(anchorForId(header.id));
}
});
};
/* Executes the function when the document is ready */
document.onreadystatechange = () => {
if (document.readyState === "complete") {
const contentBlock = document.getElementsByClassName("docs")[0]
?? document.getElementsByClassName("news")[0];
if (!contentBlock) { return; }
for (let level = 1; level <= 6; level++) {
linkifyAnchors(level, contentBlock);
}
}
};
</script>
<!-- Google Analytics (https://www.google.com/analytics) -->
<script>
!function(j,e,k,y,l,L){j.GoogleAnalyticsObject=y,j[y]||(j[y]=function(){
(j[y].q=j[y].q||[]).push(arguments)}),j[y].l=+new Date,l=e.createElement(k),
L=e.getElementsByTagName(k)[0],l.src='https://www.google-analytics.com/analytics.js',
L.parentNode.insertBefore(l,L)}(window,document,'script','ga');
ga('create', 'UA-50755011-1', 'jekyllrb.com');
ga('send', 'pageview');
</script>
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script> docsearch({
apiKey: '50fe39c839958dfad797000f33e2ec17',
indexName: 'jekyllrb',
inputSelector: '#docsearch-input',
enhancedSearchInput: true,
debug: false // Set debug to true if you want to inspect the dropdown
});
</script>
<script>
const navigateToUrl = (select) => {
const url = select.value;
url && (window.location.href = url);
};
</script>
</body>
</html>