6.4.1 #1041
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CoinSpace CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- '**' | |
tags-ignore: | |
- '**' | |
jobs: | |
release: | |
runs-on: ubuntu-22.04 | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Set app version | |
run: echo "VERSION=$(node -p -e "require('./web/package.json').version")" >> $GITHUB_ENV | |
- uses: ncipollo/release-action@v1 | |
with: | |
tag: v${{ env.VERSION }} | |
name: v${{ env.VERSION }} | |
draft: true | |
allowUpdates: true | |
omitBodyDuringUpdate: true | |
omitNameDuringUpdate: true | |
omitDraftDuringUpdate: true | |
body: | | |
* [Web Wallet](https://coin.space/wallet/) | |
* [Tor Wallet](http://coinspacezp5mmyuicbz2hoafbnduj4vzkttq3grn5mnwdue5t343zid.onion/) | |
* [iOS Application](https://apps.apple.com/app/coin-wallet-bitcoin-crypto/id980719434?platform=iphone) | |
* [Android Application](https://play.google.com/store/apps/details?id=com.coinspace.app) | |
* [Galaxy Store](https://galaxy.store/coinapp) | |
* [macOS Installer: Coin.Wallet.dmg](https://github.com/CoinSpace/CoinSpace/releases/download/v${{ env.VERSION }}/Coin.Wallet.dmg) | |
* [Microsoft Store](https://apps.microsoft.com/store/detail/9NBLGGH5PXJQ) | |
* [Mac App Store](https://apps.apple.com/app/coin-wallet-bitcoin-crypto/id980719434?platform=mac) | |
* [Linux Snap](https://snapcraft.io/coin) | |
lint: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
registry-url: https://npm.pkg.github.com/ | |
- env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_READ_TOKEN }} | |
run: | | |
npm --prefix web ci | |
npm --prefix server ci | |
npm --prefix electron ci | |
npm --prefix phonegap ci | |
- run: | | |
npm run --prefix web lint | |
npm run --prefix web lint:style | |
npm run --prefix server lint | |
npm run --prefix server lint:api | |
npm run --prefix electron lint | |
npm run --prefix phonegap lint | |
build: | |
needs: lint | |
environment: ${{ github.ref == 'refs/heads/master' && 'production' || 'development' }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos-13 | |
node: 20 | |
VITE_BUILD_TYPE: electron | |
VITE_PLATFORM: mac | |
VITE_DISTRIBUTION: mac | |
SENTRY_DSN_KEY: SENTRY_DSN_MAC | |
SENTRY_PROJECT: mac | |
- os: macos-13 | |
node: 20 | |
VITE_BUILD_TYPE: electron | |
VITE_PLATFORM: mac | |
VITE_DISTRIBUTION: mas | |
SENTRY_DSN_KEY: SENTRY_DSN_MAS | |
SENTRY_PROJECT: mas | |
- os: macos-13 | |
node: 20 | |
VITE_BUILD_TYPE: electron | |
VITE_PLATFORM: mac | |
VITE_DISTRIBUTION: mas-dev | |
SENTRY_DSN_KEY: SENTRY_DSN_MAS | |
SENTRY_PROJECT: mas | |
- os: ubuntu-22.04 | |
node: 20 | |
VITE_BUILD_TYPE: electron | |
VITE_PLATFORM: linux | |
VITE_DISTRIBUTION: snap | |
SENTRY_DSN_KEY: SENTRY_DSN_SNAP | |
SENTRY_PROJECT: linux | |
- os: windows-2019 | |
node: 20 | |
VITE_BUILD_TYPE: electron | |
VITE_PLATFORM: win | |
VITE_DISTRIBUTION: appx | |
SENTRY_DSN_KEY: SENTRY_DSN_WIN | |
SENTRY_PROJECT: win | |
- os: windows-2019 | |
node: 20 | |
VITE_BUILD_TYPE: electron | |
VITE_PLATFORM: win | |
VITE_DISTRIBUTION: appx-dev | |
SENTRY_DSN_KEY: SENTRY_DSN_WIN | |
SENTRY_PROJECT: win | |
- os: macos-14 | |
node: 20 | |
VITE_BUILD_TYPE: phonegap | |
VITE_PLATFORM: ios | |
VITE_DISTRIBUTION: ios | |
SENTRY_DSN_KEY: SENTRY_DSN_IOS | |
SENTRY_PROJECT: ios | |
- os: ubuntu-20.04 | |
node: 20 | |
VITE_BUILD_TYPE: phonegap | |
VITE_PLATFORM: android | |
VITE_DISTRIBUTION: android-play | |
SENTRY_DSN_KEY: SENTRY_DSN_ANDROID | |
SENTRY_PROJECT: android | |
- os: ubuntu-20.04 | |
node: 20 | |
VITE_BUILD_TYPE: phonegap | |
VITE_PLATFORM: android | |
VITE_DISTRIBUTION: android-galaxy | |
SENTRY_DSN_KEY: SENTRY_DSN_ANDROID | |
SENTRY_PROJECT: android | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
# https://github.com/electron/forge/issues/2807 | |
if: matrix.VITE_DISTRIBUTION == 'mac' | |
with: | |
python-version: '3.10' | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
registry-url: https://npm.pkg.github.com/ | |
- name: Install Node.js dependencies | |
env: | |
NODE_ENV: ci | |
VITE_BUILD_TYPE: ${{ matrix.VITE_BUILD_TYPE }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_READ_TOKEN }} | |
shell: bash | |
run: | | |
npm --prefix web ci | |
npm --prefix ${VITE_BUILD_TYPE} ci | |
- name: Install Snapcraft | |
if: ${{ matrix.VITE_DISTRIBUTION == 'snap' }} | |
uses: samuelmeuli/action-snapcraft@v2 | |
env: | |
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }} | |
- name: Install JDK 11 | |
if: ${{ matrix.VITE_DISTRIBUTION == 'android-play' || matrix.VITE_DISTRIBUTION == 'android-galaxy' }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 11 | |
- name: Install certificates & prepare for build | |
env: | |
VITE_DISTRIBUTION: ${{ matrix.VITE_DISTRIBUTION }} | |
CERTIFICATE_MAC: ${{ secrets.CERTIFICATE_MAC }} | |
CERTIFICATE_MAC_PASSWORD: ${{ secrets.CERTIFICATE_MAC_PASSWORD }} | |
CERTIFICATE_DISTRIBUTION: ${{ secrets.CERTIFICATE_DISTRIBUTION }} | |
CERTIFICATE_DISTRIBUTION_PASSWORD: ${{ secrets.CERTIFICATE_DISTRIBUTION_PASSWORD }} | |
PROVISIONING_DISTRIBUTION: ${{ secrets.PROVISIONING_DISTRIBUTION }} | |
PROVISIONING_DEVELOPMENT: ${{ secrets.PROVISIONING_DEVELOPMENT }} | |
PROVISIONING_IOS: ${{ secrets.PROVISIONING_IOS }} | |
PROVISIONING_IOS_WATCH_APP: ${{ secrets.PROVISIONING_IOS_WATCH_APP }} | |
PROVISIONING_IOS_WATCH_APP_EXTENSION: ${{ secrets.PROVISIONING_IOS_WATCH_APP_EXTENSION }} | |
GOOGLE_CLOUD_KEY: ${{ secrets.GOOGLE_CLOUD_KEY }} | |
ANDROID_RELEASE_KEYSTORE: ${{ secrets.ANDROID_RELEASE_KEYSTORE }} | |
ANDROID_GALAXY_RELEASE_KEYSTORE: ${{ secrets.ANDROID_GALAXY_RELEASE_KEYSTORE }} | |
CERTIFICATE_SELFSIGN_WIN: ${{ secrets.CERTIFICATE_SELFSIGN_WIN }} | |
shell: bash | |
run: | | |
echo "GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER"; | |
echo $GOOGLE_CLOUD_KEY | base64 --decode > gcloud.key.json; | |
if [[ "$VITE_DISTRIBUTION" == "mac" || "$VITE_DISTRIBUTION" == "mas" || "$VITE_DISTRIBUTION" == "mas-dev" ]]; then | |
echo $CERTIFICATE_MAC | base64 --decode > certificate.p12; | |
security create-keychain -p coinspace build.keychain; | |
security default-keychain -s build.keychain; | |
security unlock-keychain -p coinspace build.keychain; | |
security set-keychain-settings build.keychain; | |
security list-keychains -d user -s build.keychain; | |
security import certificate.p12 -k build.keychain -P $CERTIFICATE_MAC_PASSWORD -T /usr/bin/codesign -T /usr/bin/productbuild 2>&1 >/dev/null; | |
security set-key-partition-list -S apple-tool:,apple: -s -k coinspace build.keychain 2>&1 >/dev/null; | |
rm certificate.p12; | |
if [[ "$VITE_DISTRIBUTION" == "mas" ]]; then | |
echo $PROVISIONING_DISTRIBUTION | base64 --decode > electron/embedded.provisionprofile; | |
fi | |
if [[ "$VITE_DISTRIBUTION" == "mas-dev" ]]; then | |
echo $PROVISIONING_DEVELOPMENT | base64 --decode > electron/embedded.provisionprofile; | |
fi | |
elif [[ "$VITE_DISTRIBUTION" == "ios" ]]; then | |
echo $CERTIFICATE_DISTRIBUTION | base64 --decode > certificate.p12; | |
security create-keychain -p coinspace build.keychain; | |
security default-keychain -s build.keychain; | |
security unlock-keychain -p coinspace build.keychain; | |
security set-keychain-settings build.keychain; | |
security list-keychains -d user -s build.keychain; | |
security import certificate.p12 -k build.keychain -P $CERTIFICATE_DISTRIBUTION_PASSWORD -T /usr/bin/codesign -T /usr/bin/productbuild 2>&1 >/dev/null; | |
security set-key-partition-list -S apple-tool:,apple: -s -k coinspace build.keychain 2>&1 >/dev/null; | |
rm certificate.p12; | |
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles/ | |
echo $PROVISIONING_IOS | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/com.coinspace.wallet.mobileprovision; | |
echo $PROVISIONING_IOS_WATCH_APP | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/com.coinspace.wallet.watchapp.mobileprovision; | |
echo $PROVISIONING_IOS_WATCH_APP_EXTENSION | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/com.coinspace.wallet.watchapp.extension.mobileprovision; | |
elif [[ "$VITE_DISTRIBUTION" == "android-play" || "$VITE_DISTRIBUTION" == "android-galaxy" ]]; then | |
echo $ANDROID_RELEASE_KEYSTORE | base64 --decode > phonegap/release.keystore; | |
echo $ANDROID_GALAXY_RELEASE_KEYSTORE | base64 --decode > phonegap/release.galaxy.keystore; | |
echo "/usr/local/lib/android/sdk/build-tools/33.0.2" >> $GITHUB_PATH | |
elif [[ "$VITE_DISTRIBUTION" == "appx-dev" ]]; then | |
echo $CERTIFICATE_SELFSIGN_WIN | base64 --decode > electron/resources/certificate.pfx | |
elif [[ "$VITE_DISTRIBUTION" == "appx" ]]; then | |
sed -i 's/function signAppx (program) {/function signAppx (program) { return;/' electron/node_modules/electron-windows-store/lib/sign.js | |
sed -i 's/function makeCert (parametersOrPublisherName, certFilePath, program) {/function makeCert (parametersOrPublisherName, certFilePath, program) { return;/' electron/node_modules/electron-windows-store/lib/sign.js | |
fi | |
- name: Build app | |
env: | |
NODE_ENV: production | |
NODE_OPTIONS: --max-old-space-size=3575 | |
VITE_COMMIT: ${{ github.sha }} | |
VITE_BUILD_TYPE: ${{ matrix.VITE_BUILD_TYPE }} | |
VITE_PLATFORM: ${{ matrix.VITE_PLATFORM }} | |
VITE_DISTRIBUTION: ${{ matrix.VITE_DISTRIBUTION }} | |
VITE_SITE_URL: ${{ secrets.SITE_URL }} | |
VITE_SENTRY_DSN: ${{ secrets[matrix.SENTRY_DSN_KEY] }} | |
VITE_SENTRY_ENVIRONMENT: ${{ github.ref == 'refs/heads/master' && 'production' || 'development' }} | |
VITE_CHANGELLY_REF: ${{ secrets.CHANGELLY_REF }} | |
VITE_MOONPAY_API_KEY: ${{ secrets.MOONPAY_API_KEY }} | |
VITE_ZENDESK_APP_ID: ${{ secrets.ZENDESK_APP_ID }} | |
VITE_ZENDESK_CLIENT_ID: ${{ secrets.ZENDESK_CLIENT_ID }} | |
VITE_ZENDESK_URL: ${{ secrets.ZENDESK_URL }} | |
VITE_GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
SENTRY_PROJECT: ${{ matrix.SENTRY_PROJECT }} | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
APPLE_ID: ${{ secrets.APPLE_ID }} | |
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
GOOGLE_APPLICATION_CREDENTIALS: ${{ github.workspace }}/gcloud.key.json | |
GOOGLE_CLOUD_BUCKET: ${{ secrets.GOOGLE_CLOUD_BUCKET }} | |
CERTIFICATE_SELFSIGN_WIN_PASSWORD: ${{ secrets.CERTIFICATE_SELFSIGN_WIN_PASSWORD }} | |
APPX_IDENTITY: ${{ secrets.APPX_IDENTITY }} | |
APPX_PUBLISHER: ${{ secrets.APPX_PUBLISHER }} | |
APPX_PUBLISHER_DEV: ${{ secrets.APPX_PUBLISHER_DEV }} | |
APPX_PUBLISHER_NAME: ${{ secrets.APPX_PUBLISHER_NAME }} | |
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }} | |
shell: bash | |
run: | | |
npm --prefix web run i18n:ci | |
npm --prefix web run build | |
npm --prefix ${VITE_BUILD_TYPE} run build |