Commit Graph

220 Commits

Author SHA1 Message Date
Andrea Maria Piana 5c52854d11
fdroid: add script that automates submissions
This script fetches a specified APK and analyzes it for values like
version code or commit and then based on that creates a branchy and a
commit in `fdroiddata` repository that can be used to create a release PR.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-10-13 12:13:38 +02:00
Jakub Sokołowski 85348306ce
drop scripts/generate-pull-request-report.sh
People on HackerOne keep reporting this file as containing a secret token.

The reality is that this token is no longer usable since it was
published to a public repo, which would have caused it to be revoked
automatically though GitHub automation:
https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning

Other than that I'm pretty sure nobody is using this script.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-21 20:04:39 +02:00
Jakub Sokołowski e2c18ea151
add commit hash to app metadata for Android and iOS
This will make identifying installed software easier.
It can also be used to generate F-Droid RPs more easily.

Depends on:
https://github.com/status-im/status-jenkins-lib/pull/35

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-21 11:48:45 +02:00
Jakub Sokołowski a76e4666de
update-status-go: does not need to depend on make shell
The dependency on `make shell` is confusing and unnecessary since
`update-status-go.sh` script only requires availability of the
`nix-prefetch-url` utility to check SHA256 of the `status-go` verison.

Use of `make shell` with this script can also cause issues when running
`make run-android` if already in the shell, which prevents spawning a
new one and effectively stops changes to `status-go-verison.json` file
taking effect.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-15 11:04:52 +02:00
Andrea Maria Piana 956bb813d4
Make cut release executable 2021-04-20 11:07:48 +02:00
Jakub Sokołowski 310a1ad5f1
drop scripts/tag-release.sh in favor of scripts/cut-release.sh
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-16 16:14:57 +02:00
Andrea Maria Piana a90d8a1439
Add release guide & script to cut release
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-16 16:12:37 +02:00
Jakub Sokołowski 8376fedb4b
make: add release-fdroid and fdroid-nix-dir targets
With these targets added we can simplify the format of the F-Droid YAML
metadata file which defines how to run `status-react` builds.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-03-02 12:38:34 +01:00
Roman Volosovskyi 767bd46bff
Allow non alphanumeric branch names in scripts/update-status-go.sh 2020-12-31 12:50:26 +02:00
Jakub Sokołowski 908b5f723c
nix: add support for INFURA_TOKEN var for Android build
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-10-08 17:55:24 +02:00
Jakub Sokołowski 085ae22be1
disable pipefail for update-status-go.sh
This caused a silent failure due to usage of grep matching.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-10-08 14:49:02 +02:00
Jakub Sokołowski bc12c90d2e
update-status-go: fix case where two matching refs exist
Before it was possible to break the format of `status-go-version.json`:
```
 > git ls-remote https://github.com/status-im/status-go v0.62.3.hotfix.3
59e6602405bfbcf8446d26aca9b8087e84529f8e    refs/heads/release/v0.62.3.hotfix.3
59e6602405bfbcf8446d26aca9b8087e84529f8e    refs/tags/v0.62.3.hotfix.3
```
Which would result in `commit-sha1` key being set to two commits insted of one.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-10-01 14:40:30 +02:00
Jakub Sokołowski 788d0d5cc5
add ANDROID_APK_SIGNED to make unsigned builds for F-Droid
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-07-29 10:12:38 +02:00
Jakub Sokołowski 0be5f5d8d0
nix: enable build-use-sandbox for Android
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-07-29 10:12:30 +02:00
Jakub Sokołowski 112132aa94
drop all desktop related files and references
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-07-08 10:26:51 +02:00
Jakub Sokołowski dbb4b52a70
nix: make secretsFile argument optional
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-06-22 16:33:56 +02:00
Jakub Sokołowski f2c96dcd3b
nix: add config defaults and temp keystore generation
Changes:
* Create `nix/config.nix` with `config` defaults
* Add `nix/tools/gradlePropParser.nix` for reading `gradle.properties`
* Add `nix/mobile/android/keystore.nix` for generating a keystore
* Load keystore generation in `nix/mobile/android/default.nix`
* Use generated keystore if it's not provided via `config`
* Add `-deststoretype pkcs12` in `scripts/generate-keystore.sh`
* Add `nix/lib/assertEnvVarSet.nix` for checking if env var is set

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-06-04 11:10:48 +02:00
Jakub Sokołowski 12e67ad6d2
nix: improve nix/scripts/node_modules.sh
Changes:
- MOAR functions so it's easier to follow
- Don't use /tmp, put the copied node_modules in repo root first
- Ignore more node_modules sub folders when checking for modifications
  - */unpacked_bin/clj-kondo
  - */scripts/.packager.env

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-06-02 16:26:19 +02:00
Jakub Sokołowski 2f65cedd2d
nix: replace grep and sed with AWK for parsing Gradle deps
The mess with regexes is hard to read and think about which is why it
had bugs with handling some Gradle formats.

