Commit Graph

44 Commits

Author SHA1 Message Date
Jonathan Rainville f6c1b038a2 fix(windows): add env paths to point to Qt5.15 when building 2023-04-07 11:22:39 -04:00
Jakub Sokołowski 349c83347d
ci: allow running MacOS builds on M1 Macs
This depends on installing Qt via Brew, but that creates a version mismatch,
since it's 5.15.8 and not 5.15.2, which is not optimal but works for now.

In the long term we should probably look into using Nix, or maybe aqt
will support M1 Macs, but this is not great.

Depends on:
- https://github.com/status-im/infra-ci/commit/54408b41
- https://github.com/status-im/infra-ci/commit/39d4fdef

Resolves: https://github.com/status-im/status-desktop/issues/9984

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-04-07 14:25:34 +02:00
Anthony Laibe 7d9a6f5a71 feat(@wallet): add pokt network + fallbark 2023-02-28 09:12:05 +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
Jakub Sokołowski 5f36d4f99f
ci: fix name of e2e test jobs in gh comments
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-23 20:04:25 +01:00
Jakub Sokołowski 4b2f2c32ad
ci: separate buckets for mobile and desktop builds
Possible fix for slow upload speeds and failures caused by most probably
hitting per-bucket rate limits of DigitalOcean:

>- 500 total operations per second to any individual bucket.
>- 300 combined PUT, POST, COPY, DELETE, and LIST operations per second
>  to any individual Space. We may further limit LIST operations if
>  necessary under periods of high load.

https://docs.digitalocean.com/products/spaces/details/limits/#rate-limits

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

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-22 17:32:53 +01: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
Anthony Laibe 245f3a7266 fix(@ci): update windows ci timeout for build 2022-11-16 09:31:30 -05:00
Jakub Sokołowski 6fa84fb221 ci: add make update to for other platforms
This was added to fix some build issues to Linux:
https://github.com/status-im/status-desktop/pull/8233

But other 2 platforms also have had the cleanup stage change which could
have cause these submodules update issues.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-14 16:03:18 -05:00
Jakub Sokołowski 38f0973dc3
ci: use git clean instead of cleanWs() function
This is a continuation of attempts to fix provlems with Windows CI hosts
getting into a broken state due to `.git` directory becoming a file for
random submodules for unknown reason.

