All Projects → AlexanderProd → jam-stack-box

AlexanderProd / jam-stack-box

Licence: MIT license
Your own self hosted continuous deployment solution for JAM Stack websites.

Programming Languages

typescript
32286 projects
Dockerfile
14818 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to jam-stack-box

Argo Cd
Declarative continuous deployment for Kubernetes.
Stars: ✭ 7,887 (+31448%)
Mutual labels:  continuous-deployment, ci-cd, cicd
Android-CICD
This repo demonstrates how to work on CI/CD for Mobile Apps 📱 using Github Actions 💊 + Firebase Distribution 🎉
Stars: ✭ 37 (+48%)
Mutual labels:  continuous-deployment, ci-cd, cicd
MCW-OSS-PaaS-and-DevOps
MCW OSS PaaS and DevOps
Stars: ✭ 49 (+96%)
Mutual labels:  ci-cd, cicd
actions
Our Library of GitHub Actions
Stars: ✭ 49 (+96%)
Mutual labels:  ci-cd, cicd
gatsby-plugin-lunr
Gatsby plugin for full text search implementation based on lunr client-side index. Supports multilanguage search.
Stars: ✭ 69 (+176%)
Mutual labels:  jamstack, gatsbyjs
Nginx Builder
A tool to build deb or rpm package of required Nginx version from the source code, with the ability to connect third-party modules. Nginx parameters are set in the yaml configuration file.
Stars: ✭ 123 (+392%)
Mutual labels:  builder, ci-cd
bodywork-ml-pipeline-project
Deployment template for a continuous training pipeline.
Stars: ✭ 22 (-12%)
Mutual labels:  continuous-deployment, cicd
azure-flutter-tasks
Easily build and deploy with latest Flutter build tasks for Azure DevOps Pipelines Tasks
Stars: ✭ 66 (+164%)
Mutual labels:  ci-cd, cicd
Nevergreen
🐤 A build monitor with attitude
Stars: ✭ 170 (+580%)
Mutual labels:  continuous-deployment, ci-cd
ofcourse
A Concourse resource generator
Stars: ✭ 41 (+64%)
Mutual labels:  continuous-deployment, cicd
testimonial
Jamstack app using Gatsby, Netlify, and FaunaDB.
Stars: ✭ 23 (-8%)
Mutual labels:  jamstack, gatsbyjs
cloud-s4-sdk-pipeline
The Cloud SDK pipeline uses the Cloud SDK continuous delivery server for building, checking, and deploying extension applications. Projects based on the SAP Cloud SDK archetype will automatically use this pipeline.
Stars: ✭ 65 (+160%)
Mutual labels:  continuous-deployment, ci-cd
Flubucore
A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.
Stars: ✭ 695 (+2680%)
Mutual labels:  builder, continuous-deployment
plasmic
Visual page builder and web design tool for any website or web app tech stack
Stars: ✭ 1,475 (+5800%)
Mutual labels:  builder, jamstack
maestro
Faster CI/CD for multi-artifact projects
Stars: ✭ 13 (-48%)
Mutual labels:  builder, continuous-deployment
Buildhelpers
Helper functions for PowerShell CI/CD scenarios
Stars: ✭ 174 (+596%)
Mutual labels:  continuous-deployment, ci-cd
flatten-the-curve
COVID-19: By the numbers. Presenting country comparisons and adjustable cumulative graphs. Looking for another developer to keep this up to date
Stars: ✭ 18 (-28%)
Mutual labels:  jamstack, gatsbyjs
Nginx-builder
A tool to build deb or rpm package of required Nginx version from the source code, with the ability to connect third-party modules. Nginx parameters are set in the yaml configuration file.
Stars: ✭ 143 (+472%)
Mutual labels:  builder, ci-cd
Git Push Deploy
Simple Automated CI/CD Pipeline for GitHub and GitLab Projects
Stars: ✭ 21 (-16%)
Mutual labels:  continuous-deployment, ci-cd
Origin
Conformance test suite for OpenShift
Stars: ✭ 8,046 (+32084%)
Mutual labels:  continuous-deployment, ci-cd

Logo
JAMStackBox

Your own self hosted continuous deployment solution for JAM Stack websites.

It takes GitHub repositories containing GatsbyJS sites and builts them once an POST request to a specific URL has been called.

The build happens inside a Docker container to assure that a stable enviroment is provided. Once the build is finished the static files are saved to a dedicated folder inside of sites-public.

Feel free to contact me on Twitter @alexanderhorl or send me a mail (on my GitHub profile) if you like this project or would want to know more about it.

⚠️ Prerequisites

  • You need to have a running Docker instance on your machine. Currently only Docker on Linux or MacOS is supported.
  • Currently only sites based on GatsbyJS are supported. Feel free to contribute by editing the builder to support other static site generators.

🚀 Quick Start

  1. Download this repo

    git clone https://github.com/AlexanderProd/jam-stack-box
  2. Install packages and build server

    Simply run the install script in the downloaded directory.

    $ bash install.sh
  3. Start the server process

    The server process is a NodeJS server listening to a specific port, default 3000. You can change the port by providing a PORT enviroment variable.

    The server process can be started manually.

    $ node server/dist/index.js

    Or using the PM2 process manager by running the following command in the downloaded directory.

    $ pm2 start

    or

    $ pm2 start --env production

Usage

Since this project is currently in development theres no frontend to control your sites yet. Though you can still use it simply by doing requests agains the rest server.

When a new site gets added all parameters get saves to the DB and the sites gets a unique 6 digit alphanumeric string as ID.

A new site gets created by posting a POST request against /site and a build gets triggered with a POST to /build/[id].

REST Endpoints

The most important API endpoints are the following, checkout index.js in the server directory for the rest. The default development port is 3000, the production port is 6469. It can be with a either PORT enviroment variable or in the config file in the server directory.

POST /site

Creates a new site instance and saves it to the database, returns the id of the site. Expects content type x-www-form-urlencoded.

field required description
name true Name of the site, only used for front-end purposes.
source true GitHub link to a repository with the site content.
( e.g. https://github.com/AlexanderProd/gatsby-shopify-starter )

If you want to use a private repo as source you have to supply a GitHub OAuth token in the source URL, like this. https://<token>@github.com/owner/repo.git. JamStackBox is using this technique to clone private repos. You can read how to create a personal OAuth token here.

POST /build/[id or name]

Triggers a new build for the site with the ID.

GET /sites

Returns a JSON array with all sites in the database.

GET /sites/[id]

Returns all details of a specific site.

DELETE /site/[id]

Deletes the site with given ID.

GET /badge/[id or name]

Returns an svg image with the current state of a site, for example building or success.

success badge

📌 ToDo

  • Use dynamic NodeJS version in Builder using NVM.
  • Remote Deployment
  • Add frontend to control sites and builds.
  • Add support for other static site generators than Gatsby.
  • Implement a message broker.
  • Deploy status badge.
  • Split server and builder into dedicated docker containers.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].