Commit Graph

49 Commits

Author SHA1 Message Date
Jakub Sokołowski 8a1e1947ae ci: remove submodule vendor folders to save space
Currently the `nimbus-build-system` exists twice in each checked out
`status-desktop` reposity, and each contains the `Nim-csources-v1`
submodule, which weights close to 900MB each:
https://github.com/nim-lang/csources_v1

Because of this each `status-destop` clone takes up 4 GB of disk space
after the cleanup has run, which is not okay.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-03-01 13:07:05 +01:00
Jakub Sokołowski 246e8b2704 ci: add missing dependencies for Qts libqxcb.so
Without the following dependencies:
```
libxcb-shape0 libxcb-randr0 libxcb-icccm4 libxcb-image0
libxcb-keysyms1 libxcb-render-util0 libxcb-render0 libxcb-xinerama0
```
The `libqxcb.so` library is unusable:
```
 > ldd -v /opt/qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so
 > echo $?
1
 >
 > LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 /opt/qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so
zsh: segmentation fault (core dumped)  LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-02-03 11:39:51 -05:00
Jakub Sokołowski fc5dbf0d2c
ci: update build setup scripts to Qt 5.15.2
This needs to be synced with a Squish upgrade to match the QT version.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-02-01 23:15:56 +01:00
Alex Jbanca 6e6693a428 chore(Qt5.15): Update windows CI Qt install script
chore(Qt5.15): Update windows Qt install script
2023-01-31 19:30:24 +02:00
Igor Sirotin 6f7c1c6b6a feat(scripts): Added python password hash script for manual database access 2023-01-18 18:11:35 +03:00
Jakub Sokołowski 8b8f514dd4
ci: show output from xcrun_altool on notarize error
Right now we don't see what's actually happening:
```

!!! Notariztion Error
{"tool-version":"5.4211.13411","tool-path":"\/Applications\/Xcode.app\/Contents\/SharedFrameworks\/ContentDeliveryServices.framework\/Versions\/A\/Frameworks\/AppStoreService.framework","os-version":"12.3.1","product-errors":[{"message":"You supplied an invalid RequestUUID: null","userInfo":{"NSLocalizedFailureReason":"Apple Services operation failed.","NSLocalizedRecoverySuggestion":"You supplied an invalid RequestUUID: null","NSLocalizedDescription":"You supplied an invalid RequestUUID: null"},"code":1515}],"warnings":[{"message":"altool has been deprecated for notarization and starting in late 2023 will no longer be supported by the Apple notary service. You should start using notarytool to notarize your software.","userInfo":{"NSLocalizedDescription":"altool has been deprecated for notarization and starting in late 2023 will no longer be supported by the Apple notary service. You should start using notarytool to notarize your software."},"code":-1030}]}
make: *** [notarize-macos] Error 1
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-12-08 20:04:38 +01:00
Jakub Sokołowski 9f076ed70c
ci: refactor uitests to use multiple stages
Please do not run 20 different things in a single stage.
It makes debugging much harder than it needs to be, since now you can
see at a glance the startup of which container fails easily.

Changes:
- Starting of Ganache and Nim-Waku containers extracted to separate stages
- Cleanup of containers moved to `cleanup` step after tests are executed
- Many variables moved to `enrivonment` section for job and some stages
- The `throttle` effect narrowed down just to the `Tests` stage and not whole job
- RPC API is used to get the Multiaddress of Nim-Waku node instead of hardcoding key
- Removed no longer necessary `status-go` history node related files
- `Jenkinsfile.uitests` was renamed to `Jenkinsfile.e2e` to match CI job names

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-23 00:19:06 +01:00
Jonathan Rainville 6609ebda9e fix(windows): remove extra -m option from aqt install
As per the documentation of aqt, we just need one `-m` and list the modules after. It seems like the first -m is ignored otherwise.
2022-11-22 10:52:21 -05:00
Jakub Sokołowski ff9c678a1e
ci: extract git cleanup to separate script
It needs to be separate script, because once the submodules are broken
and the `variables.mk` file is not available from `nimbus-build-system`
then we cannot even call `make clean-git` successfully because it will
be caught by the `if` clause that checks for `variables.mk`.

