Skip to content

Commit

Permalink
[INJIMOB-890] [INJIMOB-891] Support for packaging Kotlin and Swift Ar…
Browse files Browse the repository at this point in the history
…tifacts (#109)

* delete CODE_OF_CONDUCT.md

Signed-off-by: Swati Goel <meet2swati@gmail.com>

* update CONTRIBUTING.md

Signed-off-by: Swati Goel <meet2swati@gmail.com>

* feat (#891): iOS File Manipulation

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* feat (#891): iOS File Manipulation

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* feat (#890, #891): Add. iOS and Android Artefacts and Git Workflows

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* feat (#890): Added Android Example App

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* feat (#891): Added iOS Example App

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: rename artefact to artifact

Signed-off-by: Swati Goel <meet2swati@gmail.com>

* feat(#890): publishing android artefacts to maven central

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* chore(#893): add maven publish tuvali git workflow

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publish workflow for android builds

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit #3

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit #4

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit #5

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit - added npm and reacr=t-native dependencies  #6

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit - changed pom file location #7

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit - changed pom location and removed commit plugin

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: feat. maven publishing workflow file edit - manual trigger for branches

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: edited android artifact workflow

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: edited android artifact workflow and publish artifact gradle

Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>

* [INJIMOB-890]: delete kotlin artifact package

Signed-off-by: Swati Goel <meet2swati@gmail.com>

---------

Signed-off-by: Swati Goel <meet2swati@gmail.com>
Signed-off-by: Ayushi Dey <ayushirakshitdey@gmail.com>
Co-authored-by: Ayushi Dey <ayushidey@Ayushis-Laptop.local>
Co-authored-by: Ayushi Dey <ayushirakshitdey@gmail.com>
  • Loading branch information
3 people authored Apr 17, 2024
1 parent 2831202 commit d5fb4e6
Show file tree
Hide file tree
Showing 144 changed files with 75,449 additions and 8,772 deletions.
30 changes: 30 additions & 0 deletions .github/workflows/android-artifact-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Android Artifact Build

on:
workflow_dispatch:
inputs:
message:
description: 'Message for manually triggering'
required: false
default: 'Triggered for Updates'
type: string
push:
branches:
- release*
- master
- develop*

jobs:
maven-publish:
uses: mosip/kattu/.github/workflows/maven-publish-android.yml@master
with:
SERVICE_LOCATION: '.'
ANDROID_LOCATION: 'android'
BUILD_ARTIFACT: tuvali
secrets:
OSSRH_USER: ${{ secrets.OSSRH_USER }}
OSSRH_URL: ${{secrets.OSSRH_URL }}
OSSRH_SECRET: ${{ secrets.OSSRH_SECRET }}
OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }}
GPG_SECRET: ${{ secrets.GPG_SECRET }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_INJI_TEAM }}
65 changes: 65 additions & 0 deletions .github/workflows/ios-artifact-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: iOS Artifact Build

on:
workflow_dispatch:

jobs:
build:
runs-on: macos-latest
permissions:
contents: write # Grants permission to push code and manage releases
pull-requests: write # Grants permission to write pull requests

steps:
- name: Checkout Repository
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16'

- name: Create Library Folder and Create Swift Library
run: |
cd ./artifacts/swift-artifact/
rm -rf ios-tuvali-library
mkdir ios-tuvali-library
cd ios-tuvali-library
swift package init --type library
rm -rf /ios-tuvali-library
- name: Edit Package.swift
run: |
cp ./artifacts/swift-artifact/Package.swift ./artifacts/swift-artifact/ios-tuvali-library/Package.swift
- name: Build Swift Package
run: |
cd ./artifacts/swift-artifact/ios-tuvali-library
swift package clean
swift package update
brew install zlib
swift build -c debug -Xlinker -L/usr/local/lib
- name: Move required files
run: |
cp -R ./ios/Wallet ./artifacts/swift-artifact/ios-tuvali-library/Sources/ios-tuvali-library
cp -R ./ios/ble ./artifacts/swift-artifact/ios-tuvali-library/Sources/ios-tuvali-library
cp -R ./ios/crypto ./artifacts/swift-artifact/ios-tuvali-library/Sources/ios-tuvali-library
cp -R ./ios/common ./artifacts/swift-artifact/ios-tuvali-library/Sources/ios-tuvali-library
- name: Configure Git
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
- name: Commit Artifacts
run: |
git add .
git commit --allow-empty -m "chore(#891): changes in script"
- name: Push Changes to Specific Branch
run: |
git pull origin --rebase
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
133 changes: 0 additions & 133 deletions CODE_OF_CONDUCT.md

This file was deleted.

79 changes: 31 additions & 48 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
# Contributing

Contributions are always welcome, no matter how large or small!
We value code contributions, but non-code contributions too, from writers, editors, testers, etc. are always welcomed. Join us to contribute
* To contribute to code, [repository](https://github.com/mosip/tuvali)
* To contribute to documentation, [repository](https://github.com/mosip/documentation/blob/inji/docs/integration-guide/tuvali-inji.md)

We want this community to be friendly and respectful to each other. Please follow it in all your interactions with the project. Before contributing, please read the [code of conduct](./CODE_OF_CONDUCT.md).
We want this community to be friendly and respectful to each other. Please follow it in all your interactions with the project.

## Development workflow
## Code of Conduct
This project and everyone participating in it is governed by the [code of conduct](https://docs.mosip.io/1.2.0/community/code-of-conduct).

This guide will help you to contribute in various aspects like raising issues, feature request, etc.

## Project Initial Setup

To get started with the project, run `yarn` in the root directory to install the required dependencies for each package:

Expand All @@ -14,26 +21,6 @@ yarn

> While it's possible to use [`npm`](https://github.com/npm/cli), the tooling is built around [`yarn`](https://classic.yarnpkg.com/), so you'll have an easier time if you use `yarn` for development.
While developing, you can run the [example app](/example/) to test your changes. Any changes you make in your library's JavaScript code will be reflected in the example app without a rebuild. If you change any native code, then you'll need to rebuild the example app.

To start the packager:

```sh
yarn example start
```

To run the example app on Android:

```sh
yarn example android
```

To run the example app on iOS:

```sh
yarn example ios
```

Make sure your code passes TypeScript and ESLint. Run the following to verify:

```sh
Expand All @@ -53,12 +40,11 @@ Remember to add tests for your change if possible. Run the unit tests by:
yarn test
```

To edit the Objective-C or Swift files, open `example/ios/TuvaliExample.xcworkspace` in XCode and find the source files at `Pods > Development Pods > react-native-tuvali`.
To edit the Objective-C or Swift files, open `ios/` in XCode.

To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `react-native-tuvali` under `Android`.
To edit the Java or Kotlin files, open `android/` in Android studio.


### Commit message convention
## Commit message convention

We follow the [conventional commits specification](https://www.conventionalcommits.org/en) for our commit messages:

Expand All @@ -71,44 +57,41 @@ We follow the [conventional commits specification](https://www.conventionalcommi

Our pre-commit hooks verify that your commit message matches this format when committing.

### Linting and tests
## Linting and tests

[ESLint](https://eslint.org/), [Prettier](https://prettier.io/), [TypeScript](https://www.typescriptlang.org/)

We use [TypeScript](https://www.typescriptlang.org/) for type checking, [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) for linting and formatting the code, and [Jest](https://jestjs.io/) for testing.

Our pre-commit hooks verify that the linter and tests pass when committing.

### Publishing to npm

We use [release-it](https://github.com/release-it/release-it) to make it easier to publish new versions. It handles common tasks like bumping version based on semver, creating tags and releases etc.

To publish new versions, run the following:

```sh
yarn release
```

### Scripts
## Scripts

The `package.json` file contains various scripts for common tasks:

- `yarn bootstrap`: setup project by installing all dependencies and pods.
- `yarn typescript`: type-check files with TypeScript.
- `yarn lint`: lint files with ESLint.
- `yarn test`: run unit tests with Jest.
- `yarn example start`: start the Metro server for the example app.
- `yarn example android`: run the example app on Android.
- `yarn example ios`: run the example app on iOS.

### Sending a pull request
## Before Submitting a Pull Request

> **Working on your first pull request?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github).
When you're sending a pull request:
**Before submitting your pull request** make sure the following requirements are fulfilled:

- Prefer small pull requests focused on one change.
- Verify that linters and tests are passing.
- Review the documentation to make sure it looks good.
- Follow the pull request template when opening a pull request.
- Fork the repository
- Create a branch from `develop`
- Prefer small pull requests focused on one change
- Check linting and format it
- Change necessary code for bug fix, a new feature
- Follow the pull request template when opening a pull request
- For pull requests that change the API or implementation, discuss with maintainers first by opening an issue.


## Reporting an issue

Before submitting an issue, you need to make sure:

- Kindly provide an adequate description and a clear title
- If possible, share a URL towards the repository in which action is failing
13 changes: 8 additions & 5 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'org.sonarqube'
apply plugin: 'maven-publish'

buildscript {
// Buildscript is evaluated before everything else so we can't use getExtOrDefault
def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['Tuvali_kotlinVersion']
Expand All @@ -19,10 +24,6 @@ def isNewArchitectureEnabled() {
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'org.sonarqube'

if (isNewArchitectureEnabled()) {
apply plugin: 'com.facebook.react'
}
Expand All @@ -36,9 +37,10 @@ def getExtOrIntegerDefault(name) {
}

android {
compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
compileSdkVersion(Integer.parseInt(findProperty("Tuvali_compileSdkVersion") as String))

defaultConfig {
compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
minSdkVersion getExtOrIntegerDefault('minSdkVersion')
targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
Expand Down Expand Up @@ -154,3 +156,4 @@ if (isNewArchitectureEnabled()) {
}
}

apply from: "publish-artifact.gradle"
Loading

0 comments on commit d5fb4e6

Please sign in to comment.