Coder Social home page Coder Social logo

isabella232 / accumulo-website Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apache/accumulo-website

0.0 0.0 0.0 49.78 MB

Apache Accumulo Website

Home Page: https://accumulo.apache.org

HTML 99.74% CSS 0.16% JavaScript 0.06% Ruby 0.01% Processing 0.01% Shell 0.01% SCSS 0.02%

accumulo-website's Introduction

Apache Accumulo Website

Apache Accumulo's website is generated from Markdown source (specifically, kramdown style) with Jekyll, using Bundler to manage its gem dependencies.

Development

Custom Liquid Tags

Jekyll uses Liquid to process files before interpreting their Markdown contents. We have extended Jekyll using its plugin mechanism to create custom Liquid tags that make it easier to link to javadocs, properties, and documents.

The source for these tags is at _plugins/links.rb.

Tag Description Options Examples
jlink Creates Javadoc link Link text will be class name by default. Use -f for full package + class name {% jlink -f org.apache.accumulo.core.client.Connector %} {% jlink -f org.apache.accumulo.core.client %}
jurl Creates Javadoc URL None {% jurl org.apache.accumulo.core.client.Connector %}
plink Creates Property link Assumes server property by default. Use -c to link to client properties. Accepts server property prefixes (i.e table.\*) {% plink -c instance.name %}
purl Creates Property URL Default is server property. Use -c to link to client properties. Accepts server property prefixes (i.e table.\*) {% purl instance.volumes %}
dlink Creates Documentation link None {% dlink getting-stared/clients %}
durl Creates Documentation URL None {% durl troubleshooting/performance %}
ghi GitHub issue link None {% ghi 100 %}
ghc GitHub code link Branch defaults to gh_branch setting in _config.yml. Override using -b {% ghc server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java %} {% ghc -b 1.10 README.md %}
jira Jira issue link None {% jira ACCUMULO-1000 %}

Updating Property Documentation for Releases

Building Accumulo generates server-properties.md and client-properties.md. To regenerate these, do the following.

ACCUMULO_SITE_CLONE=<accumulo website clone location, with main branch checked out>
ACCUMULO_CLONE=<accumulo clone location>
cd "$ACCUMULO_CLONE"
mvn package -DskipTests
cp ./core/target/generated-docs/server-properties.md "$ACCUMULO_SITE_CLONE"/_docs-2/configuration
cp ./core/target/generated-docs/client-properties.md "$ACCUMULO_SITE_CLONE"/_docs-2/configuration

Local Builds for Testing

Setting up Your Jekyll/Bundler Environment

Ruby and RubyGems are required to use Jekyll and Bundler, so first make sure you have those on your machine.

If you are using an OS packaged version of Ruby, you may also need to install the ruby-dev (Ubuntu) or ruby-devel (Fedora) package as well to build any native code for gems that are installed later. Installing these will also ensure your system's RubyGems package is installed. Depending on your OS, you may also need other packages to install/build gems, such as ruby-full, make, gcc, nodejs, build-essentials, or patch.

Once Ruby, RubyGems, and any necessary native tools are installed, you are ready to install Bundler to manage the remaining RubyGem dependencies. Bundler is included in Ruby 2.6 and later as a default gem, so installing it may not be needed.

Because we use Bundler to install specific versions of gems, it is not recommended to use an OS packaged version of gems other than what comes built-in. If you are using an OS packaged version of Ruby, it is strongly recommended to avoid sudo when installing additional gems, in order to avoid conflicting with your system's package-managed installation. Instead, you can specify a GEM_HOME directory for installing gems locally in your home directory. You can do this in your $HOME/.bashrc file or other appropriate place for your environment:

# in .bashrc
export GEM_HOME=$HOME/.gem/ruby

With Ruby installed on your machine, you can install Bundler using the command below:

# not necessary in Ruby >2.6, since it is a default gem since 2.6
gem install bundler

Next, use Bundler to install Jekyll and other dependencies needed to run the website (this command assumes your current working directory is your clone of this repository with the main branch checked out, because that's where the Gemfile dependency list exists).

bundle install

Testing with the Built-in Jekyll Webserver

The command to serve the site contents using Jekyll's built-in webserver is as follows (this webserver may behave differently than apache.org's servers).

bundle exec jekyll serve -w

You do NOT need to execute a bundle exec jekyll build command first, as the serve command is sufficient to both build the site and serve its contents. By default, it will also try to re-build any pages you change while running the webserver, which can be quite useful if trying to get some CSS or HTML styled "just right".

Jekyll will print a local URL where the site can be viewed (usually, http://0.0.0.0:4000/).

Publishing

Automatic Staging

Changes pushed to our main branch will automatically trigger Jekyll to build our site from that branch and push the result to our asf-staging branch, where they will be served on our default staging site.

Publishing Staging to Production

First, add our repository as a remote in your local clone, if you haven't already done so (these commands assume the name of that remote is 'upstream').

Example:

git clone https://github.com/<yourusername>/accumulo-website
cd accumulo-website
git remote add upstream https://github.com/apache/accumulo-website

Next, publish the staging site to production by updating the asf-site branch to match the contents in the asf-staging branch:

# Step 0: stay in main branch; you never need to switch
git checkout main

# Step 1: update your upstream remote
git remote update upstream

# Step 2: push upstream/asf-staging to upstream/asf-site
# run next command with --dry-run first to see what it will do without making changes
git push upstream upstream/asf-staging:asf-site

A convenience script can be found that performs these steps for you, after asking which remote you want to use. It is located in the main branch at _scripts/publish.sh

Note that Step 2 should always be a fast-forward merge. That is, there should never be any reason to force-push it if everything is done correctly. If extra commits are ever added to asf-site that are not present in asf-staging, then those branches will need to be sync'd back up in order to continue avoiding force pushes.

The final site can be viewed here.

accumulo-website's People

Contributors

alerman avatar arvindshmicrosoft avatar billierinaldi avatar brianloss avatar cjmctague avatar ctubbsii avatar dhutchis avatar domgarguilo avatar edcoleman avatar etseidl avatar gramhagen avatar hkeebler avatar ivakegg avatar jmark99 avatar joshelser avatar josselinchevalay avatar jzgithub1 avatar karthick-rn avatar keith-turner avatar lstav avatar madrob avatar manno15 avatar mikewalch avatar milleruntime avatar mjwall avatar phrocker avatar pircdef avatar rcarterjr avatar slackwinner avatar umang228 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.