diff --git a/.github/workflows/publish-bolt-crates.yml b/.github/workflows/publish-bolt-crates.yml deleted file mode 100644 index 70ea72a..0000000 --- a/.github/workflows/publish-bolt-crates.yml +++ /dev/null @@ -1,204 +0,0 @@ -name: Publish Bolt crates -on: - release: - types: [ published ] - push: - branches: - - 'release/v*' - workflow_dispatch: - -env: - solana_version: v1.18.1 - anchor_version: 0.29.0 - -jobs: - install: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/cache@v4 - name: cache solana cli - id: cache-solana - with: - path: | - ~/.cache/solana/ - ~/.local/share/solana/ - key: solana-${{ runner.os }}-v0000-${{ env.solana_version }} - - - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: install essentials - run: | - sudo apt-get update - sudo apt-get install -y pkg-config build-essential libudev-dev - npm install --global yarn - - - name: Cache node dependencies - uses: actions/cache@v3 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: install node_modules - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - yarn --frozen-lockfile --network-concurrency 2 - - - name: install rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - - name: Cache rust - uses: Swatinem/rust-cache@v2 - - - name: install solana - if: steps.cache-solana.outputs.cache-hit != 'true' - run: | - sh -c "$(curl -sSfL https://release.solana.com/${{ env.solana_version }}/install)" - export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" - solana --version - - clippy-lint: - needs: install - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Cache rust - uses: Swatinem/rust-cache@v2 - - name: Run fmt - run: cargo fmt -- --check - - name: Run clippy - run: cargo clippy -- --deny=warnings - - yarn-lint: - needs: install - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Use Node ${{ matrix.node }} - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Cache node dependencies - uses: actions/cache@v4 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: Run lint - run: yarn lint - - test-and-publish: - needs: [clippy-lint, yarn-lint] - runs-on: ubuntu-latest - - steps: - - name: install rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - - name: Cache rust - uses: Swatinem/rust-cache@v2 - - - uses: actions/checkout@v4 - - - name: Set DRY_RUN based on trigger - run: echo "DRY_RUN=true" >> $GITHUB_ENV - if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v') - - - name: Use Node ${{ matrix.node }} - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Cache node dependencies - uses: actions/cache@v3 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - name: install node_modules - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - yarn --frozen-lockfile - - - uses: actions/cache@v4 - name: cache solana cli - id: cache-solana - with: - path: | - ~/.cache/solana/ - ~/.local/share/solana/ - key: solana-${{ runner.os }}-v0000-${{ env.solana_version }} - - - name: setup solana - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - solana --version - solana-keygen new --silent --no-bip39-passphrase - - - name: Set deployments keys - run: | - mkdir -p target/deploy - echo ${{ secrets.WORLD }} > target/deploy/world-keypair.json - echo ${{ secrets.BOLT_COMPONENT }} > target/deploy/bolt_component-keypair.json - echo ${{ secrets.BOLT_SYSTEM }} > target/deploy/bolt_system-keypair.json - echo ${{ secrets.COMPONENT_POSITION }} > target/deploy/component_position-keypair.json - echo ${{ secrets.COMPONENT_VELOCITY }} > target/deploy/component_velocity-keypair.json - echo ${{ secrets.SYSTEM_APPLY_VELOCITY }} > target/deploy/system_apply_velocity-keypair.json - echo ${{ secrets.SYSTEM_FLY }} > target/deploy/system_fly-keypair.json - echo ${{ secrets.SYSTEM_SIMPLE_MOVEMENT }} > target/deploy/system_simple_movement-keypair.json - - - name: Check versions are aligned - run: | - # Fails if versions are not aligned - cargo install git-cliff - ./version-align.sh --check - - - name: run build - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - cargo install --path cli --force --locked - bolt build - - - name: run tests - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - cargo install --path cli --force --locked - bolt test - - - name: cargo publish - run: | - DRY_RUN_FLAG="" - if [ "${DRY_RUN}" = "true" ]; then - DRY_RUN_FLAG="--dry-run" - fi - - if [ "${DRY_RUN}" = "true" ]; then - NO_VERIFY_FLAG="--no-verify" - fi - - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/utils/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/component/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/component-deserialize/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/component-id/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/system/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/system-input/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/extra-accounts/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/arguments/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/attribute/bolt-program/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-helpers/attribute/system-template/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-helpers/attribute/world-apply/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=programs/bolt-system/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=programs/bolt-component/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=programs/world/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - cargo publish $DRY_RUN_FLAG --manifest-path=crates/bolt-lang/Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG - env: - CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }} - DRY_RUN: ${{ env.DRY_RUN }} diff --git a/.github/workflows/publish-bolt-sdk.yml b/.github/workflows/publish-bolt-sdk.yml deleted file mode 100644 index d0761c0..0000000 --- a/.github/workflows/publish-bolt-sdk.yml +++ /dev/null @@ -1,192 +0,0 @@ -name: Publish Bolt SDKs -on: - release: - types: [ published ] - push: - branches: - - 'release/v*' - workflow_dispatch: - -env: - solana_version: v1.18.1 - anchor_version: 0.29.0 - -jobs: - install: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/cache@v4 - name: cache solana cli - id: cache-solana - with: - path: | - ~/.cache/solana/ - ~/.local/share/solana/ - key: solana-${{ runner.os }}-v0000-${{ env.solana_version }} - - - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: install essentials - run: | - sudo apt-get update - sudo apt-get install -y pkg-config build-essential libudev-dev - npm install --global yarn - - - name: Cache node dependencies - uses: actions/cache@v3 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: install node_modules - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - yarn --frozen-lockfile --network-concurrency 2 - - - name: install rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - - name: Cache rust - uses: Swatinem/rust-cache@v2 - - - name: install solana - if: steps.cache-solana.outputs.cache-hit != 'true' - run: | - sh -c "$(curl -sSfL https://release.solana.com/${{ env.solana_version }}/install)" - export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" - solana --version - - clippy-lint: - needs: install - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Cache rust - uses: Swatinem/rust-cache@v2 - - name: Run fmt - run: cargo fmt -- --check - - name: Run clippy - run: cargo clippy -- --deny=warnings - - yarn-lint: - needs: install - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Use Node ${{ matrix.node }} - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Cache node dependencies - uses: actions/cache@v4 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: Run lint - run: yarn lint - - test: - needs: [clippy-lint, yarn-lint] - runs-on: ubuntu-latest - - steps: - - name: install rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - - name: Cache rust - uses: Swatinem/rust-cache@v2 - - - uses: actions/checkout@v4 - - - name: Set DRY_RUN based on trigger - run: echo "DRY_RUN=true" >> $GITHUB_ENV - if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v') - - - name: Use Node ${{ matrix.node }} - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Cache node dependencies - uses: actions/cache@v3 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - name: install node_modules - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - yarn --frozen-lockfile - - - uses: actions/cache@v4 - name: cache solana cli - id: cache-solana - with: - path: | - ~/.cache/solana/ - ~/.local/share/solana/ - key: solana-${{ runner.os }}-v0000-${{ env.solana_version }} - - - name: setup solana - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - solana --version - solana-keygen new --silent --no-bip39-passphrase - - - name: Set deployments keys - run: | - mkdir -p target/deploy - echo ${{ secrets.WORLD }} > target/deploy/world-keypair.json - echo ${{ secrets.BOLT_COMPONENT }} > target/deploy/bolt_component-keypair.json - echo ${{ secrets.BOLT_SYSTEM }} > target/deploy/bolt_system-keypair.json - echo ${{ secrets.COMPONENT_POSITION }} > target/deploy/component_position-keypair.json - echo ${{ secrets.COMPONENT_VELOCITY }} > target/deploy/component_velocity-keypair.json - echo ${{ secrets.SYSTEM_APPLY_VELOCITY }} > target/deploy/system_apply_velocity-keypair.json - echo ${{ secrets.SYSTEM_FLY }} > target/deploy/system_fly-keypair.json - echo ${{ secrets.SYSTEM_SIMPLE_MOVEMENT }} > target/deploy/system_simple_movement-keypair.json - - - name: Check versions are aligned - run: | - # Fails if versions are not aligned - cargo install git-cliff - ./version-align.sh --check - - - name: run build - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - cargo install --path cli --force --locked - bolt build - - - name: run tests - run: | - export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH" - cargo install --path cli --force --locked - bolt test - - - name: npm publish - run: | - npm install --global yarn - npm install --global eslint - yarn install - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc - npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }} - cd clients/bolt-sdk/ && yarn build && yarn lint:fix && cd ../../ && yarn lint:fix - cd clients/bolt-sdk/ - if [ "${DRY_RUN}" = "true" ]; then - echo "Running npm publish in dry-run mode" - npm publish --access public --dry-run - else - npm publish --access public - fi - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml deleted file mode 100644 index bf5030a..0000000 --- a/.github/workflows/publish-packages.yml +++ /dev/null @@ -1,210 +0,0 @@ -name: Publish bolt-cli packages -on: - release: - types: [ published ] - push: - branches: - - 'release/v*' - 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 DRY_RUN based on trigger - shell: bash - run: echo "DRY_RUN=true" >> $GITHUB_ENV - if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v') - - - name: Set the release version - shell: bash - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - echo "RELEASE_VERSION=${{ github.event.inputs.release_version }}" >> $GITHUB_ENV - elif [[ "${{ github.event_name }}" == "push" ]]; then - VERSION=$(echo "${GITHUB_REF}" | sed -E 's|refs/heads/release/v||') - echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_ENV - elif [[ "${{ github.event_name }}" == "release" ]]; then - VERSION=$(echo "${GITHUB_REF}" | sed -E 's|refs/tags/v||') - echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_ENV - fi - - - 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: Check versions are aligned - run: | - # Fails if versions are not aligned - cargo install git-cliff - ./version-align.sh --check - - - 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-cli-${{ 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 - if: ${{ env.DRY_RUN != 'true' }} - 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 - run: | - echo "DRY_RUN=${{ env.DRY_RUN }}" - cd ${{ env.node_pkg }} - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc - npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }} - if [ "${{ env.DRY_RUN }}" = "true" ]; then - echo "Running npm publish in dry-run mode" - npm publish --access public --dry-run - else - npm publish --access public - fi - shell: bash - 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: Set DRY_RUN based on trigger - run: echo "DRY_RUN=true" >> $GITHUB_ENV - if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v') - - 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 }} - if [ "${DRY_RUN}" = "true" ]; then - echo "Running npm publish in dry-run mode" - npm publish --access public --dry-run - else - npm publish --access public - fi - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index fef75df..776174f 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -10,7 +10,6 @@ env: jobs: test: - needs: [clippy-lint, yarn-lint] runs-on: ubuntu-latest steps: