mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
This reduces glibc version requirement and makes sure it does not increase as Ubuntu version on CI runners is updated.
230 lines
7.0 KiB
YAML
230 lines
7.0 KiB
YAML
name: "node.js build"
|
|
on:
|
|
pull_request:
|
|
push:
|
|
tags:
|
|
- "*"
|
|
- "!py-*"
|
|
|
|
jobs:
|
|
prebuild:
|
|
name: Prebuild
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [macos-latest, windows-latest]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
- name: System info
|
|
run: |
|
|
rustc -vV
|
|
rustup -vV
|
|
cargo -vV
|
|
npm --version
|
|
node --version
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.APPDATA }}/npm-cache
|
|
~/.npm
|
|
key: ${{ matrix.os }}-node-${{ hashFiles('**/package.json') }}
|
|
|
|
- name: Cache cargo index
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/
|
|
~/.cargo/git
|
|
target
|
|
key: ${{ matrix.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}-2
|
|
|
|
- name: Install dependencies & build
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
working-directory: node
|
|
run: npm install --verbose
|
|
|
|
- name: Build Prebuild
|
|
working-directory: node
|
|
run: |
|
|
npm run prebuildify
|
|
tar -zcvf "${{ matrix.os }}.tar.gz" -C prebuilds .
|
|
|
|
- name: Upload Prebuild
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ matrix.os }}
|
|
path: node/${{ matrix.os }}.tar.gz
|
|
|
|
prebuild-linux:
|
|
name: Prebuild Linux
|
|
runs-on: ubuntu-latest
|
|
container: debian:10
|
|
steps:
|
|
# Working directory is owned by 1001:1001 by default.
|
|
# Change it to our user.
|
|
- name: Change working directory owner
|
|
run: chown root:root .
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "16"
|
|
- run: apt-get update
|
|
|
|
# Python is needed for node-gyp
|
|
- name: Install curl, python and compilers
|
|
run: apt-get install -y curl build-essential python3
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
- name: System info
|
|
run: |
|
|
rustc -vV
|
|
rustup -vV
|
|
cargo -vV
|
|
npm --version
|
|
node --version
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.APPDATA }}/npm-cache
|
|
~/.npm
|
|
key: ${{ matrix.os }}-node-${{ hashFiles('**/package.json') }}
|
|
|
|
- name: Cache cargo index
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/
|
|
~/.cargo/git
|
|
target
|
|
key: ${{ matrix.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}-2
|
|
|
|
- name: Install dependencies & build
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
working-directory: node
|
|
run: npm install --verbose
|
|
|
|
- name: Build Prebuild
|
|
working-directory: node
|
|
run: |
|
|
npm run prebuildify
|
|
tar -zcvf "linux.tar.gz" -C prebuilds .
|
|
|
|
- name: Upload Prebuild
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: linux
|
|
path: node/linux.tar.gz
|
|
|
|
pack-module:
|
|
needs: [prebuild, prebuild-linux]
|
|
name: Package deltachat-node and upload to download.delta.chat
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install tree
|
|
run: sudo apt install tree
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: "16"
|
|
- name: Get tag
|
|
id: tag
|
|
uses: dawidd6/action-get-tag@v1
|
|
continue-on-error: true
|
|
- name: Get Pull Request ID
|
|
id: prepare
|
|
run: |
|
|
tag=${{ steps.tag.outputs.tag }}
|
|
if [ -z "$tag" ]; then
|
|
node -e "console.log('DELTACHAT_NODE_TAR_GZ=deltachat-node-' + '${{ github.ref }}'.split('/')[2] + '.tar.gz')" >> $GITHUB_ENV
|
|
else
|
|
echo "DELTACHAT_NODE_TAR_GZ=deltachat-node-${{ steps.tag.outputs.tag }}.tar.gz" >> $GITHUB_ENV
|
|
echo "No preview will be uploaded this time, but the $tag release"
|
|
fi
|
|
- name: System info
|
|
run: |
|
|
rustc -vV
|
|
rustup -vV
|
|
cargo -vV
|
|
npm --version
|
|
node --version
|
|
echo $DELTACHAT_NODE_TAR_GZ
|
|
- name: Download Linux prebuild
|
|
uses: actions/download-artifact@v1
|
|
with:
|
|
name: linux
|
|
- name: Download macOS prebuild
|
|
uses: actions/download-artifact@v1
|
|
with:
|
|
name: macos-latest
|
|
- name: Download Windows prebuild
|
|
uses: actions/download-artifact@v1
|
|
with:
|
|
name: windows-latest
|
|
- shell: bash
|
|
run: |
|
|
mkdir node/prebuilds
|
|
tar -xvzf linux/linux.tar.gz -C node/prebuilds
|
|
tar -xvzf macos-latest/macos-latest.tar.gz -C node/prebuilds
|
|
tar -xvzf windows-latest/windows-latest.tar.gz -C node/prebuilds
|
|
tree node/prebuilds
|
|
rm -rf linux macos-latest windows-latest
|
|
- name: Install dependencies without running scripts
|
|
run: |
|
|
npm install --ignore-scripts
|
|
- name: Build constants
|
|
run: |
|
|
npm run build:core:constants
|
|
- name: Build TypeScript part
|
|
run: |
|
|
npm run build:bindings:ts
|
|
- name: Package
|
|
shell: bash
|
|
run: |
|
|
mv node/README.md README.md
|
|
npm pack .
|
|
ls -lah
|
|
mv $(find deltachat-node-*) $DELTACHAT_NODE_TAR_GZ
|
|
- name: Upload prebuild
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: deltachat-node.tgz
|
|
path: ${{ env.DELTACHAT_NODE_TAR_GZ }}
|
|
# Upload to download.delta.chat/node/preview/
|
|
- name: Upload deltachat-node preview to download.delta.chat/node/preview/
|
|
if: ${{ ! steps.tag.outputs.tag }}
|
|
id: upload-preview
|
|
shell: bash
|
|
run: |
|
|
echo -e "${{ secrets.SSH_KEY }}" >__TEMP_INPUT_KEY_FILE
|
|
chmod 600 __TEMP_INPUT_KEY_FILE
|
|
scp -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE -P "22" -r $DELTACHAT_NODE_TAR_GZ "${{ secrets.USERNAME }}"@"download.delta.chat":"/var/www/html/download/node/preview/"
|
|
continue-on-error: true
|
|
- name: Post links to details
|
|
if: steps.upload-preview.outcome == 'success'
|
|
run: node ./node/scripts/postLinksToDetails.js
|
|
env:
|
|
URL: preview/${{ env.DELTACHAT_NODE_TAR_GZ }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# Upload to download.delta.chat/node/
|
|
- name: Upload deltachat-node build to download.delta.chat/node/
|
|
if: ${{ steps.tag.outputs.tag }}
|
|
id: upload
|
|
shell: bash
|
|
run: |
|
|
echo -e "${{ secrets.SSH_KEY }}" >__TEMP_INPUT_KEY_FILE
|
|
chmod 600 __TEMP_INPUT_KEY_FILE
|
|
scp -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE -P "22" -r $DELTACHAT_NODE_TAR_GZ "${{ secrets.USERNAME }}"@"download.delta.chat":"/var/www/html/download/node/"
|