Instead of relying on Jenkins functionality of `cleanWs()` function
provided by the [Workspace Cleanup Plugin](https://plugins.jenkins.io/ws-cleanup)
we use Git which should be more reliable, and possibly also speed up the
initial checkout of the repo and submodules.

A nice side-effect is that the repo checkout on all builds after the first
one takes ~1 minute instead of ~5 minutes.

Previous issues:
- https://github.com/status-im/status-desktop/pull/7968
- https://github.com/status-im/status-desktop/pull/8046

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-06 20:20:54 +01:00
Jakub Sokołowski b5e317db4d
ci: add deleteDirs:true for cleanWs to fix cleanup
This is a continuation of a fix done in:
https://github.com/status-im/status-desktop/pull/7968

This adds `deleteDirs` option to delete the whole workspace:

>When deferred wipeout is disabled, the old implementation of
>filesystem content deletion is used. If you want the same
>behavior as with deferred wipeout, you have to set the plugin
>attribute `deleteDirs` to true as well.

https://github.com/jenkinsci/ws-cleanup-plugin#deferred-wipeout

Because otherwise the `vendor` folder remains and causes
issues when `.git` is a file.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-10-26 13:45:49 +02:00
Jakub Sokołowski 4f60c31282
ci: use cleanup instead of always step in post steps
Simply appropriate.
https://www.jenkins.io/doc/book/pipeline/syntax/#post

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-10-26 13:45:48 +02:00
Jakub Sokołowski e11d522e8e
ci: disable deferred wipeout for Windows
A potential partial fix found for an issue found in:
https://github.com/status-im/status-desktop/pull/7789

Where an incomplete broken checkout of a `vendor` module which crated a
`.git` file instead of a directory in `vendor/nimPNG` caused the error:
```
 $ git submodule update --init --recursive vendor/nimPNG
fatal: Needed a single revision
Unable to find current revision in submodule path '../nimPNG'
```
Which then was not correctly cleaned up and in turn caused error:
```
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
Perhaps you forgot to surround the code with a step that provides this, such as: node, dockerNode
...
```
The last known successful CI build for that PR showed in logs:
```
00:05:13  [WS-CLEANUP] Deleting project workspace...
00:05:13  [WS-CLEANUP] Deferred wipeout is used...
00:05:13  [WS-CLEANUP] done
```
Which means the `Workspace Cleanup` plugin uses the `Resource Disposer`
plugin to wipe the workspaace in the background, which could potentially fail:
https://plugins.jenkins.io/ws-cleanup/#plugin-content-deferred-wipeout

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-10-20 23:23:34 +02:00
Jakub Sokołowski 8c457a2495
ci: abort old PR builds to make queue shorter
In most cases developers only care about the most recent version.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-21 12:18:15 +02:00
Jakub Sokołowski 83c066f517
ci: fix upload speeds on Windows
By using `s3cmd` through PowerShell instead of Git Bash we improve
upload speeds on Windows slightly, as described here:
https://github.com/status-im/infra-ci/issues/40

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-15 11:41:12 +02:00
Jonathan Rainville 7544bd6fb5
fix: change gateway and remove old code to decode the hash
Fixes:
- https://github.com/status-im/status-desktop/issues/6964
Depends on:
- https://github.com/status-im/status-go/pull/2795
- https://github.com/status-im/status-jenkins-lib/pull/44

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-26 19:47:02 +02:00
Jakub Sokołowski ce1436ac15 ci: remove caching of dependencies
Upgrade of Jenkins to `2.343` has introduced a security fix that breaks
caching plugin when it's configured to store cache on Master host:
https://issues.jenkins.io/browse/JENKINS-67173

Sine the [Caching plugin](https://plugins.jenkins.io/jobcacher/) hasn't
been upgraded in 5 years the only good temporary workaround is just drop
caching of dependencies like Nim compiler entirely.

In the future we can try some other caching methods.

Related: https://github.com/status-im/nimbus-eth2/pull/3594

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-04-15 12:45:27 +02:00
Anthony Laibe 03b4bb0511 feat(@wallet): Add opensea api key 2022-02-16 10:29:00 +01:00
Jakub Sokołowski 2689a08ebb ci: add VERBOSE parameter to change build verbosity
This depends on the `V` paramerter in `nimbus-build-system`:
https://github.com/status-im/nimbus-build-system/blob/25a4c270/README.md#L54-L61

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-02-09 13:05:32 +01:00
Jakub Sokołowski 0d04deb2ad ci: drop unused BUILD_TYPE, add useful RELEASE param
It appears this was some leftover from ancient times and wasn't being used.

On the other hand the `RELEASE` environment variable controls if Nim builds
of the client binary include debug symbols:
ba7a6d5d34/Makefile (L177-L184)

The shorthand `?:` symbol means that if this is changed for a given job it stays changed.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-02-09 13:05:32 +01:00
Jakub Sokołowski 145652d2d0 ci: upgrade library and use of pkgFilename()
Depends on: https://github.com/status-im/status-jenkins-lib/pull/36

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-29 10:19:15 +02:00
Andrei Smirnov ca11ae62b8 Build exe and 7z at one make call 2021-09-16 16:50:28 -04:00
Andrei Smirnov 691795c644 Testing changes suggested in PR 2021-09-16 16:50:28 -04:00
Andrei Smirnov e6a7d25e7b Addressed PR feedback 2021-09-16 16:50:28 -04:00
Andrei Smirnov d4da9b75f0 feat(@desktop/windows): produce 7z archive when packaging 2021-09-16 16:50:28 -04:00
Jakub Sokołowski 98f2a68209
ci: fix Jenkinsfile library enties to use tags instead of a branch
Again we merged a PR before the `status-jenkins-lib` PR was merged:
https://github.com/status-im/status-desktop/pull/3185

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-08-19 15:16:54 +02: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
Jakub Sokołowski d6266384b7 ci: fix JSON parsing in release process
Fixes:
```
Caused: java.io.NotSerializableException: groovy.json.internal.LazyMap
```
https://ci.status.im/job/status-desktop/job/release/job/release%252F0.1.0-beta.11/2/

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-07-28 10:15:08 +02:00
B.Melnik 0def782841 fix: wrong tag to jenkins lib and make parameter 2021-07-20 10:22:21 -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 a1a2f2f4e2 Remove it: add V=1 option for tests 2021-07-19 13:46:19 -04:00
Jakub Sokołowski 6a5b6e3593 ci: do no delete non-draft releases
We identified this issue in status-desktop release from branch
`release/0.1.0-beta.10` which had old version in VERSION file.
https://ci.status.im/job/status-desktop/job/release/job/release%252F0.1.0-beta.10/

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

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-06-07 10:18:01 -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
Jakub Sokołowski a308851f10 ci: bump jenkins lib to make release filenames nicer
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-22 12:01:42 -04:00
Jakub Sokołowski 655097e2a2 ci: add ability to create draft GitHub releases
This adds a `Publish` stage to the combined `Jenkinsfile` which when the
`PUBLISH` parameters is true pushes a __draft__ release to GitHub.
The job remembers the last value of `PUBLISH` parameter selected.

The release uses the contents of the `VERSION` file at the root of the
repo as the name for the release, and leaves the contents to be filled
in by whoever will approve the release.

The automation overwrites - or to be exact, deletes and recreates - the
release, so releated builds for the same release will simply re-create
it. All the built artifacts are included in the release.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-20 12:53:43 -04:00
Jakub Sokołowski 0d136d8879 ci: add a combined Jenkinsfile for releases
This is part of a general restructuring in layout of Jenkins job folders
before we can properly introduce Release signing and notarization.
We need this to distinguish between pr/dev builds and release ones to
avoid signing the dev builds with a release certificate.

The meta job managed with `ci/Jenkinsfile.combined` runs a job for all 3
platforms and currently is quite basic, but in the future can be
extended to include - like the mobile one - updating the nightlies page,
or publishing draft GitHub releases.

The addition of `make check-pkg-target-*` steps to other `Jenkinsfile`s
is necessary because the sub-jobs under `platforms` have no option for
checking out Git submodules at the beginning, so I'm making use of how
the `Makefile` works and triggering that with a target that doesn't do much.

Example job:
https://ci.status.im/job/status-desktop/job/release/job/ci-meta-release-job/

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-14 15:36:00 -04:00
Jakub Sokołowski 06f24e90a2 ci: upgrade status-react-jenkins to 1.2.11
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-04-14 15:36:00 -04:00
Jakub Sokołowski cc6bf79d8c ci: lower number of artifacts kept to 3
Desktop builds are taking up a ridiculous amount of space.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-03-26 09:49:10 +01:00
Jakub Sokołowski 6b3f9a31c2 lower number of artifacts to keep in CI to 10
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-11-24 21:00:52 +01:00
Jakub Sokołowski 4f81032f5e ci: provide INFURA_TOKEN to builds
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-11-05 11:19:13 -05:00
Jakub Sokołowski ef4c84afe1 ci: drop running make update, CI already fetches submodules
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-09-29 15:11:27 +02:00
Jakub Sokołowski 8717a86ff8 ci: upgrade jenkins library to v1.2.4
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-09-29 15:11:27 +02:00
Jakub Sokołowski 339afac117 ci: add result URL to build description
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-09-29 15:11:27 +02:00
Jakub Sokołowski e61912a14d ci: add Jenkinsfile.windows
The host used to run this build is currently configured using:
https://github.com/status-im/infra-ci/blob/dda93d9e/files/windows_setup_script.ps1
https://github.com/status-im/infra-ci/blob/dda93d9e/files/windows_startup_script.ps1

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-09-29 15:11:27 +02:00