Skip to content

Commit

Permalink
prebuild workflow updates
Browse files Browse the repository at this point in the history
  • Loading branch information
thejcfactor committed Jul 23, 2024
1 parent 212c9c6 commit 5ca15cd
Show file tree
Hide file tree
Showing 6 changed files with 287 additions and 5 deletions.
246 changes: 245 additions & 1 deletion .github/workflows/prebuilds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
with:
ref: 'ci_updates'
submodules: recursive
fetch-depth: 0
fetch-tags: true
Expand Down Expand Up @@ -77,6 +78,7 @@ jobs:
- name: Create sdist
id: build_sdist
run: |
ls -alh
rm -rf ./build
node -e "var x = JSON.parse(fs.readFileSync('package.json')); x.version = '${{ inputs.version }}'; fs.writeFileSync('package.json', JSON.stringify(x));"
node -e "var x = JSON.parse(fs.readFileSync('package-lock.json')); x.version = '${{ inputs.version }}'; fs.writeFileSync('package-lock.json', JSON.stringify(x));"
Expand All @@ -87,4 +89,246 @@ jobs:
retention-days: 1
name: couchnode-columnar-${{ inputs.version }}-sdist
path: |
./sdist/*.tgz
./sdist/*.tgz
- name: Set npm pack requirements
run: |
mkdir npmpack-reqs
cd npmpack-reqs
cp ../tsconfig.json .
cp -r ../lib .
cp ../.npmignore .
ls -alh
- uses: actions/upload-artifact@v4
with:
retention-days: 1
name: couchnode-columnar-${{ inputs.version }}-npmpack-reqs
path: |
./npmpack-reqs
linux_x86_64_prebuild:
runs-on: ubuntu-20.04
needs: sdist
steps:
- uses: actions/download-artifact@v4
with:
name: couchnode-columnar-${{ inputs.version }}-sdist
- uses: actions/download-artifact@v4
with:
name: couchnode-columnar-${{ inputs.version }}-npmpack-reqs
- name: Extract sdist source
run: |
ls -alh
tar -xvzf couchbase-columnar-$COUCHNODE_COLUMNAR_VERSION.tgz
cp -r package/** .
rm -rf package
env:
COUCHNODE_COLUMNAR_VERSION: ${{ inputs.version }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "18.x"
- name: Confirm Node version
run: node --version
- name: Install dependencies
run: |
npm install --ignore-scripts
- name: Build binary
run: |
npm run prebuild -- --use-boringssl
- name: Reduce prebuild size
run: |
cd build/Release
ls -alh
cp couchbase_impl.node couchbase_impl.orig.node
objcopy --strip-debug --strip-unneeded couchbase_impl.node
ls -alh
cd ../..
mv build/Release/couchbase_impl.node .
rm -rf build
mkdir -p build/Release
mv couchbase_impl.node build/Release
- name: Edit package.json
run: |
cat > packageJsonEdit.txt <<EOF
let pkgJson = JSON.parse(fs.readFileSync('package.json'))
const idx = pkgJson.files.indexOf('scripts/*.js')
pkgJson.files.splice(idx, 0, 'build/**/*')
fs.writeFileSync('package.json', JSON.stringify(pkgJson, null, 2))
EOF
node -e "$(tr '\n' ';' < packageJsonEdit.txt)"
- name: Create package
id: create_package
run: |
ls -alh
npm run prepare
npm pack
ls -alh
rm -rf node_modules
PKG_NAME=$(find . -name '*.tgz' | cut -c 3-)
mv $PKG_NAME $COUCHNODE_COLUMNAR_PKG
echo "package_name=${COUCHNODE_COLUMNAR_PKG}" >> "$GITHUB_OUTPUT"
mkdir output
mv $COUCHNODE_COLUMNAR_PKG output
env:
COUCHNODE_COLUMNAR_PKG: couchbase-coulumnar-${{ inputs.version }}-linux-x64-napi.tgz
- uses: actions/upload-artifact@v4
with:
retention-days: 1
name: ${{ steps.create_package.outputs.package_name }}
path: |
./output/${{ steps.create_package.outputs.package_name }}
macos_arm64_prebuild:
runs-on: macos-14
needs: sdist
steps:
- uses: actions/download-artifact@v4
with:
name: couchnode-columnar-${{ inputs.version }}-sdist
- uses: actions/download-artifact@v4
with:
name: couchnode-columnar-${{ inputs.version }}-npmpack-reqs
- name: Extract sdist source
run: |
ls -alh
tar -xvzf couchbase-columnar-$COUCHNODE_COLUMNAR_VERSION.tgz
cp -r package/** .
rm -rf package
env:
COUCHNODE_COLUMNAR_VERSION: ${{ inputs.version }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "18.x"
- name: Confirm Node version
run: node --version
- name: Install dependencies
run: |
npm install --ignore-scripts
- name: Build binary
run: |
npm run prebuild -- --use-boringssl
- name: Reduce prebuild size
run: |
cd build/Release
ls -alh
cp couchbase_impl.node couchbase_impl.orig.node
xcrun strip -Sx couchbase_impl.node
ls -alh
cd ../..
mv build/Release/couchbase_impl.node .
rm -rf build
mkdir -p build/Release
mv couchbase_impl.node build/Release
- name: Edit package.json
run: |
cat > packageJsonEdit.txt <<EOF
let pkgJson = JSON.parse(fs.readFileSync('package.json'))
const idx = pkgJson.files.indexOf('scripts/*.js')
pkgJson.files.splice(idx, 0, 'build/**/*')
fs.writeFileSync('package.json', JSON.stringify(pkgJson, null, 2))
EOF
node -e "$(tr '\n' ';' < packageJsonEdit.txt)"
- name: Create package
id: create_package
run: |
ls -alh
npm run prepare
npm pack
ls -alh
rm -rf node_modules
PKG_NAME=$(find . -name '*.tgz' | cut -c 3-)
mv $PKG_NAME $COUCHNODE_COLUMNAR_PKG
echo "package_name=${COUCHNODE_COLUMNAR_PKG}" >> "$GITHUB_OUTPUT"
mkdir output
mv $COUCHNODE_COLUMNAR_PKG output
env:
COUCHNODE_COLUMNAR_PKG: couchbase-coulumnar-${{ inputs.version }}-darwin-arm64-napi.tgz
- uses: actions/upload-artifact@v4
with:
retention-days: 1
name: ${{ steps.create_package.outputs.package_name }}
path: |
./output/${{ steps.create_package.outputs.package_name }}
macos_x86_64_prebuild:
runs-on: macos-13
needs: sdist
steps:
- uses: actions/download-artifact@v4
with:
name: couchnode-columnar-${{ inputs.version }}-sdist
- uses: actions/download-artifact@v4
with:
name: couchnode-columnar-${{ inputs.version }}-npmpack-reqs
- name: Extract sdist source
run: |
ls -alh
tar -xvzf couchbase-columnar-$COUCHNODE_COLUMNAR_VERSION.tgz
cp -r package/** .
rm -rf package
env:
COUCHNODE_COLUMNAR_VERSION: ${{ inputs.version }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "18.x"
- name: Confirm Node version
run: node --version
- name: Install dependencies
run: |
npm install --ignore-scripts
- name: Downgrade CMake
run: |
brew uninstall cmake
mkdir ~/Downloads/CMake
curl --silent --location --retry 3 "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-macos-universal.dmg" --output ~/Downloads/CMake/cmake-Darwin-x86_64.dmg
yes | PAGER=cat hdiutil attach -quiet -mountpoint /Volumes/cmake-Darwin-x86_64 ~/Downloads/CMake/cmake-Darwin-x86_64.dmg
cp -R /Volumes/cmake-Darwin-x86_64/CMake.app /Applications/
hdiutil detach /Volumes/cmake-Darwin-x86_64
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install=/usr/local/bin
- name: Build binary
run: |
npm run prebuild -- --use-boringssl
- name: Reduce prebuild size
run: |
cd build/Release
ls -alh
cp couchbase_impl.node couchbase_impl.orig.node
xcrun strip -Sx couchbase_impl.node
ls -alh
cd ../..
mv build/Release/couchbase_impl.node .
rm -rf build
mkdir -p build/Release
mv couchbase_impl.node build/Release
- name: Edit package.json
run: |
cat > packageJsonEdit.txt <<EOF
let pkgJson = JSON.parse(fs.readFileSync('package.json'))
const idx = pkgJson.files.indexOf('scripts/*.js')
pkgJson.files.splice(idx, 0, 'build/**/*')
fs.writeFileSync('package.json', JSON.stringify(pkgJson, null, 2))
EOF
node -e "$(tr '\n' ';' < packageJsonEdit.txt)"
- name: Create package
id: create_package
run: |
ls -alh
npm run prepare
npm pack
ls -alh
rm -rf node_modules
PKG_NAME=$(find . -name '*.tgz' | cut -c 3-)
mv $PKG_NAME $COUCHNODE_COLUMNAR_PKG
echo "package_name=${COUCHNODE_COLUMNAR_PKG}" >> "$GITHUB_OUTPUT"
mkdir output
mv $COUCHNODE_COLUMNAR_PKG output
env:
COUCHNODE_COLUMNAR_PKG: couchbase-coulumnar-${{ inputs.version }}-darwin-x64-napi.tgz
- uses: actions/upload-artifact@v4
with:
retention-days: 1
name: ${{ steps.create_package.outputs.package_name }}
path: |
./output/${{ steps.create_package.outputs.package_name }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ config.json
/deps/couchbase-cxx-cache
*.tar.gz
*.pem
!/lib/nonProdCertificates/*.pem

# Extra stuff
/dist/
2 changes: 1 addition & 1 deletion lib/certificates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export class Certificates {
*/
public static getNonprodCertificates(): string[] {
const basePath = path.resolve(path.dirname(__filename), '..')
const certPath = path.join(basePath, 'lib', 'nonprodCertificates')
const certPath = path.join(basePath, 'dist', 'nonprodCertificates')
const certificates: string[] = []
fs.readdirSync(certPath).forEach((fileName) => {
certificates.push(fs.readFileSync(path.join(certPath, fileName), 'utf-8'))
Expand Down
19 changes: 19 additions & 0 deletions lib/nonprodCertificates/nonprod.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDFTCCAf2gAwIBAgIRANguFcFZ7eVLTF2mnPqkkhYwDQYJKoZIhvcNAQELBQAw
JDESMBAGA1UECgwJQ291Y2hiYXNlMQ4wDAYDVQQLDAVDbG91ZDAeFw0xOTEwMTgx
NDUzMzRaFw0yOTEwMTgxNTUzMzRaMCQxEjAQBgNVBAoMCUNvdWNoYmFzZTEOMAwG
A1UECwwFQ2xvdWQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMoL2G
1yR4XKOL5KrAZbgJI11NkcooxqCSqoibr5nSM+GNARlou42XbopRhkLQlSMlmH7U
ZreI7xq2MqmCaQvP1jdS5al/GwuwAP+2kU2nz4IHzliCVV6YvYqNy0fygNpYky9/
wjCu32n8Ae0AZuxcsAzPUtJBvIIGHum08WlLYS3gNrYkfyds6LfvZvqMk703RL5X
Ny/RXWmbbBXAXh0chsavEK7EsDLI4t4WI2Iv8+lwS7Wo7Vh6NnEmJLPAAp7udNK4
U3nwjkL5p/yINROT7CxUE9x0IB2l2rZwZiJhgHCpee77J8QesDut+jZu38ZYY3le
PS38S81T6I6bSSgtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FLlocLdzgAeibrlCmEO4OH5Buf3vMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0B
AQsFAAOCAQEAkoVX5CJ7rGx2ALfzy5C7Z+tmEmrZ6jdHjDtw4XwWNhlrsgMuuboU
Y9XMinSSm1TVfvIz4ru82MVMRxq4v1tPwPdZabbzKYclHkwSMxK5BkyEKWzF1Hoq
UcinTaT68lVzkTc0D8T+gkRzwXIqxjML2ZdruD1foHNzCgeGHzKzdsjYqrnHv17b
J+f5tqoa5CKbnyWl3HP0k7r3HHQP0GQequoqXcL3XlERX3Ne20Chck9mftNnHhKw
Dby7ylZaP97sphqOZQ/W/gza7x1JYylrLXvjfdv3Nmu7oSMKO/2cDyWwcbVGkpbk
8JOQtFENWmr9u2S0cQfwoCSYBWaK0ofivA==
-----END CERTIFICATE-----
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@
"homepage": "http://www.couchbase.com/communities/nodejs",
"keywords": [
"couchbase",
"columnar",
"libcouchbase",
"memcached",
"nosql",
"json",
"document"
],
"main": "dist/couchbase.js",
"types": "dist/couchbase.d.ts",
"main": "dist/columnar.js",
"types": "dist/columnar.d.ts",
"license": "Apache-2.0",
"name": "couchbase-columnar",
"dependencies": {
Expand Down Expand Up @@ -64,6 +65,7 @@
"rebuild": "cmake-js rebuild && tsc",
"prebuild": "node ./scripts/buildPrebuild.js",
"prepare": "tsc",
"prepack": "node ./scripts/copyCertificates.js",
"help-prune": "node ./scripts/prune.js",
"build-docs": "typedoc",
"test": "ts-mocha test/*.test.*",
Expand All @@ -87,10 +89,10 @@
"README.md",
"BUILDING.md",
"columnar-sdk-nodejs-black-duck-manifest.yaml",
"lib/nonprodCertificates/*.pem",
"scripts/*.js",
"src/*.{c,h}pp",
"dist/*.{t,j}s",
"dist/nonProdCertificates/*.pem",
"tools/*.{py,js}",
"deps/couchbase-cxx-client/CMakeLists.txt",
"deps/couchbase-cxx-client/LICENSE.txt",
Expand Down
16 changes: 16 additions & 0 deletions scripts/copyCertificates.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const fs = require('fs')
const path = require('path')

CERTIFICATE_DIR = path.join(path.resolve(__dirname, '..'), 'lib', 'nonProdCertificates')
DIST_CERTIFICATE_DIR = path.join(path.resolve(__dirname, '..'), 'dist', 'nonProdCertificates')
let files = fs.readdirSync(CERTIFICATE_DIR)

if (files.length > 0 && !fs.existsSync(DIST_CERTIFICATE_DIR)) {
fs.mkdirSync(DIST_CERTIFICATE_DIR)
}

for (let i = 0; i < files.length; i++) {
if (fs.statSync(path.join(CERTIFICATE_DIR, files[i])).isFile()) {
fs.copyFileSync(path.join(CERTIFICATE_DIR, files[i]), path.join(DIST_CERTIFICATE_DIR, files[i]))
}
}

0 comments on commit 5ca15cd

Please sign in to comment.