release 0.6.0 #79
Workflow file for this run
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
name: build | |
on: | |
push: | |
pull_request: | |
jobs: | |
rust-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Test and Clippy | |
run: | | |
cargo test | |
cargo clippy --all-features -- -D warnings | |
javascript: | |
runs-on: ubuntu-latest | |
needs: rust-test | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Build | |
id: build | |
working-directory: javascript | |
run: | | |
cp ../README.md ./ | |
npm ci | |
npm run build | |
npm pack | |
- name: Install test dependencies | |
working-directory: javascript/tests | |
run: npm ci && npx playwright install --with-deps | |
- name: Run tests | |
working-directory: javascript | |
run: make test | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: javascript | |
path: javascript/evmole-*.tgz | |
python-wheel: | |
needs: rust-test | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
platform: | |
- runner: ubuntu-latest | |
os: linux | |
target: x86_64 | |
- runner: windows-latest | |
os: windows | |
target: x64 | |
- runner: macos-latest | |
os: macos | |
target: universal2-apple-darwin | |
runs-on: ${{ matrix.platform.runner }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build | |
uses: PyO3/maturin-action@v1 | |
with: | |
maturin-version: 1.7.6 | |
target: ${{ matrix.platform.target }} | |
manylinux: auto | |
args: -i ${{ matrix.python-version }} --release --out dist | |
- name: Install wheel | |
run: pip3 install ${{ matrix.platform.os == 'windows' && '(get-item .\dist\*.whl)' || 'dist/*.whl' }} | |
- name: Test | |
run: python3 python/test_python.py | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-${{ matrix.platform.os}}-${{ matrix.python-version }} | |
path: dist/*.whl | |
compression-level: 0 | |
python-sdist: | |
runs-on: ubuntu-latest | |
needs: rust-test | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
maturin-version: 1.7.6 | |
command: sdist | |
args: --out dist | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-sdist | |
path: dist | |
compression-level: 0 | |
python-sdist-test: | |
# ubuntu-latest image (https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md) have Rust installed | |
runs-on: ubuntu-latest | |
needs: python-sdist | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.13 | |
allow-prereleases: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: python-sdist | |
- name: Build and install wheel | |
run: pip3 install *.tar.gz | |
- name: Test | |
run: python3 python/test_python.py | |
release: | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') # only on tagged releases | |
needs: [javascript, python-wheel, python-sdist, python-sdist-test] | |
permissions: | |
contents: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # need tags to generate release notes | |
- name: Publish rust | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }} | |
run: cargo publish --allow-dirty | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Release Notes | |
run: | | |
echo '## Changes since previous release:' > changelog.md | |
git log --oneline $(git describe --tags --abbrev=0 HEAD^)..HEAD --pretty=format:"- [%h](https://github.com/cdump/evmole/commit/%H) %s" >> changelog.md | |
cat changelog.md | |
- name: Download Python Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: python-* | |
path: dist-py | |
merge-multiple: true | |
- name: Download Javascript Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: javascript | |
path: ./javascript/ | |
- name: Github Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: Release ${{ github.ref_name }} | |
draft: false | |
prerelease: false | |
body_path: changelog.md | |
files: | | |
javascript/evmole-*.tgz | |
dist-py/* | |
- name: Publish javascript | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
working-directory: javascript | |
run: npm publish --provenance *.tgz | |
- name: Publish python | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
attestations: true | |
packages-dir: dist-py/ |