• Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Bitrise Workflow Editor

Build status

Bitrise Workflow Editor

Note: project is going through angularjs -> React transition. Please read more about this in the wiki section.

How to install & use the Workflow Editor on your Mac/Linux

  1. Install Go brew install go(on macOS)
  2. Install the latest Bitrise CLI - it's a single binary command line tool
  3. Run bitrise setup just to be sure everything's prepared
  4. cd into a directory where you have your bitrise.yml, and run: bitrise :workflow-editor

That's all. The Workflow Editor is now part of the Bitrise CLI core plugins, so you don't have to install it manually.

To upgrade to the latest version of the Workflow Editor run:

bitrise plugin update workflow-editor

Join the Workflow Editor's discussion at: https://discuss.bitrise.io/t/workflow-editor-v2-offline-workflow-editor/39

Install requirements

Workflow editor uses webpack for static asset compilation and asset bundling. For transformation we need to use some rails related transformation hence it also uses bundler to install ruby dependencies. In addition it uses karma and jasmine for frontend tests execution so it needs node and npm installed to get the dependencies for testing and also production.

Finally the local executable is written in GO. so you need to have go set up as well and dependencies.

bitrise run setup-client

Development

Build a stand-alone binary, with embedded resources

go install

Run in development mode

npm start          # start both local plugin api and webpack dev server
  1. In your browser, you can reach the Workflow Editor on localhost:4000/{version}. Be aware that you usually have to wait a while until dev server starts up (then refresh)
  2. By default, the Workflow Editor will open the test_bitrise.yml from integration folder (used for integration testing). Please do not commit this file if you have any changes with it (e2e tests would fail).

If you would like to run the Workflow Editor in website mode, you have to run the dedicated npm command:

npm run start:website   # starts WFE in website mode

