• Stars
    star
    139
  • Rank 262,954 (Top 6 %)
  • Language
    Ruby
  • License
    Other
  • Created over 8 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Screwdriver.cd Documentation

Screwdriver Guide

Build Status Open Issues

Documentation for the Screwdriver CD service

Screwdriver is a self-contained, pluggable service to help you build, test, and continuously deliver software using the latest containerization technologies.

To start using Screwdriver

For more information about Screwdriver, check out our homepage.

To start contributing to Screwdriver

Have a look at our guidelines, as well as pointers on where to start making changes, in our contributing guide.

The guide is powered by Jekyll. There are two ways to run Jekyll: via Docker and via installation.

Running Jekyll using Docker

  1. Install docker-desktop if you haven't already.
  2. Ensure Docker is running with docker info; if not, then on Mac, you can launch easily using open -a /Applications/Docker.app/. Launching on CLI (rather than double-clicking) has advantage of exporting your $SSH_AUTH_SOCK and ssh-agent will work properly, should you need it at some point.
  3. Run the Jekyll Docker image with mount of $PWD to its serving location and with -ti so ^C will kill it.
    docker run -v $PWD:/srv/jekyll:rw -p 4080:4000 -it jekyll/jekyll jekyll serve --source docs --destination _site

Running Jekyll by installing

In order to install Jekyll you'll need Ruby, the Ruby package manager (RubyGems), and bundle to install and run Jekyll. You can check if you have these already installed like so:

$ ruby --version
ruby 2.4.1
$ gem --version
2.6.12
$ bundle --version
Bundler version 1.15.1

Jekyll supports Ruby version 2.1 or above.

You can also build and serve the documentation using Docker (see below). If you choose this approach, there is no need to install Ruby/bundle/jekyll.

Standard

To install the jekyll using bundle, making sure we're in the same directory as the Gemfile.

Install the jekyll package using bundler:

bundle install

You should now have the jekyll command installed on your system. Run bundle exec jekyll --version to check that everything worked okay.

$ bundle exec jekyll --version
jekyll 3.8.4

Viewing docs locally

There's a single configuration file named _config.yml, and a folder named docs that will contain our documentation source files.

Jekyll comes with a built-in webserver that lets you preview your documentation as you work on it. You can start the webserver locally with Jekyll directly.

Standard

Jekyll comes with a built-in webserver that lets you preview your documentation as you work on it. We start the webserver by making sure we're in the same directory as the docs folder, and then running the bundle exec jekyll serve --source docs --destination _site command:

$ bundle exec jekyll serve --source docs --destination _site
Configuration file: docs/_config.yml
            Source: docs
       Destination: _site
 Incremental build: disabled. Enable with --incremental
      Generating...
                    done in 2.251 seconds.
 Auto-regeneration: enabled for 'docs'
    Server address: http://127.0.0.1:4000/
  Server running... press ctrl-c to stop.

Docker

If you don't have Ruby installed, you can easily build and view the Screwdriver Guide using Docker. From the root directory of the repository, execute:

docker run --rm \
  --volume="$PWD:/srv/jekyll" -p 4000:4000 \
  -it jekyll/builder:3.8 \
  jekyll serve --source docs --destination _site

This may take some time as it must download all gems specified in the Gemfile on every run. If you need to rebuild the guide frequently, you could simply commit your changes and work from your commited image containing all dependencies.

For example:

docker run --volume ... --destination _site # be sure to leave off --rm
docker commit $(docker ps -q -a |head -n 1 | awk '{print $1}') cached-jekyll

# will already contain all installed gems: should be much faster!
docker run --rm \
  --volume="$PWD:/srv/jekyll" -p 4000:4000 \
  -it cached-jekyll \
  jekyll serve --source docs --destination _site

Browse your local guide

Once you successfully start the webserver, open up http://127.0.0.1:4000/ in your browser. You'll be able to see the index page being displayed. And you'll also be able to see the other language index page open up http://127.0.0.1:4000/:lang/ in your browser. For example, open up http://127.0.0.1:4000/ja/ in your browser, you'll be able to see the Japanese index page being displayed.

