All Projects → pullpreview → action

pullpreview / action

Licence: other
A GitHub Action that deploys live environments for your pull requests and branches

Programming Languages

ruby
36898 projects - #4 most used programming language
shell
77523 projects
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to action

Flubucore
A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.
Stars: ✭ 695 (+1003.17%)
Mutual labels:  continuous-integration, deploy, continuous-deployment
Docker For All
Docker applied in development, devops, testing, product management etc.
Stars: ✭ 88 (+39.68%)
Mutual labels:  continuous-integration, docker-compose, continuous-deployment
Rocket
Automated software delivery as fast and easy as possible 🚀
Stars: ✭ 217 (+244.44%)
Mutual labels:  continuous-integration, deploy, continuous-deployment
swarmci
Swarm CI - Docker Swarm-based CI system or enhancement to existing systems.
Stars: ✭ 48 (-23.81%)
Mutual labels:  continuous-integration, continuous-deployment
bump-everywhere
🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
Stars: ✭ 24 (-61.9%)
Mutual labels:  continuous-integration, continuous-deployment
koshry
Run on CI, Apply Rules on the Build and Get the Result back to the Pull Request.
Stars: ✭ 59 (-6.35%)
Mutual labels:  continuous-integration, pull-request
workr
Simple and easy to setup job runner for any kind of automation
Stars: ✭ 15 (-76.19%)
Mutual labels:  continuous-integration, continuous-deployment
hygieia
CapitalOne DevOps Dashboard
Stars: ✭ 3,697 (+5768.25%)
Mutual labels:  continuous-integration, continuous-deployment
cloud-s4-sdk-pipeline-docker
The Cloud SDK continuous delivery infrastructure makes heavy use of docker images. This are the docker sources of these images.
Stars: ✭ 13 (-79.37%)
Mutual labels:  continuous-integration, continuous-deployment
flagsmith-nodejs-client
Flagsmith Node JS Client. Flagsmith lets you manage features flags across web, mobile and server side applications. Get builds out faster. Control who has access to new features.
Stars: ✭ 13 (-79.37%)
Mutual labels:  continuous-integration, continuous-deployment
chroma-feedback
Turn your RGB powered hardware into a status indicator for continuous integration, continuous deployment and infrastructure monitoring
Stars: ✭ 106 (+68.25%)
Mutual labels:  continuous-integration, continuous-deployment
workflow-webhook
A Github workflow action to call a webhook with payload data from the event. Support for JSON or URL encoded endpoints.
Stars: ✭ 90 (+42.86%)
Mutual labels:  continuous-deployment, action
landkid
Your friendly neighborhood async merging robot goat.
Stars: ✭ 80 (+26.98%)
Mutual labels:  continuous-integration, continuous-deployment
ipfs-action
GitHub Action for upload to IPFS. Supports Pinata, Infura pinning service as well as direct upload.
Stars: ✭ 115 (+82.54%)
Mutual labels:  deploy, action
actions
Collection of repetitive GitHub Actions
Stars: ✭ 12 (-80.95%)
Mutual labels:  pull-request, action
setup-scheme
Github Actions CI / CD setup for Scheme
Stars: ✭ 13 (-79.37%)
Mutual labels:  continuous-integration, continuous-deployment
LocalSupport
A directory of local support services and volunteer opportunities
Stars: ✭ 60 (-4.76%)
Mutual labels:  continuous-integration, continuous-deployment
book-monorepo-cicd
Effectively build, test, and deploy code with monorepos.
Stars: ✭ 59 (-6.35%)
Mutual labels:  continuous-integration, continuous-deployment
repl.deploy
Automatically deploy from GitHub to Replit, lightning fast ⚡️
Stars: ✭ 63 (+0%)
Mutual labels:  deploy, continuous-deployment
aws-cloudformation-simplified
AWS CloudFormation - Simplified | Hands On Learning !!
Stars: ✭ 51 (-19.05%)
Mutual labels:  continuous-integration, continuous-deployment

PullPreview

A GitHub Action that starts live environments for your pull requests and branches.

Spin environments in one click

