Git Product home page Git Product logo

bitrise's Introduction

Bitrise (offline) CLI

Discussion forum: https://discuss.bitrise.io/

Run your Bitrise automations with this CLI tool on any Mac or Linux machine, and use the same configuration on bitrise.io (automation service, with a mobile app focus).

Part of the Bitrise Continuous Integration, Delivery and Automations Stack, with stepman and envman.

For a nice & quick intro you should check: https://www.bitrise.io/cli

Install and Setup

The installation is quick and easy, check the latest release for instructions at: https://github.com/bitrise-io/bitrise/releases

Installing with Homebrew:

brew update && brew install bitrise

Optionally, you can call bitrise setup to verify that everything what's required for bitrise to run is installed and available, but if you forget to do this it'll be performed the first time you call bitrise run.

You can enable shell completion for the bitrise run command: https://blog.bitrise.io/workflow-id-completion

Tutorials and Examples

You can find examples in the _examples folder.

If you're getting started you should start with _examples/tutorials, this should guide you through the basics, while you'll already use bitrise (requires installed bitrise).

You can find a complete iOS sample project at: https://github.com/bitrise-io/sample-apps-ios-with-bitrise-yml

Tooling support & JSON output format

bitrise CLI commands support a --format=[format] parameter. This is intended mainly for tooling support, by adding --format=json you'll get a JSON formatted output on Standard Output.

This is still work-in-progress, we're working on providing the --format param to every command except run.

Every error, warning etc. message will go to StdErr; and on the StdOut you should only get the valid JSON output.

An example calling the version command:

$ bitrise version --format=json

Will print {"version":"1.2.4"} to the Standard Output (StdOut).

Share your Step

You can use your own Step as you can see in the _examples, even if it's not yet committed into a repository, or from a repository directly.

If you would like to share your awesome Step with others you can do so by calling stepman share and then following the guide it prints.

Documentation

We added some documents to make it a bit easier to get started with Bitrise CLI. The documentation includes a quick and a little longer guides for CLI, a React Native project workflow guide and an overview of the Step share process. You can find them in the _docs folder.

Development

Guidelines

  • Easy to use: the UX for the end-user, always keep it in mind, make it a pleasant experience to work with this tool (and all of the Bitrise tools)!
  • Code should be kept simple: easy to understand, easy to collaborate/contribute (as much as possible of course).
  • Compatibility: never do an incompatible change, unless you can't avoid it. Release new features as additional options, to not to break existing configurations.
  • Stability: related to compatibility, but in general stability is really important, especially so in a CI/automation environment, where you expect fully reproducible outcomes.
  • Flexibility: should also be kept in mind, but only if it does not affect the previous points.

Updating dependencies

To do a full dependency update use bitrise-tools/gows, for a clean workspace:

gows clear && gows bitrise run dep-update

to test that all dependency is included:

gows clear && gows go test ./... && gows go install && gows bitrise run test

and/or with docker-compose:

docker-compose build && docker-compose run --rm app go test ./...

Local Dev Workflow

The following commands will work to get you started using a text editor such as VCSCode or similar.

All commands should be run from the root directory.

  • Setup:

    mkdir -p ./_bin

  • Build:

    go build -o ./_bin

  • Run:

    ./_bin/bitrise COMMAND

bitrise's People

Contributors

adborbas avatar andreineculau avatar bazscsa avatar birmacher avatar birmacherakos avatar bitrise-silver avatar erosdome avatar gaborpongracz avatar godrei avatar imrekel avatar kdobmayer avatar kitasuke avatar koral-- avatar lpusok avatar lszucs avatar matrangam avatar morbalint avatar ofalvai avatar renovate[bot] avatar richard-bogdan-bitrise avatar szabadember avatar szokezsolt avatar tothszabi avatar trapacska avatar vasarhelyia avatar viktorbenei avatar vshah23 avatar zoltan-baba avatar zsolt-marta-bitrise avatar zsolt-vicze 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  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

bitrise's Issues

bitrise setup fails on brew doctor warnings

Running setup fails because of this warning from brew:

WARN[15:13:58] Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Unexpected header files:
/usr/local/include/python2.7/greenlet/greenlet.h
FATA[15:13:58] Setup failed: Homebrew not installed or has some issues. Please fix these before calling setup again. Err:Failed to: brew doctor

This is an expected warning when installing packages with PIP. Bitrise setup should not fail on this type of warning.

bitrise runner CLI failed to run workflow: error bitrise.yml doesn't exist.

After setting up the runner CLI with brew I cannot get it to run with my existing bitrise.yml.

I created a new folder, put the bitrise.yml file there and did bitrise run bitrise.yml.

This is what I get if I run:
version: 1.10.1

INFO[10:58:56] Running workflow: bitrise.yml
FATA[10:58:56] Failed to run workflow, error: Specified Workflow (bitrise.yml) does not exist

This is what I get if I run bitrise "stepman" "collections" "--format" "json":
{"data":[]}
^^ Not expected I'm sure??

This is what I see after running bitrise setup:
version: 1.10.1

Setup
Full setup: false
Clean setup: false
Detected OS: darwin

Checking Bitrise Core tools...
[OK] envman (1.1.8): /Users/jules/.bitrise/tools/envman
[OK] stepman (0.9.35): /Users/jules/.bitrise/tools/stepman

Doing OS X specific setup
Checking required tools...
[OK] Homebrew 1.3.8: /usr/local/bin/brew
[OK] Homebrew/homebrew-core (git revision 99ad; last commit 2017-11-27)
[OK] xcodebuild (Xcode 9.1 | Build version 9B55): /usr/bin/xcodebuild
[OK] active Xcode (Command Line Tools) path (xcode-select --print-path): /Applications/Xcode.app/Contents/Developer

Checking Bitrise Plugins...
[OK] Plugin init (0.9.11): /Users/jules/.bitrise/plugins/init
[OK] Plugin step (0.9.5): /Users/jules/.bitrise/plugins/step
[OK] Plugin workflow-editor (1.0.19): /Users/jules/.bitrise/plugins/workflow-editor
[OK] Plugin analytics (0.9.10): /Users/jules/.bitrise/plugins/analytics

Checking Bitrise Toolkits...
[OK] go (1.9.2): /Users/jules/.bitrise/toolkits/go/inst/go/bin/go
[OK] bash (GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)): /bin/bash

All the required tools are installed! We're ready to rock!!