Possible fix for issues with submodules not being updated in some
windows release builds.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-22 14:28:14 +01:00
Jakub Sokołowski c500eb9dc6
ci: lock windows Go version at 1.18.8
Fixes the following build error:
```
protocol\messenger.go:5957:6: missing function body
protocol\messenger.go:5957:16: syntax error: unexpected [, expecting (
protocol\messenger.go:5959:2: syntax error: non-declaration statement outside function body
note: module requires Go 1.18
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-04 15:43:26 +01:00
Lukáš Tinkl 38b6bdbfd3 chore: split English TS files
- qml_base.ts is created as a reference point for translators
- qml_en.ts is a minimal overlay translation, providing just the needed
  plural forms
- adjust the script to generate the above TS files
- fixup some leftover qsTrId() calls and the qmake file
2022-10-19 10:48:08 +02:00
Anthony Laibe 11ec999417 test: Add xvfb to the runtime dependencies 2022-08-08 15:36:32 +02:00
Anthony Laibe 3fad95ea0e test(@general): run squish test on ci 2022-08-05 10:11:42 +02:00
Anthony Laibe 4fc3e788b6 test(@ci): add scripts to build on ubuntu 2022-08-01 12:42:36 +02:00
Lukáš Tinkl 639a70b611 fix(l10n): fix strings extraction
- handle `SOURCES` recursively, rather than spelling all the paths out;
most of them were outdated and some still missing
- let the Python script skip existing translations (in case we need to
manually add plurals)
- updated qml_en.ts as a result of these changes

Stats:
```
Updating '../../ui/i18n/qml_en.ts'...
    Found 1703 source text(s) (109 new and 1594 already existing)
    Kept 35 obsolete entries
    Same-text heuristic provided 35 translation(s)
```
2022-07-21 15:57:59 -04:00
Jakub Sokołowski 9b8138a3e6
rename status-react to status-mobile
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-07-17 16:55:57 +02:00
Patryk Osmaczko 757a05900f chore(translations): update i18n docs
issue: #4544
2022-07-06 19:09:50 +02:00
Patryk Osmaczko 356f9c53db chore(translations): add update-en-ts.py 2022-07-06 19:09:50 +02:00
Stefan 9fe369a1e7 chore(Build): raise awareness of brew download failed 2022-06-27 10:10:29 +02:00
Richard Ramos 1c85bd38b3 chore: create script to bump status-go 2022-06-14 16:11:51 -04:00
Richard Ramos b95315ffd6 chore: add qtlottie to aqtinstall parameters 2022-03-23 16:43:50 -04:00
Jakub Sokołowski 7f058f3141 fetch-brew-bottle.sh: don't hardcode macOS Mojave
Otherwise the OpenSSL installation fails due to lack of `mojave` key:
```
 % brew info --json=v1 openssl@1.1 | jq '.[0].bottle.stable.files.mojave'
null
```
Because of changes in bottle definition:
6de466c3e5

Also added check for lack of URL and `-S` to `curl` to see errors.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-01-11 09:46:45 -05:00
Anthony Laibe d639219b94 feat(general): Force rebuild of status go at least once a day
fixes #4297
2021-12-20 10:07:34 +01:00
Michael Bradley, Jr f892b59ca1 chore: improve the bottles logic in Makefile
With these changes it will be easier to maintain, i.e. to add/remove bottles
just modify the `BOTTLES :=` list.

`brew update` is removed from `scripts/fetch-brew-bottle.sh` and instead done
in an [order-only
prerequisite](https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html). This
allows multiple bottles to be fetched in parallel (e.g. `make -j16`) without
overlapping invocations of `brew update` (which causes script failure).
2021-09-20 11:41:34 -04:00
Jakub Sokołowski 2df6def7f9 ci: add scripts/sign-linux-tarball.sh for GPG signing
Adds `scripts/sign-linux-file.sh` which expectes the following variables set:

* `LINUX_GPG_PRIVATE_KEY_FILE` - Path to the GPG export of private key.
* `LINUX_GPG_PRIVATE_KEY_PASS` - Password necessary to use the private key.

Given a file it creates a file with a `.asc` suffix containing the signature:
```
 > wget -q https://status-im-prs.ams3.digitaloceanspaces.com/StatusIm-210809-104514-156806-pr.tar.gz

 > tar xvf StatusIm-210809-104514-156806-pr.tar.gz
StatusIm-210809-104514-156806-pr.AppImage
StatusIm-210809-104514-156806-pr.AppImage.asc

 > gpg --verify StatusIm-210809-104514-156806-pr.AppImage.asc