Adding docs

Simply add a new markdown document to the folder hierarchy in docs, and add an entry to the tree in docs/_data/menu.yaml

Documentation Structure

  • Homepage
    • What are the sections for
  • Cluster Management (for SD owners)
    • Overall architecture
    • Configuring API
      • Scm plugins
      • Datastore plugins
    • Configuring UI
    • Configuring Store
      • Logging plugins
    • Configuring Queue Service
    • Running locally
    • Configure Build
    • Examples
      • Setting up Kubernetes
    • Debugging
  • User Guide
    • Quickstart
    • API
    • Authentication and Authorization
    • Configuration
      • Overall YAML
      • Metadata
      • Secrets
    • Templates
    • FAQ
  • About
    • What is SD?
    • Appendix
      • Domain model
      • Execution engines
    • Contributing
    • Support

More Repositories

1

screwdriver

An open source build platform designed for continuous delivery.
JavaScript
1,015
star
2

gitversion

A helper for bumping versions via git tags.
Go
31
star
3

ui

Screwdriver UI
JavaScript
25
star
4

launcher

The entrypoint for job launching in Screwdriver
Go
13
star
5

meta-cli

CLI for reading/writing information from the metadata
Go
8
star
6

models

Screwdriver Models
JavaScript
7
star
7

scm-gitlab

Gitlab implementation of the scm-base class
JavaScript
6
star
8

toolbox

Central repository for handy Screwdriver-related scripts and other tools
Shell
5
star
9

data-schema

Screwdriver internal data schema
JavaScript
5
star
10

screwdriver-chart

Kubernetes helm chart for deploying the whole Screwdriver ecosystem
Mustache
5
star
11

config-parser

Node module for parsing screwdriver.yaml configurations
JavaScript
4
star
12

executor-k8s

Kubernetes Executor for Screwdriver
JavaScript
4
star
13

in-a-box

Quick script to get Screwdriver running locally
Python
4
star
14

log-service

Sidecar for reading logs from the Launcher and uploading to the Store
Go
3
star
15

client

Screwdriver CLI
Go
3
star
16

store

Pluggable Artifact Store (for logs, shared steps, templates, etc).
JavaScript
3
star
17

executor-jenkins

Jenkins Executor for Screwdriver
JavaScript
3
star
18

template-main

Validates templates
JavaScript
2
star
19

coverage-sonar

SonarQube implementation of the coverage-base class
JavaScript
2
star
20

notifications-slack

Plugin to send Screwdriver build notifications
JavaScript
2
star
21

circuit-fuses

Wrapper around node-circuitbreaker to define a simple callback interface
JavaScript
2
star
22

sd-step

Go
2
star
23

executor-docker

Docker Executor for Screwdriver
JavaScript
2
star
24

store-cli

CLI for communicating with store
Go
2
star
25

sd-local

Screwdriver local mode
Go
2
star
26

scm-github

Github implementation of the scm-base class
JavaScript
2
star
27

notifications-email

Sends email notifications on certain build events.
JavaScript
2
star
28

datastore-sequelize

Datastore implementation for mysql, postgres, sqlite3 and mssql
JavaScript
1
star
29

scm-base

Base class defining the interface for source control implementations
JavaScript
1
star
30

tmpl-semantic-release

1
star
31

homepage

Screwdriver.cd homepage
JavaScript
1
star
32

generator-screwdriver

Yeoman generator for building Screwdriver Node Modules
JavaScript
1
star
33

marketplace

Shared Templates & Commands
1
star
34

hyperctl-image

This repo creates a minimal docker image containing hyperctl and k8s-vm scripts.
Shell
1
star
35

sd-cmd

Screwdriver commands (Sharing Binaries)
Go
1
star
36

executor-k8s-vm

Kubernetes VM Executor for Screwdriver
JavaScript
1
star
37

python-templates

Collection of templates for Python programming with Screwdriver
Shell
1
star