Watchbuild - Get a notification once your iTunes Connect build is finished processing

Overview


fastlane


WatchBuild

Twitter: @FastlaneTools License Gem

Get a notification once your App Store Connect build is finished processing


When you upload a new binary from Xcode to App Store Connect, you have to wait until it's done processing before you can submit it to the App Store.

As the #iosprocessingtime varies from a few minutes to multiple hours, it's easy to forget to check App Store Connect to see if the build is ready. WatchBuild lets you know as soon as it is done.

WatchBuild is a simple standalone tool that shows a notification once your newly uploaded build was successfully processed by App Store Connect.

Once the build is ready to be pushed to TestFlight or for review, you get a macOS notification. You can even directly click on the notification to open the build on App Store Connect.

Why use WatchBuild?

WatchBuild is a standalone tool and can be used without any of the other fastlane tools. This is big, since you can use WatchBuild also if you use Xcode to upload your app.

This tool is not a replacement for deliver (Upload metadata and builds to App Store Connect) or pilot (Upload and distribute new builds to TestFlight), but is meant as a small helpful utility with the main purpose to wait for the binary processing to be finished.

Get in contact with the developer on Twitter: @FastlaneTools


InstallationUsageNeed help?


Installation

sudo gem install watchbuild

Make sure, you have the latest version of the Xcode command line tools installed:

xcode-select --install

Usage

watchbuild

You can pass your bundle identifier and username like this:

watchbuild -a com.krausefx.app -u [email protected]

You can also include a Slack webhook url for notifications via Slack:

watchbuild -a com.krausefx.app -u [email protected] --slack_url https://hooks.slack.com/services/<your-webhook>

For a list of available parameters and commands run

watchbuild --help

How is my password stored?

WatchBuild uses the secure CredentialsManager from fastlane that stores credentials in your local keychain.

Need help?

Please submit an issue on GitHub and provide information about your setup

Code of Conduct

Help us keep watchbuild open and inclusive. Please read and follow our Code of Conduct.

License

This project is licensed under the terms of the MIT license. See the LICENSE file.

This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.