gpg: assuming signed data in 'StatusIm-210809-104514-156806-pr.AppImage'
gpg: Signature made Mon 09 Aug 2021 12:54:49 PM CEST using RSA key ID E20B4DFD
gpg: Good signature from "Status.im Devel Signing (GPG key for signing Status.im development builds.) <devel@status.im>" [ultimate]
Primary key fingerprint: BBF0 5F92 536B ED19 30A9  FD44 009F B3BF E20B 4DFD
```

Issue: https://github.com/status-im/infra-ci/issues/25
Requires: https://github.com/status-im/status-jenkins-lib/pull/32

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-08-16 11:21:36 -04:00
B.Melnik f0b7eb6789 feat(widnows-installer): Add compilation windows installer build step
Closes: #2223
2021-07-19 13:46:19 -04:00
B.Melnik 116a6f3e0c WIP 2021-07-19 13:46:19 -04:00
Sale Djenic 1acbc76cc9 chore(@desktop/general): run translation script
All untranslated properties are translated now using translation scripts.
2021-07-19 12:27:45 -04:00
Jakub Sokołowski af2ec66e0c ci: implement MacOS notarization using xcrun altool
This introduces an automated MacOS notarization process for Jenkins CI.

The process involves:

* Uploading the signed DMG file to the notary service
* Checking periodically if the scanning process has completed
* Stapling the successful scan ticket to the DMG file

This is done by the `scripts/notarize-macos-pkg.sh` via the `make notarize-macos` target.
The whole process is described in more details in `docs/macos_notarization.md`.

Depends on: https://github.com/status-im/status-jenkins-lib/pull/27
Resolves: https://github.com/status-im/status-desktop/issues/2169

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-06-01 09:50:13 -04:00
Jakub Sokołowski 089ee7ee80 ci: scripts/sign-windows-bin.sh for signing Windows binaries
This introduces the `scripts/sign-windows-bin.sh` script which is used
by the `Makefile` to sign application libraries and executables. It also
implements the logic necessary to distinguish between different types of
builds: release and non-release builds.

Some other changes:

* Refactore the `Makefile` target that creates the Windows ZIP to make less verbose.
* Added `Microsoft.VisualStudio.Component.Windows10SDK.10240` to VisualStudio component
* Added `BUILD_TYPE` parameter to `Jenkinsfile`s for different platform builds

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-28 18:19:17 +02:00
Michael Bradley, Jr 7eda54a141 fix: don't run scripts/fetch-brew-bottle.sh in parallel
It's not supported to run `brew update` multiple times simultaenously. A better
fix for this can be implemented, but for now in the Makefile have target
`bottles/pcre` depend on target `bottles/openssl` so that they run serially
when `-jN` is passed to `make`.

I was originally going to change `brew update >/dev/null` to
`brew update >/dev/null || true` but decided the Makefile change provides a
better guarantee that simultaenous `brew` commands won't interfere with each
other. In the process, I revised some of the script's `echo` output just a bit.
2021-04-16 13:16:44 -05:00
Michael Bradley, Jr c5f74ac2c0 build: use GitHub credentials when downloading bottles for macOS
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-16 10:52:06 -05:00
Jonathan Rainville b277346490 chore: change translations to only translate complete languages 2021-02-18 15:23:58 -05:00
Jakub Sokołowski 9e98e7a14c ci: install qtwebengine with Qt on windows
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-11-02 15:05:49 -06:00
Jakub Sokołowski dc14bbe9ec refactor windows_build_setup.ps1 for easier re-usability
Now You can source the script with .(dot) and use individual functions.
This also makes it easier to use in `infra-ci` Ansible roles.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-10-06 20:05:31 +02:00
Jakub Sokołowski d882bde5aa add PowerShell script for build environment setup
This originally lived in the `infra-ci` repo but I think it makes more
sense to if to be in this repo, since here it can be changed by devs as
the project evolves.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-10-03 13:04:23 +02:00
Pascal Precht 7fe2d8696f fix(scripts): i18n script shouldn't break because of multi contexts 2020-09-14 14:39:27 -04:00
Jakub Sokołowski c1a5a286ee sign-macos-pkg.sh: don't restore Jenkins secret keychains
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-09-07 20:31:27 +02:00
Jakub Sokołowski 847ac9bc3c fix MacOS signing script to restore original keychain list
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-08-10 16:20:10 +02:00
Jonathan Rainville bdc625ea17 fix code review comments 2020-07-17 11:55:01 -04:00
Jonathan Rainville eb87259234 docs: update tldr for the translation scripts readme 2020-07-17 11:55:01 -04:00
Jonathan Rainville a8f1dd3eaa doc: update readme to show new commands 2020-07-17 11:55:01 -04:00
Jonathan Rainville ad8c1e455c chore: add translations for all languages 2020-07-17 11:55:01 -04:00
Jonathan Rainville 8860770356 feat: make the EN version just use the source translation 2020-07-17 11:55:01 -04:00
Jonathan Rainville 543123b5e7 feat: add basic xml translator 2020-07-17 11:55:01 -04:00
Jonathan Rainville 9c637fdd43 feat: show literal text instead of ids + script fixes 2020-07-08 12:37:41 -04:00
Jonathan Rainville 6967e0a537 feat: add readme on how to use the translation script 2020-07-08 12:37:41 -04:00
Jonathan Rainville ef6cbf9d70 feat: add translation script that transforms qstr to qstrid 2020-07-08 12:37:41 -04:00
Jakub Sokołowski 85a3557f1e add Jenkinsfiles and Dockerfile for CI
Changes:
- Adds `ci/Dockerfile` for creating `statusteam/nim-status-client-build:latest` used in builds
- Adds `ci/Jenkinsfile.linux` and `ci/Jenkinsfile.macos` for respective platforms
- Simplifies MacOS signing by adding `scripts/sign-macos-pkg.sh` script
- Makes `Makefile` use `scripts/sign-macos-pkg.sh` to make the DMG
- Makes `APPIMAGE` and `DMG` in `Makefile` modifiable by environment
- Adds `--passL:"-headerpad_max_install_names"` to `NIM_PARAMS` to fix MacOS signing issues

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-07-01 22:06:37 +02:00