Commit Graph

32 Commits

Author SHA1 Message Date
Jakub Sokołowski 9e8796f161
feature(ci): set build description even if it fails
QA needs easier access to public URLs from DigitalOcean spaces, and when
this meta-job fails the URLs are buried within child jobs and hard to access.

This not only sets the description if build fails, it sets it after
every single child build finishes.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-04 12:17:16 +01:00
Jakub Sokołowski dd2b58a7f5
chore(ci): upgrade Jenkins library to 1.8.0
This version introduces a bunch of changes so I want to test them
separately.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-26 23:11:23 +02:00
Jakub Sokołowski cfd82ee094
feat(ci): trigger E2E from meta build for releases
The method of triggering new E2E builds from the Linux build makes sense
for PRs, but doesn't make as much sense for nightly or release builds.

By triggering it this way we will see the result as part of the whole
build that includes all platforms and all tests.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-26 22:11:41 +02:00
Sale Djenic f88c23dc7b refactor(@desktop/general): env variables sorted and CL args introduced
- Necessary env variables to build the app:
STATUS_BUILD_INFURA_TOKEN
STATUS_BUILD_INFURA_TOKEN_SECRET
STATUS_BUILD_POKT_TOKEN
STATUS_BUILD_OPENSEA_API_KEY
STATUS_BUILD_ALCHEMY_ETHEREUM_MAINNET_TOKEN
STATUS_BUILD_ALCHEMY_ETHEREUM_GOERLI_TOKEN
STATUS_BUILD_ALCHEMY_ARBITRUM_MAINNET_TOKEN
STATUS_BUILD_ALCHEMY_ARBITRUM_GOERLI_TOKEN
STATUS_BUILD_ALCHEMY_OPTIMISM_MAINNET_TOKEN
STATUS_BUILD_ALCHEMY_OPTIMISM_GOERLI_TOKEN

- The list of available env variables as well as CL arguments can be seen running
the app providing `--help` argument. All env vars are prefixed with `STATUS_RUNTIME_`.
2023-10-24 13:16:58 +02:00
Dario Gabriel Lipicar 92b2a209a2 ci: use new Alchemy API keys for Ethereum 2023-10-05 10:29:48 -03:00
Jakub Sokołowski 0067904404
ci: use new OpenSea API keys
They are split by both platform and build type.

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

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-09-29 16:32:59 +02:00
Anton Iakimov 2c50004275
ci: update jenkins lib 2023-08-15 17:38:58 +02:00
Anton Iakimov dcfebbcb9e
ci: switch altool to notarytool 2023-08-10 14:31:17 +02:00
Jakub Sokołowski 238a18b462 ci: pass RELEASE parameter to child jobs from parent
This is a possible fix for issues with `x86_64` app failures:
https://github.com/status-im/status-desktop/issues/11762

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-08-03 11:07:54 +03:00
Jakub Sokołowski 7f27ea593d
ci: fix use of release Infura key for E2E runs
Depends on: https://github.com/status-im/status-jenkins-lib/pull/71

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-08-01 18:16:53 +02:00
Jakub Sokołowski 9993685b5a
ci: add Alchemy credentials, update Infura
Was supposed to be done in:
https://github.com/status-im/status-desktop/pull/10338
But it was merged without those changes.

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

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-04-22 11:09:02 +02:00
Jakub Sokołowski 3013fb8faa
ci: run e2e tests for release and master builds
Useful for tracking down which commit introduced a breaking change.

I'm lowering `maxConcurrentTotal` limit for e2e parallel build since the
release builds on `ci.infra.status.im` do not share the same throttling
limits across Jenkins instances, so we can hit a licenses usage limit.

Also increasing number of builds to keep to 30.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-04-14 16:50:38 +02:00
Jakub Sokołowski 1f91bbc724
ci: fix typo in arch, add tests prefix to names
The symlinks are temporary to avoid issues in PRs that won't be rebased
right away. We can remove them later.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-04-07 17:40:34 +02: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
Jonathan Rainville 692d2ceee4 chore: up timeout time for release builds to 60min 2023-01-16 11:32:04 -05: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 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 09d5d2a99a ci: Discord notification for master build failrues
To make this not send 3 separate notifications for each platform we
build for I've created a special job just for building `master` branch:
https://ci.status.im/job/status-desktop/job/master/

For more details see:
https://plugins.jenkins.io/discord-notifier/

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-16 10:24:54 +02:00
Anthony Laibe 03b4bb0511 feat(@wallet): Add opensea api key 2022-02-16 10:29:00 +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
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
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