Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: Publish cohort SDK NPSs with bundled rust src #85

Merged
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ jobs:
- run: rustup component add rustfmt clippy
- name: cargo build
run: cargo build --release
- run: scripts/pre-commit-checks.sh
- run: scripts/pre-commit-checks.sh
4 changes: 0 additions & 4 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,3 @@ jobs:
uses: ./.github/workflows/build.yml
coverage:
uses: ./.github/workflows/coverage.yml




120 changes: 120 additions & 0 deletions .github/workflows/npm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: cohort_sdk_js
fmarek-kindred marked this conversation as resolved.
Show resolved Hide resolved
on:
workflow_call:
#push:
env:
DEBUG: "napi:*"
OPENSSL_DIR: /usr/local/Cellar/[email protected]/1.1.1w
SASL2_DIR: /usr/local/Cellar/cyrus-sasl/2.1.28_2
LDFLAGS: "-L/usr/local/Cellar/[email protected]/1.1.1w/lib -L/usr/local/opt/cyrus-sasl/lib"
CPPFLAGS: "-I/usr/local/Cellar/[email protected]/1.1.1w/include -I/usr/local/opt/cyrus-sasl/include"
jobs:
npm:
strategy:
fail-fast: false
matrix:
settings:
- host: macos-latest
target: x86_64-apple-darwin
jsPackageHome: packages/cohort_sdk_js
finalPackageName: packages/cohort_sdk_js/cohort_sdk_js.darwin-x64.node
customiseHostCommand: echo 'No customizations are needed'
buildCommand: npm run build -- --target x86_64-apple-darwin

- host: macos-latest
target: aarch64-apple-darwin
jsPackageHome: packages/cohort_sdk_js
finalPackageName: packages/cohort_sdk_js/cohort_sdk_js.darwin-arm64.node
customiseHostCommand: |-
touch ~/.cargo/config
cat <<EOT >> ~/.cargo/config
[target.aarch64-apple-darwin]
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
EOT
echo "~/.cargo/config"
cat ~/.cargo/config
buildCommand: |-
npm run build -- --target aarch64-apple-darwin

- host: windows-latest
target: x86_64-pc-windows-msvc
jsPackageHome: packages\\cohort_sdk_js
finalPackageName: packages\cohort_sdk_js\cohort_sdk_js.*.node
customiseHostCommand: ECHO 'No customizations are needed'
# customiseHostCommand: |-
# choco install openssl --version=1.1.1.2100
# ECHO "C:\Program Files\OpenSSL\="
# ls -l "C:\\Program Files\\OpenSSL"
# setx OPENSSL_DIR "C:\\Program Files\\OpenSSL"
buildCommand: npm run build -- --target x86_64-pc-windows-msvc

- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
jsPackageHome: packages/cohort_sdk_js
finalPackageName: packages/cohort_sdk_js/cohort_sdk_js.linux-x64-gnu.node
customiseHostCommand: sudo apt-get update -y && sudo apt-get install -y libsasl2-dev
buildCommand: npm run build -- --target x86_64-unknown-linux-gnu

name: stable - ${{ matrix.settings.target }} - node@16
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
check-latest: true

- name: Install
uses: actions-rs/toolchain@v1
with:
profile: minimal
override: true
toolchain: stable
target: ${{ matrix.settings.target }}

- name: Cache cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
.cargo-cache
target/
key: ${{ matrix.settings.target }}-cargo-${{ matrix.settings.host }}

- name: Customise host image
shell: bash
run: ${{ matrix.settings.customiseHostCommand }}

- name: Show current directory name
shell: bash
run: pwd

- name: List content before build
shell: bash
run: ls -l && ls -l ${{ matrix.settings.jsPackageHome }}

# - name: Cache cargo TODO deal with caching
- name: Install node dependencies
run: cd ${{ matrix.settings.jsPackageHome }} && pwd && ls -l . && npm install -verbose

# - name: Cargo build
# run: cargo build

- name: NAPI-RS build
shell: bash
run: cd ${{ matrix.settings.jsPackageHome }} && ${{ matrix.settings.buildCommand }}

- name: List content after build
shell: bash
run: ls -l && ls -l ${{ matrix.settings.jsPackageHome }}

- name: Upload built binary
uses: actions/upload-artifact@v3
with:
name: bindings-${{ matrix.settings.target }}
path: ${{ matrix.settings.finalPackageName }}
if-no-files-found: error
126 changes: 126 additions & 0 deletions .github/workflows/npm_publish_light.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: Build and Publish Cohort SDK NPMs
on:
#workflow_call:
push:
fmarek-kindred marked this conversation as resolved.
Show resolved Hide resolved
env:
SDK_JS_PACKAGE_NAME: "@kindredgroup/cohort_sdk_js"
SDK_CLIENT_PACKAGE_NAME: "@kindredgroup/cohort_sdk_client"
jobs:
npm:
strategy:
fail-fast: false
matrix:
settings:
- host: macos-latest
dirSdkJs: packages/cohort_sdk_js
dirSdkJsClient: cohort_sdk_client
dirCohortInitiator: cohort_banking_initiator_js
dirCohortReplicator: cohort_banking_replicator_js
customiseHostCommand: echo "No customizations needed"
fmarek-kindred marked this conversation as resolved.
Show resolved Hide resolved

