Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DVC-6429] [chore] add gitstream #55

Merged
merged 1 commit into from
Mar 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .cm/gitstream.cm
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# -*- mode: yaml -*-

manifest:
version: 1.0

# The `automations` section includes a list of automation that applies
# to the repository in which gitStream is installed. Each automation has an
# `if` key with a list of the necessary assertions, as well as a `run` key with a
# list of all actions. All the listed assertions need to pass in order
# for the following actions to be executed (there is AND relation between conditions).

# Each automation under the `automations` section is independent of the others.
# Every time a PR is opened or changed, the automation's conditions are evaluated (the `if`).
# The actions under `run` are executed one by one if all the conditions pass.

# Conditions consists of an expression, which are wrapped with double curly braces, and
# includes a context variable like `files` and filter functions like `length`. Filters
# functions are essentially functions that can be applied to context variables. They are
# called with a pipe operator (|) and can take arguments. Read more on https://docs.gitstream.cm

config:
ignore_files:
- 'yarn.lock'
- 'migrations.json'

automations:
# This is the name of the review automation. You can use whatever name, a meaningful name
# will help to identify it in the future. Each automation name in this file should be unique.
estimated_time_to_review:
if:
- true
run:
- action: add-label@v1
args:
label: "{{ calc.etr }} min review"
color: {{ 'E94637' if (calc.etr >= 20) else ('FBBD10' if (calc.etr >= 5) else '36A853') }}

safe_changes:
# The `if` key has a list of conditions, each condition is specified as a Jinja expression
# in a double curly braces. Expressions are evaluated by gitStream on a PR when triggered.
if:
# Given the PR code changes, check that only formatting changes were made
- {{ is.formatting or is.docs or is.tests }}
# `run` key has a list of actions, which are executed one by one whenever the automation
# conditions are met.
run:
# When the changes are validated as formatting only, you can help to speed up the review
# by adding a label that marks it accordingly.
- action: add-label@v1
args:
label: 'safe-changes'
# You can uncomment the following action to get gitStream can even automatically approve
# such PRs to save reviewers time for such changes.
# - action: approve@v1


calc:
etr: {{ branch | estimatedReviewTime }}
is:
formatting: {{ source.diff.files | isFormattingChange }}
docs: {{ files | allDocs }}
tests: {{ files | allTests }}
49 changes: 49 additions & 0 deletions .github/workflows/gitstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Code generated by gitStream GitHub app - DO NOT EDIT

name: gitStream workflow automation

on:
workflow_dispatch:
inputs:
client_payload:
description: The Client payload
required: true
full_repository:
description: the repository name include the owner in `owner/repo_name` format
required: true
head_ref:
description: the head sha
required: true
base_ref:
description: the base ref
required: true
installation_id:
description: the installation id
required: false
resolver_url:
description: the resolver url to pass results to
required: true
resolver_token:
description: Optional resolver token for resolver service
required: false
default: ''

jobs:
gitStream:
timeout-minutes: 5
# uncomment this condition, if you dont want any automation on dependabot PRs
# if: github.actor != 'dependabot[bot]'
runs-on: ubuntu-latest
name: gitStream workflow automation
steps:
- name: Evaluate Rules
uses: linear-b/gitstream-github-action@v1
id: rules-engine
with:
full_repository: ${{ github.event.inputs.full_repository }}
head_ref: ${{ github.event.inputs.head_ref }}
base_ref: ${{ github.event.inputs.base_ref }}
client_payload: ${{ github.event.inputs.client_payload }}
installation_id: ${{ github.event.inputs.installation_id }}
resolver_url: ${{ github.event.inputs.resolver_url }}
resolver_token: ${{ github.event.inputs.resolver_token }}