It also lowers further the number of dependencies pulled from 785 to 744.

Changes:
- Added `gradle_parser.awk` script for getting dependencies from Gradle
- Changed the `deps.urls` file to contain full URLs to POMs
- Dropped the `deps.urls.old` part since `get_urls.sh` no longer exists
- Added `CLR` for learing line to `scripts/colors.sh`
- Wrote a new `nix/deps/gradle/README.md`
- Re-generated `nix/pkgs/go-maven-resolver/deps.nix`

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-05-25 19:34:56 +02:00
Jakub Sokołowski a96b35996f
drop scripts/copy-translations.sh as useless
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-05-14 09:46:22 +02:00
Jakub Sokołowski 42fb40476c
nix: reafactoring of status-go builds
Changes:
- Fixed `nix/status-go/desktop` builds
- Dropped nimbus wrapper for `status-go` for now
- Split `status-go` builds into subfolders: `mobile`, `desktop`
- Fixed shells for desktop builds: `linux`,`macos`,`windows`
- Added `make status-go-*` targets for building them
- Moved source management to `nix/status-go/source.nix`
- Moved `nix/status-go/build.nix` into `nix/status-go/mobile`
- Moved `nix/desktop/cmake/qtkeychain` to `nix/pkgs/qtkeychain-src`
- Moved `nix/desktop/linux/linuxdeployqt` to `nix/pkgs`
- Moved `nix/desktop/linux/appimagekit` to `nix/pkgs`
- Dropped `nix/tools/mkShell.nix` since it did almost nothing
- Dropped `nix/desktop/cmake/snorenotify` since it's broken
- Moved setup from `nix/tools/mkShell.nix` to `nix/shells.nix`
- Simplified `nix/mobile/ios/status-go-shell.nix`
- Simplified `nix/status-go/default.nix`
- Updated the `nix/DETAILS.md` and `nix/README.md`
- Moved known issues to `nix/KNOWN_ISSUES.md`
- Improved output of `nix/scripts/build.sh`

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-05-04 20:55:07 +02:00
yenda d5ef218584
use shadow-cljs
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Signed-off-by: yenda <eric@status.im>
2020-04-30 15:43:46 +02:00
Jakub Sokołowski 7b6b620ceb
nix: use overlays instead of packageOverrides
Changes:
- Add `nix/DETAILS.md` for more in-depth info
- Rename some of `config.status-im` variables
- Drop `env` argument for Android build
- Use `overlays` instead of `packageOverrides`
- Move the `pkgs` overlay to `nix/overlay.nix`
- Move `nix/status-go/utils.nix` to `nix/tools`
- Make `shell.nix` use the `shells.default` only
- Use `default.nix` as target for `nix/scripts/shell.sh`
- Make `nix/scripts/shell.sh` use `--attr` instead of `target`
- Drop the `target` argument in favour of using `--attr`
- Drop unnecessary `src` from `nix/mobile/ios/default.nix`
- Move `mkShell` and `mergeSh` under `lib`
- Move `patched-go` package to `nix/pkgs` directory
- Move `gomobile` package to `nix/pkgs` directory
- Move `ANDROID_ABI_SPLIT` to `config.status-im.android.abi-split`
- Move `ANDROID_ABI_INCLUDE to `config.status-im.android.abi-include`

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-04-29 11:53:33 +02:00
Jakub Sokołowski 1b43e4c16b
fix Android build on MacOS due to lack of OS var
changes:
- Drop use of /dev/stderr, doesn't work on MacOS
- Use uname -s instead of $OS which was removed
- Remove leading whitespace that fucks with Nix
- Check if `/etc/os-release` exists before reading it

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-04-14 18:31:52 +02:00
Jakub Sokołowski f75cb14588
refactor and simplify mkFilter, use more restrictive rules
This should reduce rebuilds of status-react-npm-gradle-modules

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-03-31 17:03:39 +02:00
Jakub Sokołowski eb5fe57e90
fix keystore generation, pass keystore vars to build
Changes:
* Drop --keep from nix/scripts/build.sh as it does nothing
* Allow scripts/release-android.sh take passwords from env
* Use env file in extra-sandbox-paths to pass keystore passwords
* Quote ever segment of Nix options to avoid parsing errors

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-03-16 12:11:00 +01:00
Jakub Sokołowski 4e567cf782
use status-react-jenkins as CI library
This PR extracts all the ci/*.groovy scripts into a separate private repo located at:
https://github.com/status-im/status-react-jenkins

The main reasons for a separate repo are:

* Hiding the internal details of our CI setup
* Hiding names of Jenkins credentials available in CI jobs
* Lowering attack surface for malicious external contributors
* Increasing focus on PRs related to CI setup

You can read more about how Jenkins pipeline shared libraries work here:
https://jenkins.io/doc/book/pipeline/shared-libraries/

In simple terms I've added the repo to the main Jenkins configuration in "Global Pipeline Libraries" section and load it using:

  library 'status-react-jenkins@master'

Which makes globally available all of the libraries defined in the `vars` directory of that repo.
This also eliminates the need for statements like `android = load 'ci/android.groovy'`.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-03-11 19:11:36 +01:00
Jakub Sokołowski de53581ef4
nix: don't generate keystore inside of Nix build
changes:
- Stops scripts/generate-keystore.sh runnig for every new TARGET=android shell
- Moves running scripts/generate-keystore.sh to keystore Makefile target
- Makes generate-keystore.sh accept STATUS_RELEASE_STORE_FILE as env variable
- Fixes error about missing lsof from start-react-native.sh
- Fixes error about unknown -keystore command in scripts/generate-keystore.sh
- Fixes getting OS_NAME without calling Nix shell
- Fixes getting TMP_BUILD_NUMBER without calling Nix shell
- Adds lsof used in start-react-native.sh to Android release Nix derivation
- Simplified how nix/scripts/build.sh appends the --keep flag
- Made use of colors.sh in more scripts

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-03-05 10:56:54 +01:00
Jakub Sokołowski 46bd2b2e4c
cleanup of shell scripts
Changes:
- Add missing lazy assignment for OS_NAME, fixes double Nix shells
- Moved `scripts/add-nix-gcroots.sh` to `nix/scripts/gcroots.sh`
- Moved Nix package manager setup to `nix/scripts/setup.sh`
- Created `nix/scripts/source.sh` to reuse in all Nix scripts
- Created `STARTING_GUIDE.md` with instructions for contributors
- Created `scripts/colors.sh` for definition of shell colors
- Removed `scripts/setup` in favor of `nix/scripts/setup.sh`
- Removed all of `scripts/lib` since it was useless

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-02-24 19:31:55 +01:00
Jakub Sokołowski f9c15be1d4
update-status-go: don't accept SHA1s, accept PR numbers
There was some confusion when given ref/tag did not exist.
Script would just use the value as commit SHA1 even if it was not one.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-02-05 14:57:35 +01:00
Jakub Sokołowski c91fe5fa82
ci: use full timestamp for iOS CFBundleVersion
And we have to trim the one used for Android.
For more details see:
>Warning: The greatest value Google Play allows for versionCode is 2100000000.
https://developer.android.com/studio/publish/versioning

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-01-23 19:42:19 +01:00
Pedro Pombeiro 2dce0ba861
Integrate status-go Nimbus build
Signed-off-by: Pedro Pombeiro <noreply@pedro.pombei.ro>
2020-01-21 08:48:04 +01:00
Jakub Sokołowski b31bebdbd9
nix: Upgrade 2.3.1 > 2.3.2
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-01-17 18:21:39 +01:00
Pedro Pombeiro d62cda4d66
nix: Add support for reading .env feature flags 2020-01-14 15:16:30 +01:00
Pedro Pombeiro e220ecbb0a
Cleanup
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2020-01-10 19:59:54 +01:00
Jakub Sokołowski aca703a011
major nix refactor
Changes:
- Adds a new `nix-gc` Makefile target for removing old packages
- Moves all `nix/*.sh` files to `nix/scripts/*.sh` to make things more tidy
- Renames `TARGET_OS` into `TARGET` and makes it effective only with `nix/scripts/shell.sh`
- Renames `target-os` Nix argument to just `target` and makes it effective only with `shell.nix`
- Drops `IN_CI_ENVIRONMENT` env variable which was useless
- Drops use of `target-os` argument outside of `shell.nix` (with few exceptions, but just in naming)
- `nix/platform.nix` has been made obsolete and removed
- Moves the definition of all major targets to `nix/targets.nix`
- Moves the definition of all major shells to `nix/shells.nix`
- Makes `default.nix` and `shell.nix` just thin wrappers around `nix/default.nix`
- `nix/nixpkgs-bootstrap.nix` has been moved to `nix/pkgs.nix`
- All package and tool overrides have been moved to `nix/pkgs.nix`
- Explicit passing of contents of `pkgs` has been removed in favor of `callPackage` doing it for us
- `nix/bootstrapped-shell.nix` has been moved to `nix/tools/mkShell.nix`
- A new `mergeSh` tool has been added to `pkgs` from `nix/tools/mergeSh.nix`
  - This tool is used to merge shells created using `mkShell`
- `mobile/targets/jsbundle.nix` has been moved to `mobile/android/jsbundle/default.nix`
- Moves `status-go` version sanitization to `nix/status-go/utils.nix`
- Renames version to rawVersion and versionName to cleanVersion in status-go derivation
- Ports nix/mobile/ios/install-pods-and-status-go.sh to Nix sub-shells
- Moves adjustment of `inotify/max_user_watches` out into `scripts/inotify_fix.sh`
- Makes iOS builds use the Nix version of Fastlane

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-12-12 18:51:21 +01:00
Jakub Sokołowski f330392ccf
narrow match with UID, print persistent matching processes
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-11-30 14:47:06 +01:00
Jakub Sokołowski 261b81c8a7
nix: upgrade: 2.2.1 > 2.3.1
also drop toolversion scripts and functions

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-11-26 16:30:22 +01:00
Pedro Pombeiro af7341447c
nix: Remove need to pass default values in `--arg config`
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-11-17 16:26:58 +01:00
Pedro Pombeiro f7384ae338
Add support for `STATUS_GO_SRC_OVERRIDE` env var
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-11-13 16:41:21 +01:00
Pedro Pombeiro a71500b312
nix: fix passing of env vars to release-android expression 2019-11-13 12:01:48 +01:00
Jakub Sokołowski 05ee65b6fa
don't use SHA1s as status-go version
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-11-06 21:46:02 +01:00
Jakub Sokołowski 971db3ea2e
include status-go params to set varsion and commit
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-11-04 21:12:30 +01:00
Pedro Pombeiro 8e90103e96
nix: Upgrade expected Xcode version to 11.1
Also:
- nix: Disable symlink store check
- Add comments to dependabot config file

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-10-15 18:40:26 +02:00
Volodymyr Kozieiev ace4b5a161
Desktop works with react-navigation v3
Signed-off-by: Volodymyr Kozieiev <vkjr.sp@gmail.com>
2019-10-02 10:19:37 +03:00
Jakub Sokołowski 973623f4c8
build multiple APKs for different architectures
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-09-30 13:59:42 +02:00
Pedro Pombeiro 8ace86f7da
Use sponge to avoid need for temp file
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-09-14 00:14:57 +02:00
Pedro Pombeiro 8c7323e126
Use flock to create exclusive locks on node_modules/
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-09-13 17:46:18 +02:00
Pedro Pombeiro 699ac8c56e
Upgrade desktop yarn.lock
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-09-13 11:35:45 +02:00
Pedro Pombeiro e3e8e218ad
Make root folder less busy
- Move `mobile_files` into `mobile/js_files`
- Move `desktop_files` into `desktop/js_files`

Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-09-12 16:54:12 +02:00