Once installed in your repository, this action is triggered any time a change is made to Pull Requests labelled with the pullpreview label, or one of the always-on branches.

When triggered, it will:

  1. Check out the repository code
  2. Provision a cheap AWS Lightsail instance, with docker and docker-compose set up
  3. Continuously deploy the specified pull requests and branches, using your docker-compose file(s)
  4. Report the preview instance URL in the GitHub UI

It is designed to be the no-nonsense, cheap, and secure alternative to services that require access to your code and force your app to fit within their specific deployment system and/or require a specific config file.

Useful for the entire team

  • Product Owners: Interact with a new feature as it's built, give valuable feedback earlier, reduce wasted development time.
  • Developers: Show your work in progress, find bugs early, deliver the right feature.
  • Ops: Concentrate on high value tasks, not maintaining staging environments.
  • CTOs: Don't let your code run on third-party servers: your code always stays private on either GitHub's or your servers.

Features

Preview environments that:

  • work with your existing tooling: If your app can be started with docker-compose, it can be deployed to preview environments with PullPreview.

  • can be started and destroyed easily: You can manage preview environments by adding or removing the pullpreview label on your Pull Requests. You can set specific branches as always on, for instance to continuously deploy your master branch.

  • are cheap too run: Preview environments are launched on AWS Lightsail instances, which are both very cheap (10USD per month, proratized to the duration of the PR), and all costs included (bandwith, storage, etc.)

  • take the privacy of your code seriously: The workflow happens all within a GitHub Action, which means your code never leaves GitHub or your Lightsail instances.

  • make the preview URL easy to find for your reviewers: Deployment statuses and URLs are visible in the PR checks section, and on the Deployments tab in the GitHub UI.

  • persist state across deploys: Any state stored in docker volumes (e.g. database data) will be persisted across deploys, making the life of reviewers easier.

  • are easy to troubleshoot: You can give specific GitHub users the authorization to SSH into the preview instance (with sudo privileges) to further troubleshoot any issue. The SSH keys that they use to push to GitHub will automatically be installed on the preview servers.

  • are integrated into the GitHub UI: Logs for each deployment run are available within the Actions section, and direct links to the preview environments are available in the Checks section of a PR, and in the Deployments tab of the repository.

Installation & Usage

→ Please see the wiki for the full documentation.

Example

Workflow file with the master branch always on:

# .github/workflows/pullpreview.yml
name: PullPreview
on:
  # the schedule is optional, but helps to make sure no dangling resources are left when GitHub Action does not behave properly
  schedule:
    - cron: "30 2 * * *"
  push:
    branches:
      - main
  pull_request:
    types: [labeled, unlabeled, synchronize, closed, reopened]

jobs:
  deploy:
    if: github.event_name == 'schedule' || github.event_name == 'push' || github.event.label.name == 'pullpreview' || contains(github.event.pull_request.labels.*.name, 'pullpreview')
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v2
      - uses: pullpreview/action@v5
        with:
          # Those GitHub users will have SSH access to the servers
          admins: crohr,other-github-user
          # A staging environment will always exist for the master branch
          always_on: main
          # Use the cidrs option to restrict access to the live environments to specific IP ranges
          cidrs: "0.0.0.0/0"
          # PullPreview will use those 2 files when running docker-compose up
          compose_files: docker-compose.yml,docker-compose.pullpreview.yml
          # The preview URL will target this port
          default_port: 80
          # Use a 512MB RAM instance type instead of the default 2GB
          instance_type: nano_2_0
          # Ports to open on the server
          ports: 80,5432
        env:
          AWS_ACCESS_KEY_ID: "${{ secrets.AWS_ACCESS_KEY_ID }}"
          AWS_SECRET_ACCESS_KEY: "${{ secrets.AWS_SECRET_ACCESS_KEY }}"
          AWS_REGION: "us-east-1"

Is this free?

The code for this Action is completely open source, and licensed under the Prosperity Public License (see LICENSE).

If you are a non-profit individual, then it is free to run (in that case, please tell me so and/or pass the word around!).

In all other cases, you must buy a license. More details on pullpreview.com.

Thanks for reading until the end!

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