To start using bitrise:

  • cd into your project's directory (if you're not there already)
  • call: bitrise init
  • follow the guide

That's all :)

Toolkit Language Ideas

Our first planned step toolkit / language support will be for Go.

Considerations for new suggestions:

  • We at bitrise strongly prefer compiled & statically typed languages. We worked with quite a few languages in the past and so far this is the combination which worked the best, especially long term / as the code grows.

Here are other languages which could be good candidates as supported step toolkits in the future:

Crystal (https://crystal-lang.org)

PROS:

  • Ruby like language, with static typing!
  • Official dependency manager

CONS:

  • No Windows support
  • Not "production ready" yet

Ruby / Python

PROS:

  • Dynamic, "production ready" script languages; there are certain types of tasks where a dynamic language can be useful (although we at bitrise strongly prefer compiled & statically typed languages)

Install all deps at the start of the build

This should be an option, most likely the default one

This also requires to get every step at the start of the build

Why sound this exist? For better build reliability. This could lower the chance of a network issue during the build to cause the build to fail, if it would happen during a dep install

Newline issue in bitrise step-info output

$ bitrise step-info asdf

Step info:
Collection doesn't contain any version of step (id:asdf)FATA[13:54:23] Failed to print step info, err: exit status 1

newline missing before FATA

For git:: source steps prevent the username+password prompt!

e.g.:

- git::https://github.com/bitrise-io/NO-REPO.git@master:

Even if you run it with -ci flag, it'll present the username+psw prompt and hang there:

bitrise -ci run test

  ██████╗ ██╗████████╗██████╗ ██╗███████╗███████╗
  ██╔══██╗██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝
  ██████╔╝██║   ██║   ██████╔╝██║███████╗█████╗
  ██╔══██╗██║   ██║   ██╔══██╗██║╚════██║██╔══╝
  ██████╔╝██║   ██║   ██║  ██║██║███████║███████╗
  ╚═════╝ ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚══════╝╚══════╝

Version: 1.3.7

INFO[14:42:55] bitrise runs in CI mode           

INFO[14:42:55] Running workflow (test)           

Cloning into '/tmp/bitrise534315245/step_src'...
Username for 'https://github.com':

'DEPRECATED Action signature.' error after calling 'bitrise' with no args.

After executing the following steps, I see an error when running bitrise with no args. Assume it it trying to display bitrise help but seems to have an error:

  • brew update [Suceeds]
  • brew install [Suceeds]
  • bitrise

Output will be the following:

gemmakbarlow:Harry's gemmakbarlow$ bitrise

NAME: bitrise - Bitrise Automations Workflow Runner

USAGE: bitrise [OPTIONS] COMMAND [arg...]

VERSION: 1.3.6

GLOBAL OPTIONS:
  --loglevel value, -l value  Log level (options: debug, info, warn, error, fatal, panic). [$LOGLEVEL]
  --debug                     If true it enabled DEBUG mode. If no separate Log Level is specified this will also set the loglevel to debug. [$DEBUG]
  --ci                        If true it indicates that we're used by another tool so don't require any user input! [$CI]
  --pr                        If true bitrise runs in pull request mode.
  --help, -h                  show help
  --version, -v               print the version

COMMANDS:
  setup          Setup the current host. Install every required tool to run Workflows.
  init           Generates a Workflow/app config file in the current directory, which then can be run immediately.
  version        Prints the version
  validate       Validates a specified bitrise config.
  run            Runs a specified Workflow.
  trigger-check  Prints out which workflow will triggered by specified pattern.
  trigger        Triggers a specified Workflow.
  export         Export the bitrise configuration.
  normalize      Normalize the bitrise configuration.
  step-list      List of available steps.
  step-info      Provides information (step ID, last version, given version) about specified step.
  workflows      List of available workflows in config.
  share          Publish your step.
  plugin         Plugin handling.
  help           Shows a list of commands or help for one command

COMMAND HELP: bitrise COMMAND --help/-h

DEPRECATED Action signature.  Must be `cli.ActionFunc`.  This is an error in the application.  Please contact the distributor of this application if this is not you.  See https://github.com/urfave/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

Error explicitly asks me to contact the distributor of the application:

DEPRECATED Action signature. Must be cli.ActionFunc. This is an error in the application. Please contact the distributor of this application if this is not you. See https://github.com/urfave/cli/blob/master/CHANGELOG.md#deprecated-cli-app-action-signature

Generic solution for accessing base information about steps / step results

As noted here bitrise-steplib/steps-xcode-test#8 it would be great to have a generic solution to get at least a Step's status from another Step. This could be used to send status information in web hooks or messages (email / Slack).

Would be good:

  • get the first failed step's title/id (if any)
  • get a specific step's result (success/failed/skipped/...)
  • get a full step-results summary, similar to the summary printed at the end of a bitrise run

bitrise update command returns exit code 1 if already installed

$ bitrise update

Updating Bitrise CLI...
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
aws-elasticbeanstalk

Error: bitrise 1.13.0 already installed
Update Bitrise CLI failed, error: exit status 1

Shall not. It is a common thing to "ensure" dependencies. Should return non-0 exit code only if an update related issue happened.

deps: force install from package manager if bin_name is not available in the system

Actually this could be the default option, no need to provide an additional flag for this.

Use case: pip is not available by default on MacOS, but python is. So, right now if you specify python as the package it will never be installed from brew as it's already available in the MacOS system!

What should happen:

deps:
  brew:
  - name: python
    bin_name: pip

should brew install python if pip is not available!

The bitrise.yml has a higher Format Version (5) than the bitrise CLI model's version (1.4.0).

I did a bitruse init and it parsed the repo and make the config.
Then when you run bitrise run it blows up.

Here is everything to reproduce....

Code is here:
https://github.com/gedw99/ci

do this:

bitrise init
[15:22:26] Running scanners:

[15:22:26] Scanner: react-native
[15:22:26] +------------------------------------------------------------------------------+
[15:22:26] |                                                                              |
[15:22:26] Collect package.json files
[15:22:27] 0 package.json file detected
[15:22:27] Filter relevant package.json files
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: ionic
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] Searching for config.xml file
[15:22:27] config.xml:
[15:22:27] platform not detected
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: cordova
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] Searching for config.xml file
[15:22:27] config.xml:
[15:22:27] platform not detected
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: ios
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] Filter relevant Xcode project files
[15:22:27] 1 Xcode ios project files found
[15:22:27] - mobile/app01/ios/Runner.xcodeproj
[15:22:27] Platform detected
[15:22:27] Searching for Podfile
[15:22:27] 0 Podfiles detected
[15:22:27] Searching for Cartfile
[15:22:27] 0 Cartfiles detected
[15:22:27] Inspecting workspace file: mobile/app01/ios/Runner.xcworkspace
[15:22:27] 1 shared schemes detected
[15:22:27] - Runner
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: macos
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] Filter relevant Xcode project files
[15:22:27] 0 Xcode macos project files found
[15:22:27] platform not detected
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: android
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: xamarin
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] Searching for solution files
[15:22:27] 0 solution files detected
[15:22:27] platform not detected
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