You also have to make sure that the Monolith is already running before you try to execute the command above (otherwise every request to http://localhost:3000 will be handled by the WFE). Also make sure that you change the path in the monolith to point to this version of the WFE (instead of the production version):

  • in the monolith open workflow_controller.rb
  • change base_url in method get_workflow_editor_html_content to the current version:
    • if you run the monolith directly (using the umbrella repo) use localhost:4000/{version} (e.g base_url = 'http://localhost:4000/1.3.135)
    • if you run the monolith in docker (e.g with the web-dev-env repo) use host.docker.internal:4000/{version} (e.g base_url = 'http://host.docker.internal:4000/1.3.135)

Run client tests

npm test        # for single run unit test with code compilation
npm run karma   # for single run unit test without code compilation (using already compiled code)

npm run e2e:api # run only the local binary api for e2e tests
npm run e2e:dev # run e2e test dashboard (cypress dashboard)
npm run e2e:run # run e2e tests itself (cypress)
npm run e2e     # for self contained e2e tests (local binary api + testing logic) e2e:api + e2e:run

NOTE: for e2e testing you could start a service normally with npm start (to develop and run tests on it parallel) or have a binary ready by bitrise run setup-plugin-api if you only want to verify the correctness of an already built feature. And then run the test dashboard with npm run e2e:dev

Use npm test for a single test run. If you only iterate on tests, you can also use npm run karma as it skips transpilation and the transpilation and run the tests on an already transpiled JS. (faster)

Releasing

Every master commit is gonna released to S3 and Bitrise will integrate it with the website manually (CD is planned when test coverage and confidence is increasing with the editor). If you wanna do a plugin release as well you need to tag the PRs with #plugin wherever in the PR title (like: "new feature #plugin".

Contributing

This project is using squash & merge model, feel free to have as many commits as you like but at the end the work will end up on master as a single commit.

Tech standards

  1. Every new feature has to be created in typescript and React (see wiki for integration guides).
  2. If you touch legacy code, consider porting it to new standards or if that's not possible use ES5 syntax! There are no transpilation for legacy codes (only minification).
  3. For tests you are safe to use whatever standards jsdom executes (ES6 supported).
  4. Use SCSS for styling (try to use local components style if possible)

Testing standards

  1. Unit tests are required for every new feature
  2. Consider write E2E tests as well (with cucumber and cypress)

New version release

Every master commit is released to an S3 bucket and Bitrise will integrate it with the website manually (CD is planned when test coverage and confidence is increasing with the editor). If you wanna do a plugin release as well you need to tag the PRs with #plugin wherever in the PR title (like: "new feature #plugin".

If new release requires Bitrise CLI to be updated, in bitrise-plugin.yml change min_version requirement of the bitrise tool to the required CLI version

Testing if version release works, without actually releasing

  • In bitrise.yml, create a workflow e. g. test-release
  • From the create-release workflow, copy-paste the GitHub release and Create Discuss topic steps.
  • In the GitHub release step, remove the files_to_upload input, set the $NEW_RELEASE_VERSION everywhere to something arbitrary, same for the body, and most importantly set draft: 'yes'
  • In the Create Discuss topic step, change the DISCUSS_CHANGELOG_CATEGORY_ID to the ID of one our discuss.bitrise.io's internal channels' ID (you can find an ID using the Discourse API with a cURL request) so that it is only visible to us; also change the title and the raw parameter to something arbitrary.
  • After the test release process, don't forget to delete the draft release and the internal changelog topic.

More Repositories

1

bitrise

Bitrise runner CLI - run your automations on your Mac or Linux machine -
Go
836
star
2

android

ARCHIVE: This repository is sunsetted. The new image's repository will be made available later. | Android Docker image
Dockerfile
399
star
3

codesigndoc

Your friendly iOS Code Signing Doctor
Go
317
star
4

envman

Environment variable manager
Go
203
star
5

devcenter

HTML
168
star
6

bitrise.io

Bitrise.io public issues
162
star
7

bitrise-steplib

New Bitrise StepLib
151
star
8

ipa_analyzer

iOS IPA file analyzer: collects embedded mobileprovisioning and Info.plist information from a .ipa, can generate pretty printed JSON output.
Ruby
75
star
9

bitrise-webhooks

Bitrise Webhooks processor
Go
59
star
10

workflow-recipes

50
star
11

android-ndk

ARCHIVE: This repository is sunsetted. The new image's repository will be made available later. | Android with pre-installed NDK docker image. Based on the base Android docker image ( https://github.com/bitrise-io/android ), and extends it with the NDK
Shell
43
star
12

go-utils

Common, utility packages for Go
Go
37
star
13

ioscodesigning

HTML
31
star
14

go-xcode

Go
29
star
15

stepman

Step collection manager
Go
25
star
16

Fruta

Swift
18
star
17

bitrise-base

ARCHIVE: This repository is sunsetted. The new image's repository will be made available later. | Base Bitrise Docker image
Dockerfile
18
star
18

ipa_install_plist_generator

Generates a .plist which can be used for an IPA install & can generate an install link for the .plist file
Ruby
15
star
19

trace-cocoa-sdk

Catch bugs before they reach production β€” get detailed crash reports and monitor how your app is performing across the entire install base.
Swift
15
star
20

bitrise-contrib

13
star
21

replica

DEPRECATED - Create a CI environment (with Docker / virtual machine)
Go
11
star
22

android-demo-app

Kotlin
10
star
23

xcodebuild-unittest-miniserver

Mini server (written in Go) to perform Xcode Unit Tests through SSH
Go
10
star
24

gows

Go Workspace / Environment Manager, to easily manage the Go Workspace during development.
Go
9
star
25

fastlane

Sample app for using fastlane http://fastlane.tools on Bitrise
Swift
9
star
26

sample-apps-ios-with-bitrise-yml

Simple iOS sample app with bitrise.yml
Swift
8
star
27

releaseman

Your friendly Release manager.
Go
7
star
28

build.issues

Issue / bug tracker for build related issues
7
star
29

stacks

Stack report static site
HTML
7
star
30

android-espresso-ui-test-sample

Java
6
star
31

sample-apps-ios-simple-objc

This is a simple iOS app project for testing and experimenting with Bitrise
Objective-C
6
star
32

bitrise-plugins-analytics

Go
6
star
33

bitrise-plugins-io

A Terminal / Command Line interface for bitrise.io, to manage your apps on bitrise.io right from your terminal / command line.
Go
6
star
34

steps-firebase-test-lab

Bitrise step for Firebase Test Lab
Go
6
star
35

xcode-project

Go
6
star
36

bitrise-init

Go
6
star
37

bitrise-plugins-step

Bitrise Plugin to interact with steps, list them, retrieve information, or create your own!
Go
6
star
38

sample-apps-android-sdk22

Android Sample, requires Android SDK 22
Java
6
star
39

go-android

Go
5
star
40

bitrise-blog

HTML
5
star
41

cmd-bridge

Stripped down, minimal server written in go which executes a command line command
Go
5
star
42

sample-swift-project-with-parallel-ui-test

Swift
5
star
43

ionic-2

JavaScript
5
star
44

sample-apps-react-native-expo

JavaScript
4
star
45

android-ndk-lts

ARCHIVE: This repository is sunsetted. The new image's repository will be made available later. | LTS "pin" of the android-ndk Bitrise Docker image
Dockerfile
4
star
46

sample-apps-wear-os

Sample Android App having a Wear OS module
Java
4
star
47

android-sdk22-code-sign

Android sample, using SDK v22 and includes code signing steps (both for creating the required signing files and to use it)
Java
4
star
48

sample-apps-xamarin-android

C#
4
star
49

sample-project-react-native

Objective-C
3
star
50

bitrise-yml-collection

Collection of example `bitrise.yml` files.
3
star
51

Bitrise-Flutter-Sample

Dart
3
star
52

Bitrise-iOS-Sample

Swift
3
star
53

android-multiple-test-results-sample

Java
3
star
54

go-steputils

Go
3
star
55

cheat-sheets

Cheat Sheets
3
star
56

addons-template-service

Go
3
star
57

sample-apps-unity3d

C#
3
star
58

github-license-collector

GitHub License Collector: collect all licenses used in repos of a GH org and in all of the dependencies of those
Go
3
star
59

bitrise-log-analyzer

Bitrise Log Analyzer tool
Go
3
star
60

steps-xcode-builder

DEPRECATED - in favor of the new Xcode steps: https://github.com/bitrise-io/?utf8=βœ“&query=steps-xcode-
Shell
3
star
61

bitrise-cli-webui

Simple local Web UI for Bitrise CLI - Work-in-Progress
Go
3
star
62

post-jira-comment-with-build-details-step

Shell
3
star
63

bitrise-oauth

Go
2
star
64

Bitrise-iOS-Fastlane-Sample

Minimal Fastlane iOS Sample
Swift
2
star
65

ReactNativeSample

Sample up for building React Native projects on bitrise.io
Objective-C
2
star
66

appetize-deploy-step

Shell
2
star
67

xamarin-builder

Ruby
2
star
68

sample-bitrise-yml-from-repo

Sample project, demonstrates how you can use your `bitrise.yml` directly from your repository for builds on bitrise.io
2
star
69

gotgen

Minimalistic Go Template based Generator
Go
2
star
70

internal-sample-app-ionic

TypeScript
2
star
71

steps-utils-bash-toolkit

Bash script toolkit: script snippets for debugging, testing, ...
Shell
2
star
72

Bitrise-Android-ProductFlavors-Sample

Kotlin
2
star
73

bitrise-step-collection

DEPRECATED - in favor of the new, unified StepLib: https://github.com/bitrise-io/bitrise-steplib
Ruby
2
star
74

bitrise-add-new-project

Go
2
star
75

steps-ipa-inspector

Ruby
2
star
76

bitrise-build-cache-cli

Bitrise Build Cache CLI
Go
2
star
77

bitrise-script-collection

Collection of copy-paste ready scripts which you can run on Bitrise.io
Shell
2
star
78

bitrise-docker-ssh

Dockerfile
2
star
79

go-xamarin

Go
2
star
80

goinp

Interactive CLI in Go (test)
Go
2
star
81

Bitrise-Android-Modules-Sample

Kotlin
2
star
82

sample-apps-ios-xcode7

Sample Xcode 7 iOS project
Swift
2
star
83

depman

DEPRECATED - Simple dependency manager
Go
2
star
84

steps-bash-script

DEPRECATED - use https://github.com/bitrise-io/steps-script instead
Shell
2
star
85

sample-apps-ios-react-native

2
star
86

sample-apps-ios-cocoapods

A sample iOS app which uses CocoaPods
Objective-C
2
star
87

Bitrise-Ionic-Sample

Sample Ionic app with tabs. It is using Cordova and Angular.
TypeScript
2
star
88

identity-info-server

Go
2
star
89

android-ndk-sample-app

Trivial NDK example, based on Android NDK hello-jni sample & https://github.com/mattlogan/NDKTest projects
Java
2
star
90

sample-apps-cordova-with-karma-jasmine

Java
1
star
91

sample-apps-ios-simple-objc-xcode9

Objective-C
1
star
92

bitrise-yml-converter

Bitrise YML converter
Go
1
star
93

sample-artifacts

1
star
94

xcodebuild-export-options-generator

Ruby
1
star
95

bitrise-plugin-hello-world

Hello world (base working example) plugin for bitrise; `bitrise :hello-world`
Go
1
star
96

bitrise-plugins-example

Shell
1
star
97

sample-apps-ios-unit-test

Simple iOS Unit Test Sample/Test app
Objective-C
1
star
98

addons-test-backend

Go
1
star
99

datapi

A very simple data collection / storage service
Ruby
1
star
100

sample-tvos-app

Swift
1
star