Giter Club home page Giter Club logo

gitploy's Introduction

Gitploy



Gitploy helps your team build the deployment system around GitHub in minutes.
Documentation | Community | Installation Guide


What is Gitploy?

GitHub provides the deployment API to deploy a specific ref(branch, SHA, tag). It enables your organization to build the deployment system loosely coupled tooling without worrying about the implementation details of delivering different types of applications (e.g., web, native). But it takes a lot of resources to build the deployment system from scratch.

Gitploy enables your organization to build the deployment system around deployment API in minutes, and it provides the place to manage all deployment and deploying in the same manner.

Gitploy Demo

Features

  • Manage all deployments in one place.
  • Provides the intuitive UI to deploy a specific ref (branch, SHA, tag).
  • Build an event-driven deployment system for loosely coupled tooling.
  • Provides both continuous delivery and continuous deployment.
  • Provides advanced deployment features: Rollback, Review, Lock, Freeze Window.
  • Provides DevOps metrics.

Gitploy vs GitHub environment

Name Gitploy GitHub environment
Manual deploy
Auto deploy
Review
Rollback
Deployment Safety
DevOps Metrics
Private repositories for teams plan

Getting Started

To install Gitploy on your hosting, read this documentation.

For public repositories, we're providing the free cloud.

Important Links

Documentation Community Installation Guide Docker Image
📚 Documentation Community / 💬 Slack 📖 Installation Guide 🐋 Docker Image

Contributors

Don't be afraid to contribute! We have many things you can do to help out. If you're trying to contribute but stuck, please tag @hanjunlee.

You can check the contributing for exact details on how to contribute.

gitploy's People

Contributors

dependabot[bot] avatar noahingh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gitploy's Issues

Provide OSS Edition

We should provide the community edition to personal users and small teams. The core logic would be the same with the enterprise edition, but some features are only supported for the enterprise edition.

We plan to use tags such as oss to build with OSS files when we compile them into the binary file.

Reconsider the review system of Gitploy.

We should provide some features to enhance the review system.

Note

When I started to design the review system, I thought it was reasonable to deploy automatically after approval like GitHub. But for Gitploy, it is not feasible because Gitploy has the validation of GitHub deployment API, which can fail to deploy automatically. So we should deploy it manually.

Todo

Add metrics of deployment for DevOps

Add more metrics of deployment for DevOps from the article. Metrics should represent velocity, quality, and application performance.

Metrics

  • Frequency: #153 (The count of deployment)
  • Size: The count of commits, The count of changed lines, and The count of files.
  • Performance: The rate of size for a deployment.

Subtasks

  • #168
  • #169
  • Add metrics for the lead time of commits

feat: display changes for the deployment

It should display changes from the previous one in the deployment view, and also if the approve button is supported by Chat it should display changes with a message.

  • Deployment Page #12
  • Slack Approval Requested

Restrict Deployable `REF`

Restrict REF only matched with the pattern. For example, deployable_ref: main means only the main branch is deployable to the environment.

# in deploy.yml

deployable_ref: main

Gitploy V1 Roadmap

Objectives

Gitploy V1 provides what users need to build an delivery pipeline.

Roadmap

  • Advanced Deployment
    • #217
    • #98
    • #377
    • Support the continuous deployment (Auto deploy periodically)
    • Support configuration template
    • #379
  • Deployment Safety
    • #33
    • #368
    • #269
    • Restrict admin permission to a critical environment
  • Review
    • #188
    • #185
    • Provide the field for the template of a review comment
  • Support gitploy CLI
  • Lock the repository to block deploying
  • #153
  • Documentation
  • Chatops
    • Slack
    • MIcrosoft Teams
  • Notification
  • Synchronization options
  • #177
  • #131

Change the prefix of API for repositories.

We have to change the prefix/repos/:id into the GitHub-styled prefix like repos/:namespace/:name for more apparent APIs.
It can be a significant change, but I think we have to achieve it before being public.

Provide the auto deployment for the `push` event

Description

This feature enables Gitploy to deploy automatically if a new push event is matched with the giving ref pattern. For example, it can be handy if a team wants to deploy when a pull request is merged to the main branch.

Implement

To listen for push events, Gitploy has to add the push event when it creates a new webhook. At now, Gitploy only configures the deployment_status event when a user activates a repository. (code)

And another issue is to specify who is the deployer for auto-deployment. The user who activated the repository called activator could be the deployer for auto-deployment because the activator has admin permission to post a remote deployment and is usually equal to a reviewer.

Example

envs:
  - name: prod
    auto_deploy_on: refs/heads/main

Fix: fix json tag of entity to use `omitempty`

Fix json tag of entity structure to use omitempty for the optional field, and use optional chaining in UI.

E.g)

type Repo struct {
	config `json:"-"`
	// ID of the ent.
	ID string `json:"id,omitempty"`
	// Namespace holds the value of the "namespace" field.
	Namespace string `json:"namespace,omitemtpy"`
interface Repo {
  id: string
  namespace?: string  // Optional field 
}

Lock the repository

Lock the repository to block deploying. This feature is useful when users try to rollback.

Provide prometheus metrics

We should provide metrics about the Gitploy application that users can manage Gitploy themselves. In the issue, we'll consider 1) which metrics are being and 2) how to implement them.

Metrics

  • The response code of the server
  • The count of repositories
  • The count of deployment of repository for each environment (e.g. dev, production), respectively
  • The count of user
  • The limit of user

Lock the specific environment in UI

Provide the lock tab, and it shows the list of environments with the button for lock (or unlock).

API Design

Provide the following APIs:

  • POST /repos/:id/locks: Lock the environment.
  • GET /repos/:id/locks: List up locked environments.
  • DELETE /repos/:id:/locks/:lockID: Delete the lock.

feat: migrate dialog into modal in Slack

When the user runs the command /gitploy deploy, firstly, it shows the select for repositories. - It is impossible because Slack doesn't support the external source with search. Indeed, the command has to specify the repository name like/gitploy deploy OWNER/REPO.

Change to select reviewers into static reviewers

As is

When users deploy, they select reviewers who usually have committed to the release even though reviewers have already reviewed the pull request.

To be

The reviewer should be a maintainer or admin who can determine to deploy the release to the production.

Support variables in payload

Variables can be instrumental because the content of the deploy.yml is static. So we have to support some variables users needs.

Variables

  • GITPLOY_DEFAULT_TASK
  • GITPLOY_IS_ROLLBACK
  • GITPLOY_TAG - For mono-repository, it could be useful with the substitution.

feat: close time-outed deployment.

Deployment needs the status for the inactive status. The worker should inactivate deployments that are over the time limit.

The inactive status doesn't have any special features; it just denotes the deployment is stale.

Github Abandoned

feat: stream deployment, approval event

summary

Gitploy pushes deployments and approvals to the event queue that subscribers are watching. The stream subscribers put events to web pages to synchronize instantly, and the notification subscriber sends a notification to the user.

Implement

we need two tables, events and notifications, events is the event queue that is subscribed periodically, instead notifications is the record to avoid duplicated notifications.

Fix: change type of optional value into `nil`

Some fields of a payload can be optional fields. To handle the payload which has optional fields, in the server, the field of payload structure has to be a pointer type.

e.g) Update Repo

PatchRepoPayload struct {
  ConfigPath *string
  Active *bool
}

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.