Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
BuildKit is a modular command line interface for automating iOS project builds. BuildKit aims to relieve you from the pain of configuring continuous integration environments and build processes.
Bundled build tasks include:
BuildKit is distributed as a Ruby gem with an executable that can be launched either in a continuous integration server environment or on your development machine. The process is configured with a simple YAML file that describes the tasks to run and your project-specific options. This means that you can tailor the build process to meet your requirements.
ruby -v
. RVM makes it easy should you need to update.xcode-select --install
brew install imagemagick
.brew install ghostscript
.After the requirements have been met, BuildKit can be installed with:
gem install ios_build_kit
BuildKit is launched from a command line environment with:
buildkit
Pass a configuration file to BuildKit with:
buildkit your-config-file.yml
The configuration file describes three things:
An example configuration file:
:tasks:
:increment_version:
:run: true
:options:
:decorate_icon:
:run: true
:options:
:xcode_build:
:run: true
:options:
:log: true
:clean: true
:run_tests:
:run: false
:options:
:log: true
:create_ipa:
:run: true
:options:
:log: true
:configuration:
:app_name: "BuildKit"
:workspace: "BuildKit.xcworkspace"
:info_plist: "BuildKit/BuildKit-Info.plist"
:build_configuration: "Release"
:scheme: "BuildKit"
:sdk: "iphoneos"
:provisioning_profile: "Provisioning/BuildKitTest.mobileprovision"
:code_sign: "iPhone Distribution: Alpaca Labs"
:icon_dir: "BuildKit/Icon/"
:build_dir: "Builds"
:preferences:
:reports: "Reports"
The :tasks:
symbol is used to define what tasks you would like your process to run. If :run:
is set to true
on a particular task then that task will be executed as part of the build process. Setting :run:
to false
will mean that the task is skipped (note that some tasks depend on others, and may cause a graceful failure). In the examle above all tasks but for run_tests
will be executed.
The tasks will be run in the order that they appear in the list. It's recommended to follow the order shown in the example as they've been ordered to satisfy requirments and provide more value to the process. In the example the version is incremented with increment_version
, followed by the newly incremented version being rendered on the app icon with decorate_icon
, finally xcode_build
and create_ipa
are run and the version number appears on icon if the generated ipa is installed on a device.
Anything passed with the :options:
symbol will be provided as an option. For example, taking the example configuration file above the :log:
option on the run_tests
task is set to true
so the test output will be printed to the CLI.
The Tasks section in this README describes all of the options available to each task.
To run the task modules successfully requires some project-specific configuration, this is done under the :configuration:
symbol.
:app_name:
: Your app's name!:workspace:
: The path to your workspace (note that single Xcode project files aren't supported).:info_plist:
: The path to your app's main info-plist file.:build_configuration:
: Your build configuration (normally "Release" or suchlike):scheme:
: Project scheme to build:sdk:
: SDK to build with (example: "iphoneos"):provisioning_profile:
: Path to a provisioning profile to sign the app with.:code_sign:
: The code signature, this is found in Xcode next to a selected provisioning profile (example: "iPhone Distribution: Alpaca Labs"). I recommend this OSX quick look plug in if you want to inspect profiles.:icon_dir:
: The path to a directory containing you icon image files. More on this in the Tasks decorate_icon
section of this README.:build_dir:
: The path to drop any build and ipa files after they have been created.Note: if some required configuration has not been provided, or an invalid location has been provided for an option that requires a path, then BuildKit will gracefully fail.
BuildKit can be configured to suit your own preference too. This is done under the :preferences:
symbol. For example, to switch on build report generation set the :reports:
symbol to true
. User preferences are further described in the User Preferences section of this README.
BuildKit comes packaged with the following task modules:
increment_version
: Increment the build numberdecorate_icon
: Overlay the version number on the app iconxcode_build
: Build the apprun_tests
: Run unit testscreate_ipa
: Generate an .ipa artefactIncrements the build version number in the Info-plist:
Requires configuration:
:info_plist:
Duplicates you app icon files and aints the version number on top (incremented with increment_version
or not).
Decorate icon requires some convention to be followed: Your app icon files should be contained in a dedicated directory of their own. To have the icon version number appear on top of a generated ipa requires you to drop the icon directory in to Xcode as a folder reference rather than a group. Then set the icon files in your Info-plist as:
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>CONTAININGFOLDER/Decorated-ICONFILENAME</string>
<string>CONTAININGFOLDER/Decorated-ICONFILENAME</string>
<string>CONTAININGFOLDER/Decorated-ICONFILENAME</string>
</array>
</dict>
</dict>
If you're unsure check the example project in the repo.
Requires configuration:
:info_plist:
:icon_dir:
Builds the project:
Options:
log
: logs the output to the consoleclean
: clean before buildRequires configuration:
:app_name:
:workspace:
:sdk:
:build_configuration:
:build_dir:
:scheme:
Runs unit tests:
Options:
log
: logs the output to the consoleRequires configuration:
:workspace:
:scheme:
Creates an .ipa build artefact and drops it in build directory specified in the config file.
Options:
log
: logs the output to the consoleRequires previous tasks:
xcode_build
Requires configuration:
xcode_build
BuildKit includes some user preferences that can be enabled under the :preferences:
symbol of a config file.
Set :reports:
to a directory in your config file to create a JSON report containing the project configuration, build time, build outputs and test outputs after a BuildKit run has completed.
Leaving the :reports:
preference blank will skip report generation.
An example workspace has been included in the repo if you want to try it out. You may need to change the paths in the build_config.yml
configuration file first and run a pod install
.
Lots of plans for BuildKit:
decorate_icon
compatible with Xcode 5 asset catalogues.All pull requests welcome! Please ensure that all existing RSpec specs pass, and that any new features are covered with specs. Please keep the README up to date.
Copyright (c) 2014 Adam Waite. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
FAQs
Unknown package
We found that ios_build_kit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.