[15:22:27] Scanner: fastlane
[15:22:27] +------------------------------------------------------------------------------+
[15:22:27] |                                                                              |
[15:22:27] Searching for Fastfiles
[15:22:27] 0 Fastfiles detected
[15:22:27] platform not detected
[15:22:27] |                                                                              |
[15:22:27] +------------------------------------------------------------------------------+

Select platform
Please select from the list:
[1] : ios
[2] : android
(type in the option's number, then hit Enter) : 1
Select: ipa export method
Please select from the list:
[1] : ad-hoc
[2] : enterprise
[3] : development
[4] : app-store
(type in the option's number, then hit Enter) : 3
INFO[15:22:37] bitrise config generated at: ./bitrise.yml
INFO[15:22:37] bitrise secrets generated at: ./.bitrise.secrets.yml
x-MacBook-Pro:ci apple$ bitrise run

  ██████╗ ██╗████████╗██████╗ ██╗███████╗███████╗
  ██╔══██╗██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝
  ██████╔╝██║   ██║   ██████╔╝██║███████╗█████╗
  ██╔══██╗██║   ██║   ██╔══██╗██║╚════██║██╔══╝
  ██████╔╝██║   ██║   ██║  ██║██║███████║███████╗
  ╚═════╝ ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚══════╝╚══════╝

Version: 1.5.4

WARN[15:22:48] The bitrise.yml has a higher Format Version (5) than the bitrise CLI model's version (1.4.0).
FATA[15:22:48] Failed to create bitrise config, error: This bitrise.yml was created with and for a newer version of bitrise CLI, please upgrade your bitrise CLI to use this bitrise.yml

Failed to get input

Hello,
I am running bitrise init, but getting this error:

A secrets file already exists at ./.bitrise.secrets.yml - do you want to overwrite it? [yes/no] :
FATA[09:20:14] Failed to init the secrets file, error: Failed to get input - scanner failed.

Please advise,
Igor

bitrise setup fails with homebrew warning because of node installation

bitrise setup fails for me with a homebrew error. It appears this is because brew doctor throws a warning about unbrewed header files in /usr/local/include/. All of the files mentioned were installed by node.js.

 ██████╗ ██╗████████╗██████╗ ██╗███████╗███████╗
  ██╔══██╗██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝
  ██████╔╝██║   ██║   ██████╔╝██║███████╗█████╗
  ██╔══██╗██║   ██║   ██╔══██╗██║╚════██║██╔══╝
  ██████╔╝██║   ██║   ██║  ██║██║███████║███████╗
  ╚═════╝ ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚══════╝╚══════╝

Version: 1.2.4

INFO[11:14:10] [BITRISE_CLI] - Setup                        
INFO[11:14:10] Detected OS: darwin                          
INFO[11:14:10] Doing OS X specific setup                    
INFO[11:14:10] Checking required tools...                   

WARN[11:14:12] brew doctor returned an error:               
WARN[11:14:12] Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected header files:
    /usr/local/include/node/android-ifaddrs.h
    /usr/local/include/node/ares.h
    /usr/local/include/node/ares_version.h
    /usr/local/include/node/libplatform/libplatform.h
    /usr/local/include/node/nameser.h
    /usr/local/include/node/node.h
    /usr/local/include/node/node_buffer.h
    /usr/local/include/node/node_internals.h
    /usr/local/include/node/node_object_wrap.h
    /usr/local/include/node/node_version.h
    /usr/local/include/node/openssl/aes.h
    /usr/local/include/node/openssl/archs/aix-gcc/opensslconf.h
    /usr/local/include/node/openssl/archs/aix64-gcc/opensslconf.h
    /usr/local/include/node/openssl/archs/BSD-x86/opensslconf.h
    /usr/local/include/node/openssl/archs/BSD-x86_64/opensslconf.h
    /usr/local/include/node/openssl/archs/darwin-i386-cc/opensslconf.h
    /usr/local/include/node/openssl/archs/darwin64-x86_64-cc/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-aarch64/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-armv4/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-elf/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-ppc/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-ppc64/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-x32/opensslconf.h
    /usr/local/include/node/openssl/archs/linux-x86_64/opensslconf.h
    /usr/local/include/node/openssl/archs/solaris-x86-gcc/opensslconf.h
    /usr/local/include/node/openssl/archs/solaris64-x86_64-gcc/opensslconf.h
    /usr/local/include/node/openssl/archs/VC-WIN32/opensslconf.h
    /usr/local/include/node/openssl/archs/VC-WIN64A/opensslconf.h
    /usr/local/include/node/openssl/asn1.h
    /usr/local/include/node/openssl/asn1_mac.h
    /usr/local/include/node/openssl/asn1t.h
    /usr/local/include/node/openssl/bio.h
    /usr/local/include/node/openssl/blowfish.h
    /usr/local/include/node/openssl/bn.h
    /usr/local/include/node/openssl/buffer.h
    /usr/local/include/node/openssl/camellia.h
    /usr/local/include/node/openssl/cast.h
    /usr/local/include/node/openssl/cmac.h
    /usr/local/include/node/openssl/cms.h
    /usr/local/include/node/openssl/comp.h
    /usr/local/include/node/openssl/conf.h
    /usr/local/include/node/openssl/conf_api.h
    /usr/local/include/node/openssl/crypto.h
    /usr/local/include/node/openssl/des.h
    /usr/local/include/node/openssl/des_old.h
    /usr/local/include/node/openssl/dh.h
    /usr/local/include/node/openssl/dsa.h
    /usr/local/include/node/openssl/dso.h
    /usr/local/include/node/openssl/dtls1.h
    /usr/local/include/node/openssl/e_os2.h
    /usr/local/include/node/openssl/ebcdic.h
    /usr/local/include/node/openssl/ec.h
    /usr/local/include/node/openssl/ecdh.h
    /usr/local/include/node/openssl/ecdsa.h
    /usr/local/include/node/openssl/engine.h
    /usr/local/include/node/openssl/err.h
    /usr/local/include/node/openssl/evp.h
    /usr/local/include/node/openssl/hmac.h
    /usr/local/include/node/openssl/idea.h
    /usr/local/include/node/openssl/krb5_asn.h
    /usr/local/include/node/openssl/kssl.h
    /usr/local/include/node/openssl/lhash.h
    /usr/local/include/node/openssl/md4.h
    /usr/local/include/node/openssl/md5.h
    /usr/local/include/node/openssl/mdc2.h
    /usr/local/include/node/openssl/modes.h
    /usr/local/include/node/openssl/obj_mac.h
    /usr/local/include/node/openssl/objects.h
    /usr/local/include/node/openssl/ocsp.h
    /usr/local/include/node/openssl/opensslconf.h
    /usr/local/include/node/openssl/opensslv.h
    /usr/local/include/node/openssl/ossl_typ.h
    /usr/local/include/node/openssl/pem.h
    /usr/local/include/node/openssl/pem2.h
    /usr/local/include/node/openssl/pkcs12.h
    /usr/local/include/node/openssl/pkcs7.h
    /usr/local/include/node/openssl/pqueue.h
    /usr/local/include/node/openssl/rand.h
    /usr/local/include/node/openssl/rc2.h
    /usr/local/include/node/openssl/rc4.h
    /usr/local/include/node/openssl/ripemd.h
    /usr/local/include/node/openssl/rsa.h
    /usr/local/include/node/openssl/safestack.h
    /usr/local/include/node/openssl/seed.h
    /usr/local/include/node/openssl/sha.h
    /usr/local/include/node/openssl/srp.h
    /usr/local/include/node/openssl/srtp.h
    /usr/local/include/node/openssl/ssl.h
    /usr/local/include/node/openssl/ssl2.h
    /usr/local/include/node/openssl/ssl23.h
    /usr/local/include/node/openssl/ssl3.h
    /usr/local/include/node/openssl/stack.h
    /usr/local/include/node/openssl/symhacks.h
    /usr/local/include/node/openssl/tls1.h
    /usr/local/include/node/openssl/ts.h
    /usr/local/include/node/openssl/txt_db.h
    /usr/local/include/node/openssl/ui.h
    /usr/local/include/node/openssl/ui_compat.h
    /usr/local/include/node/openssl/whrlpool.h
    /usr/local/include/node/openssl/x509.h
    /usr/local/include/node/openssl/x509_vfy.h
    /usr/local/include/node/openssl/x509v3.h
    /usr/local/include/node/pthread-fixes.h
    /usr/local/include/node/stdint-msvc2008.h
    /usr/local/include/node/tree.h
    /usr/local/include/node/uv-aix.h
    /usr/local/include/node/uv-bsd.h
    /usr/local/include/node/uv-darwin.h
    /usr/local/include/node/uv-errno.h
    /usr/local/include/node/uv-linux.h
    /usr/local/include/node/uv-sunos.h
    /usr/local/include/node/uv-threadpool.h
    /usr/local/include/node/uv-unix.h
    /usr/local/include/node/uv-version.h
    /usr/local/include/node/uv-win.h
    /usr/local/include/node/uv.h
    /usr/local/include/node/v8-debug.h
    /usr/local/include/node/v8-platform.h
    /usr/local/include/node/v8-profiler.h
    /usr/local/include/node/v8-testing.h
    /usr/local/include/node/v8-util.h
    /usr/local/include/node/v8-version.h
    /usr/local/include/node/v8.h
    /usr/local/include/node/v8config.h
    /usr/local/include/node/zconf.h
    /usr/local/include/node/zlib.h 
FATA[11:14:12] Setup failed: Homebrew not installed or has some issues. Please fix these before calling setup again. Err:Failed to: brew doctor 

Export log

Bitrise CLI should provide a flag to write the full log to disk. This would make it easier to read through logs later in the event that a user's terminal is not set to provide an infinite history.

Skipped step warning misaligned if there are steps between failed and skipped one

+---+---------------------------------------------------------------+----------+
| x | Gradle UI Test (exit code: 1)                                 | 83 sec   |
+---+---------------------------------------------------------------+----------+
| Issue tracker: https://github.com/bitrise-io/steps-gradle-unit-test/issues   |
| Source: https://github.com/bitrise-io/steps-gradle-unit-test                 |
+---+---------------------------------------------------------------+----------+
| ✓ | openstf-disconnect                                            | 22 sec   |
WARN[21:08:36] A previous step failed, and this step (cache-push) was not marked as IsAlwaysRun, skipped 
+---+---------------------------------------------------------------+----------+
| ✓ | activate-ssh-key                                              | 1.05 sec |
+---+---------------------------------------------------------------+----------+
| ✓ | git::https://github.com/DroidsOnRoids/bitrise-step-publish-...| 12 sec   |
+---+---------------------------------------------------------------+----------+
| - | cache-push                                                    | 6.16 sec |
+---+---------------------------------------------------------------+----------+
| Total runtime: 338 sec                                                       |
+------------------------------------------------------------------------------+

It seems that a warning A previous step failed, and this step... is printed in the step following failed one (or it is not synchronized at all with the step list).

In the example above it should be printed inside the last step row. Or at least warning should be reworded to not contain misleading this.

CLI version 1.10.0
Build URL: https://www.bitrise.io/build/903f5f8d6fd553ad

Plugins: command to print source info of the plugin

E.g. I want to contribute to one of the installed plugins. How/where should I do that?

IMO this could be included in the bitrise plugin list output directly, and/or maybe a bitrise plugin info THEPLUGINID to print infos about a specific plugin (e.g. bitrise plugin info workflow-editor).

need a help with this error

FATA[04:04:07] Analyzer failed, error: out: /tmp/bitrise-plugin-init992597450/podfile.rb:92:in >basename': no implicit conversion of nil into String (TypeError) from /tmp/bitrise-plugin-init992597450/podfile.rb:92:infix_targets'
from /tmp/bitrise-plugin-init992597450/podfile.rb:124:in list_targets' from /tmp/bitrise-plugin-init992597450/get_workspace.rb:7:in

', err: exit status 1

I receive this error seems like my podfile wrong? but I compile in xcode it's fine

Input format validation - optional property for inputs

Specify a regex for the input.

E.g. if only email can be specified in the input.

CON: it might be hard to solve with a reged.
E.g. if you accept a list of emails, comma separated, the user might still include spaces in the list, or just messes up and includes a comma in an email. It's hard to validate a list of items, where you can write a regex for a single item easily, but a regex for the whole list can be tricky (e.g. the "comma separated email list" example).

"Bitrise failed to unmarshal response body" when building with UI tetst?

Whenever we try to make a build with Android Instrumental Ui test we get an error saying:
Failed to unmarshal response body, error: [invalid character "F" looking for beginning of value Failed to get test status: INVALID(TEST_SAME_AS_APP)], body: %!s(MISSING)

I'm not sure if the problem is from us or Bitrise's Golang server

capture

Plugin update issue: if update fails you can't use the plugin anymore!

If plugin update fails:

bitrise plugin update workflow-editor
INFO[13:42:54] Installing new version (1.0.0) of plugin (workflow-editor) 

INFO[13:43:00] Installed plugin found with version (0.9.10), overriding it... 
FATA[13:43:10] Failed to install plugin from (https://github.com/bitrise-io/bitrise-workflow-editor.git), error: failed to download plugin executable from (https://github.com/bitrise-io/bitrise-workflow-editor/releases/download/1.0.0/workflow-editor-Linux-x86_64), error: failed to download from (https://github.com/bitrise-io/bitrise-workflow-editor/releases/download/1.0.0/workflow-editor-Linux-x86_64), error: Get https://github.com/bitrise-io/bitrise-workflow-editor/releases/download/1.0.0/workflow-editor-Linux-x86_64: dial tcp: lookup github.com on 127.0.0.53:53: read udp 127.0.0.1:58602->127.0.0.53:53: i/o timeout 

You can't update it anymore:

bitrise plugin update workflow-editor
2017/05/12 13:44:04 Failed to list plugins, error: Plugin (workflow-editor) found in route, but could not load it

Nor can you use it:

bitrise :workflow-editor
2017/05/12 13:46:09 Failed to list plugins, error: Plugin (workflow-editor) found in route, but could not load it

deps - apt-get - `dpkg -l` doesn't always work

on the current Android/Linux stack the following fails:

steps:
- script
    deps:
      apt_get:
      - name: cmake
    inputs:
    - content: |
        set -ex
        which cmake

because bitrise CLI thinks cmake is installed, although it's not (fully?) installed. This is due to how the current apt-get deps check works, which uses dpkg -l PACKAGENAME.

In case of cmake the output of dpkg -l cmake right now is:

+ dpkg -l cmake
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
un  cmake          <none>       <none>       (no description available)

with an exit code 0, which makes bitrise CLI to interpret it as cmake is installed, while if you call a which cmake it shows that it actually isn't.

Setup failed, error: Stepman failed to install: Failed to get version

When I execute bitrise setup, I have an error : Stepman failed to install: Failed to get version

❯ bitrise setup

  ██████╗ ██╗████████╗██████╗ ██╗███████╗███████╗
  ██╔══██╗██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝
  ██████╔╝██║   ██║   ██████╔╝██║███████╗█████╗
  ██╔══██╗██║   ██║   ██╔══██╗██║╚════██║██╔══╝
  ██████╔╝██║   ██║   ██║  ██║██║███████║███████╗
  ╚═════╝ ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚══════╝╚══════╝

Version: 1.3.7

INFO[13:15:50] Setup
INFO[13:15:50] Full setup: false
INFO[13:15:50] Detected OS: darwin
INFO[13:15:50] Doing OS X specific setup
INFO[13:15:50] Checking required tools...
INFO[13:15:50]  * [OK] Homebrew : /usr/local/bin/brew
INFO[13:15:50]         version : Homebrew 0.9.9 (git revision 8e29cf; last commit 2016-08-28)
Homebrew/homebrew-core (git revision 5888; last commit 2016-08-30)
INFO[13:15:50]  * [OK] xcodebuild path : /usr/bin/xcodebuild
INFO[13:15:50]         version (xcodebuild) : Xcode 7.3.1 | Build version 7D1014
INFO[13:15:50]         active Xcode (Command Line Tools) path (xcode-select --print-path) : /Applications/Xcode.app/Contents/Developer
INFO[13:15:50]  * [OK] envman : /Users/damiengavard/.bitrise/tools/envman
INFO[13:15:50]         version : 1.1.0
INFO[13:15:50]
FATA[13:15:50] Setup failed, error: Stepman failed to install: Failed to get version

In case we need to have envman in $PATH, I do not have it :

❯ envman
zsh: command not found: envman

Swapped lines order in CLI output

There is a script step with content like that:

cat <stripped>
openvpn --config vpn.conf &
disown -h %1

echo nameserver 10.8.0.1 > /etc/resolv.conf
echo nameserver 8.8.8.8 >> /etc/resolv.conf

Commands seem to be executed in that order, but log shows this:

+ cat
+ disown -h %1
+ openvpn --config vpn.conf
+ echo nameserver 10.8.0.1
+ echo nameserver 8.8.8.8

disown and openvpn commands are swapped.

Build URL: https://www.bitrise.io/build/04693754cc0fb063

Failed to install missing SDK

I recently upgraded compileSDKVersion to 27 from 26 and run the bitrise run primary, it failed and showing me this error

`earching for missing SDK components using:
$ ./gradlew "dependencies"
�[31;1mFailed to find missing components, retrying...�[0m
Searching for missing SDK components using:
$ ./gradlew "dependencies"
�[31;1mFailed to find missing components, retrying...�[0m
Searching for missing SDK components using:
$ ./gradlew "dependencies"
Parallel execution with configuration on demand is an incubating feature.

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring root project 'workspace'.

Could not resolve all files for configuration ':classpath'.
Could not find com.android.tools.build:gradle:3.0.1.
`

Builds failing randomly: `panic: runtime error: makeslice: len out of range`

We've recently (starting ~28 hours ago) been getting a lot of (randomly) failing builds. The error always happens in the xcode-test step (version 1.17.1), while constructing the step-footer for the log.
Rerunning the build usually makes it succeed.

From the error output in the log, it seems the problem is in print.go:getRunningStepFooterMainSection().

The error happens inside one of the strings.Repeat calls which used to be in line 246 (mentioned in the log) but is now in line 255.

Here is the end of our logs, including stack trace:

▸ Test Succeeded
|                                                                              |
+----+--------------------------------------------------------------+----------+
panic: runtime error: makeslice: len out of range [recovered]
    panic: runtime error: makeslice: len out of range

goroutine 1 [running]:
panic(0x3ad360, 0xc420456120)
    /usr/local/Cellar/go/1.7.1/libexec/src/runtime/panic.go:500 +0x1a1
github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli.HandleAction.func1(0xc4201a7958)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli/app.go:478 +0x247
panic(0x3ad360, 0xc420456120)
    /usr/local/Cellar/go/1.7.1/libexec/src/runtime/panic.go:458 +0x243
strings.Repeat(0x408ef0, 0x1, 0xfffffffffffffffe, 0x2, 0x2)
    /usr/local/Cellar/go/1.7.1/libexec/src/strings/strings.go:420 +0x49
github.com/bitrise-io/bitrise/bitrise.getRunningStepFooterMainSection(0xc420379180, 0xa, 0xc42010be80, 0x11, 0xc42037918a, 0x6, 0xc420379190, 0x6, 0x0, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/bitrise/print.go:246 +0x640
github.com/bitrise-io/bitrise/bitrise.PrintRunningStepFooter(0xc420379180, 0xa, 0xc42010be80, 0x11, 0xc42037918a, 0x6, 0xc420379190, 0x6, 0x0, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/bitrise/print.go:515 +0x3ed
github.com/bitrise-io/bitrise/cli.activateAndRunSteps.func1(0xc4201580f0, 0xc420158120, 0xc420158150, 0xc420158180, 0xc4201581b0, 0xc4201581e0, 0xc4201564c0, 0xc4202d6800, 0x32, 0xc4202d4c60, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run_util.go:517 +0x3a9
github.com/bitrise-io/bitrise/cli.activateAndRunSteps(0xc4200f0888, 0x4, 0x0, 0x0, 0x0, 0x0, 0xc42012ac70, 0x1, 0x1, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run_util.go:798 +0x1314
github.com/bitrise-io/bitrise/cli.runWorkflow(0xc4200f0888, 0x4, 0x0, 0x0, 0x0, 0x0, 0xc42012ac70, 0x1, 0x1, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run_util.go:810 +0x1e7
github.com/bitrise-io/bitrise/cli.activateAndRunWorkflow(0xc4200f0888, 0x4, 0xc4200f0888, 0x4, 0x0, 0x0, 0x0, 0x0, 0xc42012ac70, 0x1, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run_util.go:832 +0x33b
github.com/bitrise-io/bitrise/cli.runWorkflowWithConfiguration(0xecf9be495, 0x1ab8c5c7, 0x5e35c0, 0xc4200f0888, 0x4, 0xc42012a318, 0x5, 0xc420015980, 0x31, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run_util.go:935 +0x740
github.com/bitrise-io/bitrise/cli.runAndExit(0xc42012a318, 0x5, 0xc420015980, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run.go:106 +0x122
github.com/bitrise-io/bitrise/cli.run(0xc420088c80, 0x0, 0x0)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/run.go:215 +0x94c
reflect.Value.call(0x39bec0, 0x446d50, 0x13, 0x4093eb, 0x4, 0xc4201a7918, 0x1, 0x1, 0x11b208, 0x3ff300, ...)
    /usr/local/Cellar/go/1.7.1/libexec/src/reflect/value.go:434 +0x5c8
reflect.Value.Call(0x39bec0, 0x446d50, 0x13, 0xc4201a7918, 0x1, 0x1, 0x5e4580, 0xc4200d5908, 0x123e76)
    /usr/local/Cellar/go/1.7.1/libexec/src/reflect/value.go:302 +0xa4
github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli.HandleAction(0x39bec0, 0x446d50, 0xc420088c80, 0x0, 0x0)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli/app.go:487 +0x1e0
github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli.Command.Run(0x409271, 0x3, 0x0, 0x0, 0x5d81d0, 0x1, 0x1, 0x4121ef, 0x1a, 0x0, ...)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli/command.go:191 +0xc3b
github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli.(*App).Run(0xc4200ec000, 0xc42000c0a0, 0xa, 0xa, 0x0, 0x0)
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/vendor/github.com/urfave/cli/app.go:240 +0x611
github.com/bitrise-io/bitrise/cli.Run()
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/cli/cli.go:157 +0x1b0
main.main()
    /Users/vagrant/go/src/github.com/bitrise-io/bitrise/main.go:6 +0x14
Command failed: exit status 2

Hope this is useful. Let me know if any other information is needed.

Print a more precise error when the Step ID exists in the collection but the version does not.

Example error:

+------------------------------------------------------------------------------+
| (2) [email protected]                                               |
+------------------------------------------------------------------------------+
| id: install-react-native                                                     |
| version: 1.0.3                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: bash                                                                |
| time: 2017-03-29T18:41:36-07:00                                              |
+------------------------------------------------------------------------------+
|                                                                              |
�[31mERRO�[0m[18:41:36] Step ([email protected]) failed, error: StepmanJSONStepLibStepInfo failed, err: Error: exit status 1, details: 2017/03/29 18:41:36 Command failed, error: Failed to read Step information, error: Collection doesn't contain step (id:install-react-native) (version:1.0.3)
 
|                                                                              |
+---+---------------------------------------------------------------+----------+
| �[31;1mx�[0m | �[31;[email protected] (exit code: 1)�[0m                     | 3.77 sec |
+---+---------------------------------------------------------------+----------+
| Issue tracker: �[33;1mNot provided�[0m                                                  |
| Source: �[33;1mNot provided�[0m                                                         |
+---+---------------------------------------------------------------+----------+

It's not clear what the actual error is, which is that the step does exist in the steplib, but there's no version 1.0.3

Support env variables in triggers

We create a new branch for every release, and have several different workflows that we'd like to run in our release branch. It would be nice to just update the name of the branch in one place and have different triggers for it.

Specify bitrise.yml on command line

Not sure if this is the right place to ask but...

Is it possible to specify the config file like so bitrise -f path/to/bitrise.yml run ...?

Option to (temporarily) disable steps

Hi,

It would be useful (definitely to me, maybe to others) to be able to disable steps in a workflow without deleting them and then re-adding them later.

Use case:

I'm debugging an issue in the workflow (not reproducible locally, annoyingly) but don't want to upload every result to Slack while I'm debugging. Also don't want to upload to our binary repository etc.

Potential solution:

A tick box (similar to the 'run if previous step failed') which disables this step. Subsequent steps would treat this as a success (though, obviously, any outputs wouldn't be filled out!).

This could be represented in the yml as a single bool (disabled: true) - it's absence would imply disabled: false which would give backwards compatibility / remove spurious noise from the bitrise.yml.

The disabled steps could be clearly marked as disabled in the workflow editor (greyed out etc - lots of choices here)

The step output from the cli would show which steps were skipped, something like:

+------------------------------------------------------------------------------+
| (2) Output to Slack                                                          |
+------------------------------------------------------------------------------+
| id: script                                                                   |
| version: 1.1.5                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: bash                                                                |
| time: 2017-12-10T11:44:02-08:00                                              |
+------------------------------------------------------------------------------+
|                                                                              |
WARN[20:18:40] This step is disabled - skipping.
|                                                                              |
+---+---------------------------------------------------------------+----------+
| - | Output to Slack                                               | 0.40 sec |
+---+---------------------------------------------------------------+----------+

S

apt-get update should be called if apt-get install fails

One of the our bitrise steps has the following dependency in step.yml:

deps:
  apt_get:
  - name: vpnc

At the time of writing installation of iproute which is a dependency of vpnc fails due to outdated URL:

(vpnc) isn't installed, installing...
sudo apt-get -y install vpnc failed -- out: (Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  iproute vpnc-scripts
Suggested packages:
  resolvconf dnsmasq openssh-server
The following NEW packages will be installed:
  iproute vpnc vpnc-scripts
0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded.
Need to get 90.7 kB of archives.
After this operation, 294 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 vpnc-scripts all 0.1~git20150318-1 [12.3 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial/universe amd64 vpnc amd64 0.5.3r550-2build1 [76.0 kB]
Err:3 http://archive.ubuntu.com/ubuntu xenial-updates/main i386 iproute all 1:4.3.0-1ubuntu3.16.04.2
  404  Not Found [IP: 91.189.88.162 80]
Err:3 http://archive.ubuntu.com/ubuntu xenial-updates/main i386 iproute all 1:4.3.0-1ubuntu3.16.04.2
  404  Not Found [IP: 91.189.88.162 80]
Fetched 88.3 kB in 0s (200 kB/s)
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/i/iproute2/iproute_4.3.0-1ubuntu3.16.04.2_all.deb  404  Not Found [IP: 91.189.88.162 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?) err: (exit status 100)
INFO[10:25:46] Failed to install (vpnc) with apt-get        
WARN[10:25:46] Installing Step dependency failed, retrying ... 
INFO[10:25:46] Start installing (vpnc) with apt-get         
(vpnc) isn't installed, installing...
sudo apt-get -y install vpnc failed -- out: (Reading package lists...

CLI retries sudo apt-get -y install vpnc but it is pointless, subsequent attempts will also fail. However invoking apt-get update resolves the issue. --fix-missing parameter from the suggestion does not help.

GO issue 'cannot find package "github.com/bitrise-io/go-utils/cmdex' while running old version of GO and CLI 1.4.2

Hi!
scroll down for TL;DR

when running bitrise --ci=true run Beta

with bitrise.yaml:


---
format_version: 1.3.0
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- pull_request_source_branch: beta_build
  workflow: Beta
  pull_request_target_branch: "*"
- push_branch: beta_build
  workflow: Beta
- pull_request_source_branch: app_build
  pull_request_target_branch: "*"
  workflow: App
- push_branch: app_build
  workflow: App
workflows:
  Beta:
    steps:
    - [email protected]:
        run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
    - [email protected]:
        inputs:
        - clone_depth: '1'
    - [email protected]:
        inputs:
        - plist_path: source/osx/Resources/Info.plist
        - build_version_offset: ''
    - [email protected]: {}
    - [email protected]:
        inputs:
        - configuration: Beta
        - export_method: developer-id
    - [email protected]: {}
    - [email protected]:
        inputs:
        - ipa_path: "$BITRISE_EXPORTED_FILE_PATH"
        - api_token: XXX
        - app_id: XXX
        - notes: "$GIT_CLONE_COMMIT_MESSAGE_BODY"
    - [email protected]:
        inputs:
        - content: |-
            #!/bin/bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            mkdir -p /Users/vagrant/beta
            cp /Users/vagrant/deploy/Beta.app.zip /Users/vagrant/beta/XXX.zip
    - [email protected]:
        inputs:
        - file_path: "/Users/vagrant/beta/XXX.zip"
        - aws_access_key: XXX
        - aws_secret_key: XXX
        - bucket_name: XXX
        - path_in_bucket: beta
    - [email protected]:
        inputs:
        - webhook_url: XXX
        - channel: "#builds"
        - from_username: XX BETA Build - Success
        - from_username_on_error: XX BETA Build - ERROR
        - message: |-
            Yay! New build is done! Here are results:

            Direct Download: <XXX>

            HockeyApp: <$HOCKEYAPP_DEPLOY_PUBLIC_URL>
        - message_on_error: |-
            Build Failed :(

            Bitrise.io: <$BITRISE_BUILD_URL>
    before_run: 
    after_run: 
  App:
    steps:
    - [email protected]:
        run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
    - [email protected]:
        inputs:
        - clone_depth: '1'
    - [email protected]:
        inputs:
        - plist_path: source/osx/Resources/Info.plist
        - build_version_offset: ''
    - [email protected]: {}
    - [email protected]:
        inputs:
        - scheme: Production
        - configuration: Production
        - export_method: developer-id
    - [email protected]: {}
    - [email protected]:
        inputs:
        - ipa_path: "$BITRISE_EXPORTED_FILE_PATH"
        - api_token: XXX
        - app_id: XXX
        - notes: "$GIT_CLONE_COMMIT_MESSAGE_BODY"
    - [email protected]:
        inputs:
        - content: |-
            #!/bin/bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            mkdir -p /Users/vagrant/app
            cp /Users/vagrant/deploy/Production.app.zip /Users/vagrant/app/XXX.zip
    - [email protected]:
        inputs:
        - file_path: "/Users/vagrant/app/XXX.zip"
        - aws_access_key: XXX
        - aws_secret_key: XXX
        - bucket_name: XXX
        - path_in_bucket: app
    - [email protected]:
        inputs:
        - webhook_url: XXX
        - channel: "#builds"
        - from_username: XXX Build - Success
        - from_username_on_error: XXX Build - ERROR
        - message: |-
            Yay! New build is done! Here are results:

            Direct Download: <http://XXX.s3.amazonaws.com/app/XXX.zip>

            HockeyApp: <$HOCKEYAPP_DEPLOY_PUBLIC_URL>
        - message_on_error: |-
            Build Failed :(

            Bitrise.io: <$BITRISE_BUILD_URL>
    before_run: 
    after_run: 
app:
  envs:
  - opts:
      is_expand: false
    BITRISE_PROJECT_PATH: workspaces/XXX.xcworkspace
  - opts:
      is_expand: false
    BITRISE_SCHEME: Beta

I am running into following issues:

pupca:~/projects/XXX/bitrise $ bitrise --ci=true run Beta

  ██████╗ ██╗████████╗██████╗ ██╗███████╗███████╗
  ██╔══██╗██║╚══██╔══╝██╔══██╗██║██╔════╝██╔════╝
  ██████╔╝██║   ██║   ██████╔╝██║███████╗█████╗
  ██╔══██╗██║   ██║   ██╔══██╗██║╚════██║██╔══╝
  ██████╔╝██║   ██║   ██║  ██║██║███████║███████╗
  ╚═════╝ ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚══════╝╚══════╝

Version: 1.4.2

INFO[00:54:59] bitrise runs in CI mode           
INFO[00:54:59] Running workflow: Beta            

INFO[00:54:59] Switching to workflow: Beta       

+------------------------------------------------------------------------------+
| (0) [email protected]                                                   |
+------------------------------------------------------------------------------+
| id: activate-ssh-key                                                         |
| version: 3.1.1                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: bash                                                                |
| time: 2016-10-19T00:54:59-04:00                                              |
+------------------------------------------------------------------------------+
|                                                                              |

# Success

The SSH key was saved to */Users/pupca/.ssh/bitrise_step_activate_ssh_key*
and was successfully added to ssh-agent.
|                                                                              |
+----+--------------------------------------------------------------+----------+
| ✅  | [email protected]                                       | 0.98 sec |
+----+--------------------------------------------------------------+----------+

                                          ▼

+------------------------------------------------------------------------------+
| (1) [email protected]                                                          |
+------------------------------------------------------------------------------+
| id: git-clone                                                                |
| version: 3.4.0                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: bash                                                                |
| time: 2016-10-19T00:55:00-04:00                                              |
+------------------------------------------------------------------------------+
|                                                                              |
/var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/git-clone/gitutil/gitutil.go:15:2: cannot find package "github.com/bitrise-io/go-utils/cmdex" in any of:
    /usr/local/go/src/pkg/github.com/bitrise-io/go-utils/cmdex (from $GOROOT)
    /var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/go-utils/cmdex (from $GOPATH)
/var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/git-clone/gitutil/gitutil.go:16:2: cannot find package "github.com/bitrise-io/go-utils/errorutil" in any of:
    /usr/local/go/src/pkg/github.com/bitrise-io/go-utils/errorutil (from $GOROOT)
    /var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/go-utils/errorutil (from $GOPATH)
/var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/git-clone/gitutil/gitutil.go:17:2: cannot find package "github.com/bitrise-io/go-utils/pathutil" in any of:
    /usr/local/go/src/pkg/github.com/bitrise-io/go-utils/pathutil (from $GOROOT)
    /var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/go-utils/pathutil (from $GOPATH)
|                                                                              |
+----+--------------------------------------------------------------+----------+
| 🚫  | [email protected] (exit code: 1)                               | 1.2 sec  |
+----+--------------------------------------------------------------+----------+
| Issue tracker: https://github.com/bitrise-io/steps-git-clone/issues          |
| Source: https://github.com/bitrise-io/steps-git-clone                        |
+----+--------------------------------------------------------------+----------+

The problem was resolved on slack channel and the cause was outdated version of GO (1.2.1). After update to GO 1.7.1 the problem was resolved. But I was asked to track this issue as CLI 1.4.2 should handle such issues itself

TL;DR

/var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/git-clone/gitutil/gitutil.go:15:2: cannot find package "github.com/bitrise-io/go-utils/cmdex" in any of:
    /usr/local/go/src/pkg/github.com/bitrise-io/go-utils/cmdex (from $GOROOT)
    /var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/go-utils/cmdex (from $GOPATH)
/var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/git-clone/gitutil/gitutil.go:16:2: cannot find package "github.com/bitrise-io/go-utils/errorutil" in any of:
    /usr/local/go/src/pkg/github.com/bitrise-io/go-utils/errorutil (from $GOROOT)
    /var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/go-utils/errorutil (from $GOPATH)
/var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/git-clone/gitutil/gitutil.go:17:2: cannot find package "github.com/bitrise-io/go-utils/pathutil" in any of:
    /usr/local/go/src/pkg/github.com/bitrise-io/go-utils/pathutil (from $GOROOT)
    /var/folders/nq/mx509bjd37546m565w0t8snr0000gn/T/bitrise777601539/step_src/go/src/github.com/bitrise-io/go-utils/pathutil (from $GOPATH)

While on CLI 1.4.2, with old (1.2.1) version of GO. Resolved by updating GO to 1.7.1 but should be fixed anyway.

Setup fails on envman installation when home directory is on different device than /tmp

WARN[19:55:19] No supported envman version found.           
INFO[19:55:19] You can find more information about envman on its official GitHub page: https://github.com/bitrise-io/envman 
Installing.............
==> Download failed, retrying ..........
==> Download failed, retrying ..........

FATA[19:56:07] Setup failed, error: Failed to do common/platform independent setup, error: Envman failed to install: failed to copy (/tmp/__tmp_download_dest__461356648/envman) to (/home/koral/.bitrise/tools/envman), error: rename /tmp/__tmp_download_dest__461356648/envman /home/koral/.bitrise/tools/envman: invalid cross-device link 

It seems that error is thrown from here:

if err := os.Rename(tmpDestinationPth, destinationPth); err != nil {

Either different API, which supports cross-device operations, should be used for this action. Or (if there no such thing in Go) it should fall back to copy+delete if files are located on different devices.

typo

Failed to create bitrise cofing -> cofing should be config

Homebrew is a requirement for CLI

Bitrise CLI can be installed through direct download link, however any commands in bitrise require homebrew. It'd be nice to not have that dependency.

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.