name: Publish SDK NPS with bundled Rust for node@16
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v3

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably use 16 and 18

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have ticket to do testing with node 18. If we are going to support both then the whole workflow should be different in the way that it should be publishing two artefacts, one for v16 and one for v18. I prefer to have that work done as separate ticket (if we need to do it)

check-latest: true
registry-url: "https://npm.pkg.github.com"

- name: Customise host image
shell: bash
run: |-
echo "NPM_CONFIG_USERCONFIG=$NPM_CONFIG_USERCONFIG"
cat $NPM_CONFIG_USERCONFIG
echo ""
${{ matrix.settings.customiseHostCommand }}

- name: Setup version for ${{ matrix.settings.dirSdkJs }} NPM
id: sdk-js-version
shell: bash
run: |-
echo "Building SDK JS Library"
cd ${{ matrix.settings.dirSdkJs }}
pwd
ls -l
npm ci --foreground-scripts
../../scripts/github-actions-ci/set-npm-dev-version.sh ${{ env.SDK_JS_PACKAGE_NAME }} "SDK_JS_PACKAGE_VERSION"
echo ""

- name: Build and Publish ${{ matrix.settings.dirSdkJs }}
shell: bash
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |-
cd ${{ matrix.settings.dirSdkJs }}
pwd
ls -l
echo "Current version is"
npm version
npm publish --foreground-scripts
echo ""

- name: Setup version for ${{ matrix.settings.dirSdkJsClient }} NPM
id: sdk-client-version
shell: bash
env:
SDK_JS_PACKAGE_VERSION: ${{ steps.sdk-js-version.outputs.SDK_JS_PACKAGE_VERSION }}
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |-
echo "Building SDK Client"
cd ${{ matrix.settings.dirSdkJsClient }}
pwd
ls -lah
rm package-lock.json || true
echo "D: npm install $SDK_JS_PACKAGE_NAME@$SDK_JS_PACKAGE_VERSION --foreground-scripts"
npm install "$SDK_JS_PACKAGE_NAME@$SDK_JS_PACKAGE_VERSION" --foreground-scripts
../scripts/github-actions-ci/set-npm-dev-version.sh ${{ env.SDK_CLIENT_PACKAGE_NAME }} "SDK_CLIENT_PACKAGE_VERSION"
echo ""

- name: Build and Publish ${{ matrix.settings.dirSdkJsClient }} NPM
shell: bash
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |-
cd ${{ matrix.settings.dirSdkJsClient }}
pwd
ls -l
echo "Current version is"
npm version
npm ci --foreground-scripts
npm run build --foreground-scripts
npm publish --foreground-scripts
echo ""

- name: Build ${{ matrix.settings.dirCohortInitiator }}
env:
SDK_CLIENT_PACKAGE_VERSION: ${{ steps.sdk-client-version.outputs.SDK_CLIENT_PACKAGE_VERSION }}
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SKIP_NAPI_RS_STEP: true # this will re-use already bundled native lib
shell: bash
run: |-
cd ${{ matrix.settings.dirCohortInitiator }}
pwd
ls -l
rm package-lock.json || true
echo "D: npm install $SDK_CLIENT_PACKAGE_NAME@$SDK_CLIENT_PACKAGE_VERSION --foreground-scripts"
npm install "$SDK_CLIENT_PACKAGE_NAME@$SDK_CLIENT_PACKAGE_VERSION" --foreground-scripts
npm run build --foreground-scripts

- name: Build ${{ matrix.settings.dirCohortReplicator }}
env:
SDK_CLIENT_PACKAGE_VERSION: ${{ steps.sdk-client-version.outputs.SDK_CLIENT_PACKAGE_VERSION }}
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SKIP_NAPI_RS_STEP: true # this will re-use already bundled native lib
shell: bash
run: |-
cd ${{ matrix.settings.dirCohortInitiator }}
pwd
ls -l
rm package-lock.json || true
echo "D: npm install $SDK_CLIENT_PACKAGE_NAME@$SDK_CLIENT_PACKAGE_VERSION --foreground-scripts"
npm install "$SDK_CLIENT_PACKAGE_NAME@$SDK_CLIENT_PACKAGE_VERSION" --foreground-scripts
npm run build --foreground-scripts
Loading
Loading