All Projects → rgfindl → functionci

rgfindl / functionci

Licence: MIT license
FunctionCI is an open source Continuous Integration tool for AWS Lambdas.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to functionci

boots
boots is a .NET global tool for "bootstrapping" vsix & pkg files. Just "boots https://url/to/your/package"!
Stars: ✭ 78 (+136.36%)
Mutual labels:  continuous-integration
terraform-aws-concourse
Terraform Module for a distributed concourse cluster on AWS
Stars: ✭ 12 (-63.64%)
Mutual labels:  continuous-integration
flagsmith-java-client
Java Client for Flagsmith. Ship features with confidence using feature flags and remote config. Host yourself or use our hosted version at https://www.flagsmith.com/
Stars: ✭ 16 (-51.52%)
Mutual labels:  continuous-integration
plugin.video.sendtokodi
📺 plays various stream sites on kodi using youtube-dl
Stars: ✭ 86 (+160.61%)
Mutual labels:  continuous-integration
ofcourse
A Concourse resource generator
Stars: ✭ 41 (+24.24%)
Mutual labels:  continuous-integration
kahoy
Simple Kubernetes raw manifests deployment tool
Stars: ✭ 33 (+0%)
Mutual labels:  continuous-integration
baghdad
Distributed CI/CD for microservices
Stars: ✭ 15 (-54.55%)
Mutual labels:  continuous-integration
dashinator
Dashinator the daringly delightful dashboard. A replacement for dashing
Stars: ✭ 56 (+69.7%)
Mutual labels:  continuous-integration
phpstan
PHP Static Analysis in Github Actions.
Stars: ✭ 41 (+24.24%)
Mutual labels:  continuous-integration
pen-test-automation
A framework for automating penetration testing using a plugin based architecture
Stars: ✭ 31 (-6.06%)
Mutual labels:  continuous-integration
changed-files
Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.
Stars: ✭ 733 (+2121.21%)
Mutual labels:  continuous-integration
notebooks-ci-showcase
Fully Configured Example of CI/CD For Notebooks On Top Of GCP
Stars: ✭ 22 (-33.33%)
Mutual labels:  continuous-integration
sagdevops-ci-assets
Software AG DevOps library to support assets CI (continuous integration) with webMethods 9.x and 10.0. Work together with https://github.com/SoftwareAG/webmethods-sample-project-layout
Stars: ✭ 23 (-30.3%)
Mutual labels:  continuous-integration
great expectations action
A GitHub Action that makes it easy to use Great Expectations to validate your data pipelines in your CI workflows.
Stars: ✭ 66 (+100%)
Mutual labels:  continuous-integration
nightly-docker-rebuild
Use nightli.es 🌔 to rebuild N docker 🐋 images 📦 on hub.docker.com
Stars: ✭ 13 (-60.61%)
Mutual labels:  continuous-integration
continuous-integration-with-python
How to test your python code. How to automatically run your tests for your Python code. How to get reports of the tests coverage
Stars: ✭ 25 (-24.24%)
Mutual labels:  continuous-integration
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 (+96.97%)
Mutual labels:  continuous-integration
escape-inventory
Storing and querying Escape releases
Stars: ✭ 16 (-51.52%)
Mutual labels:  continuous-integration
showyourwork
Fully reproducible, open source scientific articles in LaTeX.
Stars: ✭ 361 (+993.94%)
Mutual labels:  continuous-integration
gitavscan
Git Anti-Virus Scan Action - Detect trojans, viruses, malware & other malicious threats.
Stars: ✭ 23 (-30.3%)
Mutual labels:  continuous-integration

Function CI

FunctionCI is an open source Continuous Integration tool for AWS Lambdas.

Builds are done by AWS CodeBuild and AWS CodePipeline.

Receive build notifications via Slack. Deploy via Slack. View build and deployment audit trails via Slack.

Fork this repo and install FunctionCI in your AWS account, then start managing your Lambdas properly.

Features

  • Serverless - Function CI only costs money when you use it
  • Github integration
  • Slack bot
  • Versioned build artifacts stored in S3
  • Build and deployment audit trails with Github commit version and Slack username

Table of content

Usage

Use the /fn create project Slack command to create a new build project.

Once your build version is ready...

Deploy it using the /fn deploy fn <fn-name> <project-name> <version> Slack command.

Here is an example project: https://github.com/rgfindl/functionci-demo

Setup

  1. Fork and clone this repo.
  2. Install CIM (CloudFormation Utility)
  3. Install the kms stack.
  4. Install the app stack.

** If you fix or add anything please submit a Pull Request!!!

Commands

/fn create project

/fn create project

Register a new Github repo that you wish FunctionCI to build.

FunctionCI uses CodeBuild, so you will need a buildspec.yml in the root of your repo.

Here is an example buildspec.yml for a node.js project.

** Note you must export a single zip artifact.

version: 0.2

# aws/codebuild/eb-nodejs-6.10.0-amazonlinux-64:4.0.0
phases:
  install:
    commands:
  pre_build:
    commands:
      - echo Installing source NPM dependencies...
      - npm install
  build:
    commands:
      - echo Testing the code
      - npm test
  post_build:
    commands:
      - echo Removing dev dependencies
      - rm -Rf node_modules
      - npm install --production
artifacts:
  files:
    - '**/*'
  type: zip

/fn show project

/fn show project <project_id>

Show the most recent builds in reverse chronological order.

The project_id will be <your repo name>-<branch>.

Example:

The project_id == functionci-demo-master

/fn show projects

/fn show projects

Show all the projects under management.

/fn delete project

/fn show project <project_id>

Delete the project and all build artifacts.

/fn add fn

/fn add fn <short_name> <lambda-name>

Add a Lambda function you wish to deploy build artifacts to.

Ex: /fn add fn demo functionci-demo-LambdaFunction-LFREQ3DEC3UJ

/fn show fn

/fn show fn <short_name>

Show a function and all its deployment history.

Ex: /fn show fn demo

/fn show fns

/fn show fns

Show all the functions under management

Ex: /fn show fns

/fn deploy fn

/fn deploy fn <short_name> <project_id> <version>

Deploy a build artifact to the Lambda function.

Ex: /fn deploy fn demo functionci-demo-master 1

/fn delete fn

/fn delete fn <short_name>

Delete a function and all its deployment history.

Ex: /fn delete fn demo

Architecture

FunctionCI is also a serverless Lambda app. It includes the following AWS resources:

  • API Gateway (Exposes an API for our Slack bot)
  • Lambda (Slack bot API, SNS events, CloudWatch events, CodePipeline events)
  • DynamoDB (Document storage)
  • S3 (Build artifacts)
  • CloudFormation (Builds a pipeline for each project)
  • CodePipeline and CodeBuild (Performs builds)

Create Project

When you create a new project FunctionCI creates a new CloudFormation stack. This stack is the build pipeline for your project.

Build Project

When you commit changes to your Github repo CodePipeline is triggered. The first CodePipeline stage is CodeBuild to build, test, and package your app. The next CodePipeline stage is the FunctionCI Lambda to version and archive the build artifact.

Deploy Lambda

Now we are ready to deploy our build artifact to our Lambda.

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].