Comments
  • Feature: Slack Notification Support

    Feature: Slack Notification Support

    Context

    This Pull Request provides Watchbuild better support in CI environments with the addition of Slack notification support.

    Detail

    A user can now specify a Slack Webhook URL in the watchbuild command:

    watchbuild -a com.krausefx.app -u [email protected] --slack_url https://hooks.slack.com/services/<your-webhook>
    

    This will notify the specified Slack channel with the default message: slack-screenshot

    When using the Slack Notification command, terminal notifier is not called (at the time of this PR there was an issue with terminal notifier where watchbuild could not exit until action was taken on the notification)

    cla: no 
    opened by alihen 13
  • Not Found error and

    Not Found error and "Something failed..."

    Got this message this morning when trying to watch build:

    [10:03:04]: Starting login with user '[email protected]'
    [10:03:26]: Successfully logged in
    [10:03:27]: {"data"=>nil, "messages"=>{"warn"=>nil, "error"=>["Not Found"], "info"=>nil}, "statusCode"=>"ERROR"}
    

    Updated to latest fastlane and [email protected], but same error.

    opened by typeoneerror 8
  • Rename iTunes Connect to App Store Connect

    Rename iTunes Connect to App Store Connect

    Rename to ~~iTunes~~ App Store Connect

    As of June 2018, iTunes Connect has been renamed to App Store Connect. This pull request updates watchbuild notification description, readme, and URLs to match the change.

    cla: yes 
    opened by terenceyan 4
  • fix: Various fixes and updates

    fix: Various fixes and updates

    • Use Connect API authentication
    • Simplify build finding using all_processing_builds
    • Update URL for build metadata in App Store Connect
    • Resolve errors created by changes in Spaceship
    cla: yes 
    opened by rajivshah3 2
  • undefined method `this' for #<Gem::Specification:0x3fd3a403cbb0 json-2.0.2>

    undefined method `this' for #

    Are there someone with this error?

    /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/specification.rb:2159:in method_missing': undefined methodthis' for #<Gem::Specification:0x3fd3a403cbb0 json-2.0.2> (NoMethodError) from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/specification.rb:1057:in find_active_stub_by_path' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:64:inrequire' from /Users/an/.rvm/gems/ruby-2.3.3/gems/fastlane-2.8.0/fastlane_core/lib/fastlane_core.rb:1:in <top (required)>' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:inrequire' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in rescue in require' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:inrequire' from /Users/an/.rvm/gems/ruby-2.3.3/gems/watchbuild-0.2.0/lib/watchbuild/options.rb:1:in <top (required)>' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:inrequire' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require' from /Users/an/.rvm/gems/ruby-2.3.3/gems/watchbuild-0.2.0/lib/watchbuild.rb:2:in<top (required)>' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require' from /Users/an/.rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:inrequire' from /Users/an/.rvm/gems/ruby-2.3.3/gems/watchbuild-0.2.0/bin/watchbuild:5:in <top (required)>' from /Users/an/.rvm/gems/ruby-2.3.3/bin/watchbuild:22:inload' from /Users/an/.rvm/gems/ruby-2.3.3/bin/watchbuild:22:in <main>' from /Users/an/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:ineval' from /Users/an/.rvm/gems/ruby-2.3.3/bin/ruby_executable_hooks:15:in `

    '

    opened by aleufms 2
  • Recent

    Recent "yanking" of fastlane_core 0.60.0 causes dependency issue with watchbuild

    Bundler could not find compatible versions for gem "fastlane_core": In Gemfile: fastlane_core (= 1.0.0)

    watchbuild (= 0.1.4) was resolved to 0.1.4, which depends on
      fastlane_core (< 1.0.0, >= 0.43.1)
    

    My Gemfile currently has 0.1.4 defined as it's the latest version.

    However, I'm currently being forced to point to fastlane_core 1.0.0 in my Gemfile since if I don't, it will try to find 0.60.0 which has recently been yanked from rubygems.org:

    This version has been yanked, and it is not available for download directly or for other gems that may have depended on it.

    VERSIONS: 1.0.0 - December 18, 2016 (44 KB) 0.59.0 - December 7, 2016 (43.5 KB) 0.58.0 - December 5, 2016 (43 KB) 0.57.2 - November 29, 2016 (43 KB) 0.57.1 - November 23, 2016 (43 KB)

    opened by lemonkey 2
  • Update yard dependency for CVE-2017-17042, rubocop dependency for CVE2017-8418 .

    Update yard dependency for CVE-2017-17042, rubocop dependency for CVE2017-8418 .

    Motivation

    yard

    Update for https://nvd.nist.gov/vuln/detail/CVE-2017-17042.

    rubocop

    Update for https://nvd.nist.gov/vuln/detail/CVE-2017-8418.

    Questions

    • Do I need to bump the version for dev dependency updates? 🤔
    cla: yes 
    opened by armcburney 1
  • Support multiple teams

    Support multiple teams

    Fixes #6

    Wuuuutttt

    • Adds :its_team_id
      • -k
      • FASTLANE_ITC_TEAM_ID
    • Adds :itc_team_name
      • -p
      • FASTLANE_ITC_TEAM_NAME
    • Calls Spaceship::Tunes.select_team
    • I also ran RuboCop 🙃 🚨
    cla: yes 
    opened by joshdholtz 0
  • Support for multiple teams

    Support for multiple teams

    My iTunes Connect user is admin of two different teams, but watchbuild only recognises Apps belonging to one of them and ignoring the other. I can access both teams Apps through Spaceship

    I guess the solution would be adding support for receiving the desired team ID as an argument

    opened by mrjano 0
  • Can we trigger distribute to external users?

    Can we trigger distribute to external users?

    Hi,

    First of all thanks for a very usefull tool.

    This not an issue but a question. Is it possible to trigger, distribute to external users when build processing is done? I want to automate to distribution to external users. Waiting for Apple process blocks my build flow so i want to separate the waiting and distribution.

    Best

    opened by ergunkocak 1
  • No need to 'sudo'

    No need to 'sudo'

    Hi,

    Thanks for this tool, first of all!

    I believe there is no need to suggest the need to sudo install this tool. This works and is not invasive as what is currently suggested in your README:

    gem install watchbuild --user-install
    

    Let me know if I am overseeing some edge case I am not aware of and didn't experience myself.

    opened by NunoAlexandre 0
  • Error on macOS Mojave while installing

    Error on macOS Mojave while installing

    sudo gem install watchbuild Building native extensions. This could take a while... ERROR: Error installing watchbuild: ERROR: Failed to build gem native extension.

    current directory: /usr/local/lib/ruby/gems/2.6.0/gems/unf_ext-0.0.7.5/ext/unf_ext
    

    /usr/local/opt/ruby/bin/ruby -I /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0 -r ./siteconf20190305-71068-fwf5h8.rb extconf.rb checking for -lstdc++... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.

    Provided configuration options: --with-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/local/Cellar/ruby/2.6.0/bin/$(RUBY_BASE_NAME) --with-static-libstdc++ --without-static-libstdc++ --with-stdc++lib --without-stdc++lib /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:467:in try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:552:intry_link0' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:570:in try_link' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:789:intry_func' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:1016:in block in have_library' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:959:inblock in checking_for' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:361:in block (2 levels) in postpone' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:331:inopen' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:361:in block in postpone' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:331:inopen' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:357:in postpone' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:958:inchecking_for' from /usr/local/Cellar/ruby/2.6.0/lib/ruby/2.6.0/mkmf.rb:1011:in have_library' from extconf.rb:6:in

    '

    To see why this extension failed to compile, please check the mkmf.log which can be found here:

    /usr/local/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0/unf_ext-0.0.7.5/mkmf.log

    extconf failed, exit code 1

    Gem files will remain installed in /usr/local/lib/ruby/gems/2.6.0/gems/unf_ext-0.0.7.5 for inspection. Results logged to /usr/local/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-18/2.6.0/unf_ext-0.0.7.5/gem_make.out

    opened by telmen 5
  • Trying to run this on Ubuntu server and I get this error

    Trying to run this on Ubuntu server and I get this error

    Trying to run this on Ubuntu server and I get this error because it happens when I try to use grep or ">" I'm trying to make it so it will send me an text when its done thats why I need ubuntu and because your cred manager is only for OSX I can't use it for this there for I need to enter the password using echo

    Traceback (most recent call last):
    	15: from /usr/local/bin/watchbuild:23:in `<main>'
    	14: from /usr/local/bin/watchbuild:23:in `load'
    	13: from /var/lib/gems/2.5.0/gems/watchbuild-0.3.0/bin/watchbuild:58:in `<top (required)>'
    	12: from /var/lib/gems/2.5.0/gems/watchbuild-0.3.0/bin/watchbuild:40:in `run'
    	11: from /var/lib/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
    	10: from /var/lib/gems/2.5.0/gems/fastlane-2.108.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
    	 9: from /var/lib/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
    	 8: from /var/lib/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
    	 7: from /var/lib/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
    	 6: from /var/lib/gems/2.5.0/gems/watchbuild-0.3.0/bin/watchbuild:34:in `block (2 levels) in run'
    	 5: from /var/lib/gems/2.5.0/gems/watchbuild-0.3.0/lib/watchbuild/runner.rb:19:in `run'
    	 4: from /var/lib/gems/2.5.0/gems/fastlane-2.108.0/spaceship/lib/spaceship/tunes/spaceship.rb:24:in `login'
    	 3: from /var/lib/gems/2.5.0/gems/fastlane-2.108.0/spaceship/lib/spaceship/client.rb:71:in `login'
    	 2: from /var/lib/gems/2.5.0/gems/fastlane-2.108.0/spaceship/lib/spaceship/client.rb:353:in `login'
    	 1: from /var/lib/gems/2.5.0/gems/fastlane-2.108.0/credentials_manager/lib/credentials_manager/account_manager.rb:56:in `password'
    /var/lib/gems/2.5.0/gems/fastlane-2.108.0/credentials_manager/lib/credentials_manager/account_manager.rb:135:in `ask_for_login': [!] Missing password for user [email protected], and running in non-interactive shell (RuntimeError)```
    opened by charlieporth1 0
  • `initialize': unknown keyword: code_gen_sensitive (ArgumentError)

    `initialize': unknown keyword: code_gen_sensitive (ArgumentError)

    Running watchbuild 0.3.0 gives me this error:

    /Users/[user]/.rvm/gems/ruby-2.3.0@global/gems/fastlane-2.63.0/fastlane_core/lib/fastlane_core/configuration/config_item.rb:62:in `initialize': unknown keyword: code_gen_sensitive (ArgumentError)
    	from /Users/[user]/.rvm/gems/ruby-2.3.0@global/gems/watchbuild-0.3.0/lib/watchbuild/options.rb:11:in `new'
    	from /Users/[user]/.rvm/gems/ruby-2.3.0@global/gems/watchbuild-0.3.0/lib/watchbuild/options.rb:11:in `available_options'
    	from /Users/[user]/.rvm/gems/ruby-2.3.0@global/gems/watchbuild-0.3.0/bin/watchbuild:26:in `run'
    	from /Users/[user]/.rvm/gems/ruby-2.3.0@global/gems/watchbuild-0.3.0/bin/watchbuild:58:in `<top (required)>'
    	from /Users/[user]/.rvm/rubies/ruby-2.3.0/bin/watchbuild:23:in `load'
    	from /Users/[user]/.rvm/rubies/ruby-2.3.0/bin/watchbuild:23:in `<main>'
    	from /Users/[user]/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
    	from /Users/[user]/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'
    

    OS: macOS Mojave [10.14 (18A391)] Ruby version: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin16]

    opened by thislooksfun 0
Releases(0.5.0)
Owner
fastlane
🚀 The easiest way to automate building and releasing your iOS and Android apps
fastlane
CLI tool to fetch a webpage's contents after it has finished loading

webpage-dl Fetch a webpage's contents via CLI after it has finished loading. Scraping HTML from webpages can't always be done via curl as it is often

Max Chuquimia 2 Apr 21, 2022
iTunes Connect Library inspired by FastLane

Mothership iTunes Connect Library inspired by FastLane I wrote MotherShip for two reasons. love FastLane, but I am not proficient in Ruby. I wanted to

thecb4 74 Nov 3, 2022
macOS App for App Store Connect to Improve Processing Efficiency and Enjoy the Party.

Apple Party(苹果派) 一、App 介绍 AppleParty 是三七互娱旗下37手游 iOS 团队研发,实现快速操作 App Store Connect 后台的自动化 macOS 工具。 使用和原理介绍:开源一款苹果 macOS 工具 - AppleParty(苹果派) 支持功能 内购买

37iOSTeam 173 Dec 30, 2022
Which contacts changed outside your iOS app? Better CNContactStoreDidChange notification: get real changes, without the noise.

ContactsChangeNotifier Which contacts changed outside your iOS app? Better CNContactStoreDidChange notification: Get real changes, without the noise.

Yonat Sharon 5 Oct 31, 2022
Extensions and classes in Swift that make it easy to get an iOS device reading and processing MIDI data

MorkAndMIDI A really thin Swift layer on top of CoreMIDI that opens a virtual MIDI destination and port and connects to any MIDI endpoints that appear

Brad Howes 11 Nov 5, 2022
The swiftest way to build iOS apps that connect to Salesforce

Build iOS apps fast on the Salesforce Platform with Swiftly Salesforce: Written entirely in Swift. Uses Swift's Combine framework to simplify complex,

Michael Epstein 131 Nov 23, 2022
The Swift-est way to build native mobile apps that connect to Salesforce.

Swiftly Salesforce is the Swift-est way to build native mobile apps that connect to Salesforce: Written entirely in Swift. Very easy to install and up

Michael Epstein 131 Nov 23, 2022
Easily add vertical and horizontal pull to refresh to any UIScrollView. Can also add multiple pull-to-refesh views at once.

This is a fork from the famous SVPullToRefresh pod with 2 additional functionalities: Can add multiple pull-to-refresh views into one single UIScrollV

Hoang Tran 42 Dec 28, 2022
A property wrapper to enforce that closures are called exactly once!

A property wrapper that allows you to enforce that a closure is called exactly once. This is especially useful after the introduction of SE-0293 which makes it legal to place property wrappers on function and closure parameters.

Suyash Srijan 11 Nov 13, 2022
A declarative, thread safe, and reentrant way to define code that should only execute at most once over the lifetime of an object.

SwiftRunOnce SwiftRunOnce allows a developer to mark a block of logic as "one-time" code – code that will execute at most once over the lifetime of an

Thumbtack 8 Aug 17, 2022
A tool to check which keychain items are available to an attacker once an iOS device has been jailbroken

Keychain Dumper Usage All that should be needed to use keychain_dumper is the binary that is checked in to the Keychain-Dumper Git repository. This bi

Patrick Toomey 1.2k Dec 28, 2022
A way to quickly add a notification badge icon to any view. Make any view of a full-fledged animated notification center.

BadgeHub A way to quickly add a notification badge icon to any view. Demo/Example For demo: $ pod try BadgeHub To run the example project, clone the r

Jogendra 772 Dec 28, 2022
A way to quickly add a notification badge icon to any view. Make any view of a full-fledged animated notification center.

BadgeHub A way to quickly add a notification badge icon to any view. Demo/Example For demo: $ pod try BadgeHub To run the example project, clone the r

Jogendra 773 Dec 30, 2022
An example implementation of using a native iOS Notification Service Extension (to display images in remote push notification) in Titanium.

Titanium iOS Notification Service Extension An example implementation of using a native iOS Notification Service Extension (to display images in remot

Hans Knöchel 8 Nov 21, 2022
reward the user for watching videos to get coins then use them to get rid of annoying admob ads

reward the users for watching youtube videos to the end to earn coins, then use them to get rid of annoying admob ads like banners, interstitial & reward videos

Belal Samy 4 Nov 19, 2021
This to learn such as : Add Target , NSNotification Center Send/Get Data , Observer Override , resize Data By Byte , UIImagePicker Delegate , UIAlert Handle , Top ViewController , Get pickerController

Technicalisto How to Create UIButton Class to Pick Data Image Purpose Learn this topics With exact Task Add Target NSNotification Center Send/Get Data

Aya Baghdadi 1 Feb 20, 2022
Zilla connect is an easy, fast and secure way for your users to buy now and pay later from your app

Zilla Checkout iOS SDK Zilla connect is an easy, fast and secure way for your us

null 0 Jan 19, 2022
A macOS app to visualise your iTunes library as graphs.

iTunes Graphs iTunes Graphs is a Cocoa-based macOS app which visualises your iTunes library in a series of pie charts. Currently, it supports the foll

zac garby 46 Dec 26, 2022
A simple iOS app similar to iTunes where you can view details of your favorite movies, songs and audio books.

Popcorn Adventure This is an iOS app developed by Arthur Tristan M. Ramos who has taken the Appetiser iOS Coding Challenge. Design Pattern The design

Arthur Tristan M. Ramos 0 Dec 11, 2021
This is a control that helps you dramatically ease your infinite scroll processing.

InfiniteScrollControl Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installat

Minseok Kang 0 Nov 15, 2021