Git Product home page Git Product logo

bitrise-step-nodes-custom-script's People

Contributors

chriscombs avatar dominik-hadl avatar mariusc avatar narciszait avatar nickskull avatar pbodsk avatar ricardotokashiki avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitrise-step-nodes-custom-script's Issues

iOS Add code obfuscation step in CI

Originally created by @kjoneandrei in a different project and now migrated here.

History

original description by @kjoneandrei on 25.03.2019
Implement obfuscation via https://github.com/rockbruno/swiftshield in CI

comment by @NickSkull on 26.03.2019
@kjoneandrei could you please add some more information to the issue? I think we need to setup some rules about titles, body, labels.

comment by @kjoneandrei on 26.03.2019
@NickSkull Of course, here it is.

The Problem and the Solution:

So we have a client security requirement that requires source code obfuscation. To do so we have found the SwiftShield framework that can perform the obfuscation for us before archive step. By doing so it will rename classes, variables etc to something random so that it will deter attackers from trying to reverse engineer the app and/or try to access API keys from the project.

Risks:

After the obfuscation step the code might not be archivable if there were errors with obfuscating the code. The framework's github page contains a lists of do and don't to help with the headaches. I would recommend though that the obfuscation is done locally first so we can spot the possible errors before they reach our CI.

Alternatives:

https://github.com/Polidea/SiriusObfuscator

Next Step:

Research and implement

Wrong links to repo

In both the README file as well as the bitwise script (nodes-projects/bitrise-step-nodes-custom-script instead of nodes-ios/bitrise-step-nodes-custom-script/issues)

Slack integration v2

Slack integration should be expanded to provide better information. Slack has recently released the Block Kit interface for building/sending messages through their API which we should explore and see how it could be appended.

https://api.slack.com/block-kit

Checklist of ideas that the new messages could contain:

  • App icon (useful when badged)
  • Buttons that link to Bitrise, HockeyApp
  • Changelog (maybe expandable, so the message isn't taking up whole Slack window)
  • Build author, timestamp
  • Testflight link/status (this is admittedly the most difficult, maybe a microservice would be needed to monitor this)
  • Retrigger button on failed builds?
  • more....

Error handling refactoring

A complete revamp of error handling is necessary to provide better and more clear messages about what has failed in the build to avoid confusion and hunting non-existent bugs due to different warning messages.

Ideally these errors should also be somehow reflected in the messages going out to Slack or similar.

It could also be beneficial to preserve and make available more logs and artifacts from the builds so that when it fails they are easier to access.

A feature creep idea would be to check git author and send them an email with what has failed in the build, but this would need to be better thought out and maybe it's more fitting for a v3.

Refactor app icon badging

Motivation:

Using fastlane badge is slow, as it requires an additional bundle install to be run each time this script is used. We should remove that an instead create a custom solution that will speed up the CI buillds.

Steps:

  • Remove fastlane badge plugin and cleanup dependencies
  • Dynamically create a badge at buildtime using shields.io
  • Using imagemagick modify app icons to have a badge

Alternatively, the code in this repo could be (cough MIT license) borrowed and adjusted for our needs: https://github.com/HazAT/badge/blob/master/lib/badge/runner.rb

CI_VERSION is ignored as it is not parsed in step.sh

Check if we have ci-version set correctly

if [ -z "${CI_VERSION}" ]; then
	# not set, fallback to default CI version
	CI_VERSION=$DEFAULT_CI_VERSION
fi

will always fail and set the CI_VERSION to default as CI_VERSION is an enviroment variable set later.

As a consequence the wrong parse project settings version will be used

Documentation

We should invest some time in writing a proper documentation explaining how each component, lane, script, etc works and where is it located.

This should make it easier for joining developers to continue working on this step without extensive prior domain knowledge.

Furhtermore, it should be explained and showed how to use this step locally in a debug/mocked environment and what input does it expect in what way - if any helper scripts need to be created then that could be a part of this issue as well.

Improve performance of this step in Bitrise

Currently, everytime bitrise interacts with this step it has to load all dependencies, do bundle install and other which take considerable amount of time (~20-30 seconds each time it is run), which we could optimize away.

We could either make this step do all the logic we need and have it as the final step in the Bitrise workflow or somehow check/make sure the dependencies are not being installed everytime.

Modular upload options

Currently we support hockey and testflight, but it is pretty error-prone if you want to use one but not the other. Also, hockey is going away this fall and we will probably need to support other distribution platforms.

The build process should be able to selectively upload to different platforms without any inter-dependencies, and upload to new platforms without needing new builds or configuration changes.

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.