|
|
|
name: "Release : Executables"
|
|
|
|
|
|
|
|
on:
|
|
|
|
# Triggered manually
|
|
|
|
workflow_dispatch:
|
|
|
|
inputs:
|
|
|
|
tag:
|
|
|
|
description: "Tag name"
|
|
|
|
required: true
|
|
|
|
# Triggered by release-nocodb.yml
|
|
|
|
workflow_call:
|
|
|
|
inputs:
|
|
|
|
tag:
|
|
|
|
description: "Tag name"
|
|
|
|
required: true
|
|
|
|
type: string
|
|
|
|
secrets:
|
|
|
|
NC_GITHUB_TOKEN:
|
|
|
|
required: true
|
|
|
|
jobs:
|
|
|
|
build-executables:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
# Get the latest draft release for asset upload url
|
|
|
|
- uses: cardinalby/git-get-release-action@v1
|
|
|
|
id: get_release
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.NC_GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
latest: 1
|
|
|
|
draft: true
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Cache node modules
|
|
|
|
id: cache-npm
|
|
|
|
uses: actions/cache@v3
|
|
|
|
env:
|
|
|
|
cache-name: cache-node-modules
|
|
|
|
with:
|
|
|
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
|
|
|
path: ~/.npm
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
restore-keys: |
|
|
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
|
|
${{ runner.os }}-build-
|
|
|
|
${{ runner.os }}-
|
|
|
|
|
|
|
|
- name: Cache pkg modules
|
|
|
|
id: cache-pkg
|
|
|
|
uses: actions/cache@v3
|
|
|
|
env:
|
|
|
|
cache-name: cache-pkg
|
|
|
|
with:
|
|
|
|
# pkg cache files are stored in `~/.pkg-cache`
|
|
|
|
path: ~/.pkg-cache
|
|
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
|
|
restore-keys: |
|
|
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
|
|
${{ runner.os }}-build-
|
|
|
|
${{ runner.os }}-
|
|
|
|
|
|
|
|
# for building images for all platforms these libraries are required in Linux
|
|
|
|
- name: Install QEMU and ldid
|
|
|
|
run: |
|
|
|
|
sudo apt update
|
|
|
|
# Install qemu
|
|
|
|
sudo apt install qemu binfmt-support qemu-user-static
|
|
|
|
# install ldid
|
|
|
|
git clone https://github.com/daeken/ldid.git
|
|
|
|
cd ./ldid
|
|
|
|
./make.sh
|
|
|
|
sudo cp ./ldid /usr/local/bin
|
|
|
|
|
|
|
|
- uses: actions/setup-node@v3
|
|
|
|
with:
|
|
|
|
node-version: 16
|
|
|
|
|
|
|
|
- name : Install nocodb, other dependencies and build executables
|
|
|
|
run: |
|
|
|
|
cd ./scripts/pkg-executable
|
|
|
|
|
|
|
|
# Install nocodb version based on provided tag name
|
|
|
|
npm i -E nocodb@${{ github.event.inputs.tag || inputs.tag }}
|
|
|
|
|
|
|
|
# install npm dependendencies
|
|
|
|
npm i
|
|
|
|
|
|
|
|
# Copy sqlite binaries
|
|
|
|
rsync -rvzhP ./binaries/binding/ ./node_modules/sqlite3/lib/binding/
|
|
|
|
|
|
|
|
# clean up code to optimize size
|
|
|
|
npx modclean --patterns="default:*" --ignore="nc-lib-gui/**,dayjs/**,express-status-monitor/**,sqlite3/**" --run
|
|
|
|
|
|
|
|
# build executables
|
|
|
|
npm run build
|
|
|
|
|
|
|
|
ls ./dist
|
|
|
|
|
|
|
|
# Move macOS executables for signing
|
|
|
|
mkdir ./mac-dist
|
|
|
|
mv ./dist/Noco-macos-arm64 ./mac-dist/
|
|
|
|
mv ./dist/Noco-macos-x64 ./mac-dist/
|
|
|
|
|
|
|
|
- name: Upload win-arm64 build to asset
|
|
|
|
id: upload-release-asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/dist/Noco-win-arm64.exe
|
|
|
|
asset_name: Noco-win-arm64.exe
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
- name: Upload win-x64 build to asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/dist/Noco-win-x64.exe
|
|
|
|
asset_name: Noco-win-x64.exe
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
- name: Upload linux-arm64 build to asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/dist/Noco-linux-arm64
|
|
|
|
asset_name: Noco-linux-arm64
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
- name: Upload linux-x64 build to asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/dist/Noco-linux-x64
|
|
|
|
asset_name: Noco-linux-x64
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
- uses: actions/upload-artifact@master
|
|
|
|
with:
|
|
|
|
name: ${{ github.event.inputs.tag || inputs.tag }}
|
|
|
|
path: scripts/pkg-executable/mac-dist
|
|
|
|
retention-days: 1
|
|
|
|
outputs:
|
|
|
|
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
|
|
|
sign-mac-executables:
|
|
|
|
runs-on: macos-latest
|
|
|
|
needs: build-executables
|
|
|
|
steps:
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@master
|
|
|
|
with:
|
|
|
|
name: ${{ github.event.inputs.tag || inputs.tag }}
|
|
|
|
path: scripts/pkg-executable/mac-dist
|
|
|
|
|
|
|
|
- name: Sign macOS executables
|
|
|
|
run: |
|
|
|
|
/usr/bin/codesign --force -s - ./scripts/pkg-executable/mac-dist/Noco-macos-arm64 -v
|
|
|
|
/usr/bin/codesign --force -s - ./scripts/pkg-executable/mac-dist/Noco-macos-x64 -v
|
|
|
|
|
|
|
|
- uses: actions/upload-artifact@master
|
|
|
|
with:
|
|
|
|
name: ${{ github.event.inputs.tag || inputs.tag }}
|
|
|
|
path: scripts/pkg-executable/mac-dist
|
|
|
|
retention-days: 1
|
|
|
|
|
|
|
|
|
|
|
|
publish-mac-executables-and-homebrew:
|
|
|
|
needs: [sign-mac-executables,build-executables]
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/download-artifact@master
|
|
|
|
with:
|
|
|
|
name: ${{ github.event.inputs.tag || inputs.tag }}
|
|
|
|
path: scripts/pkg-executable/mac-dist
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
with:
|
|
|
|
path: 'homebrew-nocodb'
|
|
|
|
token: ${{ secrets.NC_GITHUB_TOKEN }}
|
|
|
|
repository: 'nocodb/homebrew-nocodb'
|
|
|
|
fetch-depth: 0
|
|
|
|
|
|
|
|
- name: Compress files and calculate checksum
|
|
|
|
run: |
|
|
|
|
cd ./scripts/pkg-executable
|
|
|
|
cp ./mac-dist/Noco-macos-x64 ./mac-dist/nocodb
|
|
|
|
tar -czf ./mac-dist/nocodb.tar.gz ./mac-dist/nocodb
|
|
|
|
rm ./mac-dist/nocodb
|
|
|
|
echo "::set-output name=CHECKSUM::$(shasum -a 256 ./mac-dist/nocodb.tar.gz | awk '{print $1}')"
|
|
|
|
id: compress
|
|
|
|
|
|
|
|
|
|
|
|
- name: Upload macos-x64 build to asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ needs.build-executables.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/mac-dist/Noco-macos-x64
|
|
|
|
asset_name: Noco-macos-x64
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Upload macos-arm64 build to asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ needs.build-executables.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/mac-dist/Noco-macos-arm64
|
|
|
|
asset_name: Noco-macos-arm64
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Upload macos compressed build(for homebrew) to asset
|
|
|
|
uses: actions/upload-release-asset@v1
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ needs.build-executables.outputs.upload_url }}
|
|
|
|
asset_path: ./scripts/pkg-executable/mac-dist/nocodb.tar.gz
|
|
|
|
asset_name: nocodb.tar.gz
|
|
|
|
asset_content_type: application/octet-stream
|
|
|
|
|
|
|
|
|
|
|
|
- name: Generate Homebrew Formula class and push
|
|
|
|
run: |
|
|
|
|
FORMULA_CLASS_STR=$(cat << EOF
|
|
|
|
class Nocodb < Formula
|
|
|
|
desc "NocoDB : Opensource smart spreadsheet"
|
|
|
|
homepage "https://github.com/nocodb/nocodb"
|
|
|
|
url "https://github.com/nocodb/nocodb/releases/download/${{ github.event.inputs.tag || inputs.tag }}/nocodb.tar.gz"
|
|
|
|
sha256 "${{ steps.compress.outputs.CHECKSUM }}"
|
|
|
|
license "MIT"
|
|
|
|
version "${{ github.event.inputs.tag || inputs.tag }}"
|
|
|
|
|
|
|
|
def install
|
|
|
|
bin.install "nocodb"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
EOF
|
|
|
|
)
|
|
|
|
|
|
|
|
cd ./homebrew-nocodb
|
|
|
|
|
|
|
|
printf "$FORMULA_CLASS_STR" > ./Formula/nocodb.rb
|
|
|
|
|
|
|
|
git config user.name 'github-actions[bot]'
|
|
|
|
git config user.email 'github-actions[bot]@users.noreply.github.com'
|
|
|
|
|
|
|
|
git commit ./Formula/nocodb.rb -m "Automatic publish"
|
|
|
|
git push
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|