forked from magicblock-labs/bolt
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
✨ Draft workflow for building & publishing packages (magicblock-labs#16)
* ✨ Draft workflow for building & publishing packages * 🚧 Workflow WIP * 👷 Update workflow * 👷 Update workflow * 👷 Update CI * 👷 Publish to github npm registry * 👷 Update workflow * 👷 Update workflow\ * 📝 Fix template * 👷 Remove dry-run * 👷 Publish packages for 0.0.1 * 👷 Enable cross * 👷 Use cross for windows * 📦 Add parent package * 👷 Add Ring for windows build * 👷 Add ring to cli crates on windows * 👷 Add ring to cli crates on windows * 👷 Use no features for windows build * 👷 Remove dependencies step * 👷 Publish binaries to release * 👷 Set release tag * 👷 Update binary name * 👷 Improve artifact name * 👷 Remove dry run * 📝 Update package.json template * 📝 Update package template * 📝 Update archs * 📝 Use npm * 👷 Add repo checkout step * 👷 Add npm install step * 👷 Update workdlow file
- Loading branch information
1 parent
cacbfc1
commit fc7301c
Showing
8 changed files
with
300 additions
and
39 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
name: Publish bolt-cli packages | ||
on: | ||
release: | ||
types: [ published ] | ||
workflow_dispatch: | ||
inputs: | ||
release_version: | ||
description: 'The release version' | ||
required: true | ||
default: '0.0.1' | ||
|
||
jobs: | ||
publish-npm-binaries: | ||
name: Publish NPM packages | ||
runs-on: ${{ matrix.build.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
build: | ||
- { | ||
NAME: linux-x64-glibc, | ||
OS: ubuntu-20.04, | ||
TOOLCHAIN: stable, | ||
TARGET: x86_64-unknown-linux-gnu, | ||
} | ||
- { | ||
NAME: linux-x86-glibc, | ||
OS: ubuntu-22.04, | ||
TOOLCHAIN: stable, | ||
TARGET: i686-unknown-linux-gnu, | ||
} | ||
- { | ||
NAME: linux-arm64-glibc, | ||
OS: ubuntu-20.04, | ||
TOOLCHAIN: stable, | ||
TARGET: aarch64-unknown-linux-gnu, | ||
} | ||
- { | ||
NAME: win32-x64-msvc, | ||
OS: windows-2022, | ||
TOOLCHAIN: stable, | ||
TARGET: x86_64-pc-windows-msvc, | ||
} | ||
- { | ||
NAME: win32-x86-msvc, | ||
OS: windows-2022, | ||
TOOLCHAIN: stable, | ||
TARGET: i686-pc-windows-msvc, | ||
} | ||
- { | ||
NAME: darwin-x64, | ||
OS: macos-11, | ||
TOOLCHAIN: stable, | ||
TARGET: x86_64-apple-darwin, | ||
} | ||
- { | ||
NAME: darwin-arm64, | ||
OS: macos-11, | ||
TOOLCHAIN: stable, | ||
TARGET: aarch64-apple-darwin, | ||
} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set the release version | ||
shell: bash | ||
run: echo "RELEASE_VERSION=${github.event.inputs.release_version || GITHUB_REF:11}" >> $GITHUB_ENV | ||
|
||
- name: Install Rust toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ matrix.build.TOOLCHAIN }} | ||
target: ${{ matrix.build.TARGET }} | ||
override: true | ||
|
||
- name: Build (linux/macos) | ||
if: matrix.build.OS != 'windows-2022' | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
use-cross: true | ||
command: build | ||
args: --manifest-path=cli/Cargo.toml --release --locked --target ${{ matrix.build.TARGET }} | ||
|
||
- name: Build (windows) | ||
if: matrix.build.OS == 'windows-2022' | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
command: build | ||
args: --manifest-path=cli/Cargo.toml --no-default-features --release --locked --target ${{ matrix.build.TARGET }} | ||
|
||
- name: Build the NPM package | ||
shell: bash | ||
run: | | ||
# set the binary name | ||
bin="bolt" | ||
# derive the OS and architecture from the build matrix name | ||
# note: when split by a hyphen, first part is the OS and the second is the architecture | ||
node_os=$(echo "${{ matrix.build.NAME }}" | cut -d '-' -f1) | ||
export node_os | ||
node_arch=$(echo "${{ matrix.build.NAME }}" | cut -d '-' -f2) | ||
export node_arch | ||
# set the version | ||
export node_version="${{ env.RELEASE_VERSION }}" | ||
# set the package name | ||
# note: use 'windows' as OS name instead of 'win32' | ||
if [ "${{ matrix.build.OS }}" = "windows-2022" ]; then | ||
export node_pkg="${bin}-cli-windows-${node_arch}" | ||
else | ||
export node_pkg="${bin}-cli-${node_os}-${node_arch}" | ||
fi | ||
echo "node_pkg=${node_pkg}" >> $GITHUB_ENV | ||
# create the package directory | ||
mkdir -p "${node_pkg}/bin" | ||
# generate package.json from the template | ||
envsubst < cli/npm-package/package.json.tmpl > "${node_pkg}/package.json" | ||
cat "${node_pkg}/package.json" | ||
# copy the binary into the package | ||
# note: windows binaries has '.exe' extension | ||
if [ "${{ matrix.build.OS }}" = "windows-2022" ]; then | ||
bin="${bin}.exe" | ||
fi | ||
echo "bin_name=${bin}" >> $GITHUB_ENV | ||
cp "target/${{ matrix.build.TARGET }}/release/${bin}" "${node_pkg}/bin" | ||
cp "target/${{ matrix.build.TARGET }}/release/${bin}" "${node_pkg}/bin" | ||
# Create the release bin file | ||
release_name="bolt-${{ matrix.build.NAME }}" | ||
if [ "${{ matrix.build.OS }}" = "windows-2022" ]; then | ||
release_name="${release_name}.exe" | ||
fi | ||
echo "release_name=${release_name}" >> $GITHUB_ENV | ||
mv "target/${{ matrix.build.TARGET }}/release/${bin}" "target/${{ matrix.build.TARGET }}/release/${release_name}" | ||
- name: Publish binary to GitHub release | ||
uses: svenstaro/upload-release-action@v2 | ||
with: | ||
repo_token: ${{ secrets.GITHUB_TOKEN }} | ||
file: target/${{ matrix.build.TARGET }}/release/${{ env.release_name }} | ||
overwrite: true | ||
tag: "v${{ env.RELEASE_VERSION }}" | ||
release_name: "v${{ env.RELEASE_VERSION }}" | ||
asset_name: "${{ env.release_name }}" | ||
|
||
- name: Publish the NPM package | ||
shell: bash | ||
run: | | ||
cd ${{ env.node_pkg }} | ||
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc | ||
npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }} | ||
npm publish --access public | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | ||
publish-wrapper-npm-package: | ||
name: Publish wrapper NPM packages | ||
runs-on: ubuntu-20.04 | ||
needs: publish-npm-binaries | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Publish the NPM package | ||
shell: bash | ||
run: | | ||
cd cli/npm-package | ||
npm install | ||
npm run build | ||
cd lib | ||
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc | ||
npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }} | ||
npm publish --access public | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
lib/** | ||
scripts/** |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:@typescript-eslint/recommended" | ||
], | ||
"parser": "@typescript-eslint/parser", | ||
"plugins": [ | ||
"@typescript-eslint" | ||
], | ||
"ignorePatterns": [ | ||
"lib/**", | ||
"scripts/**" | ||
], | ||
"root": true | ||
} |
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
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
Oops, something went wrong.