Skip to content

Latest commit

 

History

History
129 lines (89 loc) · 3.04 KB

DEVELOPING.adoc

File metadata and controls

129 lines (89 loc) · 3.04 KB

Developing

Guide for our development process, project setup and how to write code.

Table Of Contents

Prerequisites

  • XCode 12.5

  • iOS 13.0

  • Swift 5.4+

  • Bundler

  • AWS cli tool

Install

Install Gems using bundler

Install bundler by following instructions at the official page. When done, run:

bundle install

Install AWS Cli tool

Install the aws cli tool by following instructions at the official page.

Configure it by entering:

aws configure

and entering following data

AWS Access Key ID: xxxxx
AWS Secret Access Key: xxxxx
Default region name: eu-central-1
Default output format: json]
📎
Access key ID and secret are secretly stored and must be asked for.

Build

Just open XCode, let the packages resolve and build the Data4LifeCrypto Scheme.

Release

A release branches of from main branch with following pattern:

  • release/{major}.{minor}.{patch})/prepare-{major}.{minor}.{patch}

Steps

  • Update CHANGELOG

  • Run prepare release script (eg. bundle exec fastlane ios prepare_release version:"1.0.0" api_token:"xxxxxxx")

  • On github, publish the release manually by setting the new tag (eg. v1.0.0)

📎
Prepare release script will fail if there is no new version defined in the changelog

Prepare release script steps

The script executes the following commands:

  • Update new versions in the README.adoc and project files (including badges)

  • Do sanity checks (Proper version number in changelog etc.)

  • Build framework and upload it to S3

  • Update Package swift info (url and checksum)

  • Commit and push changes

  • Create GitHub release draft with all of the information from CHANGELOG

bundle exec fastlane ios prepare_release version:"1.0.0" api_token:"xxxxxxx"

Development Process

Features

Every change has to branch of from main and use this branch naming convention:

  • feature/{type_of_change}-{short_description} or with ticket id feature/{ticket_id}/{type_of_change}-{short_description}

main must be always in releasable state.

Type Of Change

  • add for new features or functionality

  • change for changes in existing features or functionality

  • remove | for removed features or functionality

  • fix for any bug fixes

  • bump for dependency updates

  • security in case of vulnerabilities

Examples:

  • feature/SDK-456/add-awesome-hashing-algorithm

  • feature/add-awesome-hashing-algorithm

  • feature/remove-not-so-awesome-algorithm

  • feature/fix-algorithm-corner-case

  • feature/bump-lib-to-1.3.0