Skip to content

Nightly build

Nightly build #1452

Workflow file for this run

name: Nightly build
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
linux:
name: Build - ${{ matrix.target }}-rln${{ matrix.build.suffix }}
runs-on: ubuntu-latest
strategy:
matrix:
build:
- { suffix: "", features: "" }
- { suffix: "-parallel", features: "parallel" }
target: [x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu]
env:
FEATURES_CARGO: ${{ matrix.build.features }}
ARTIFACT: ${{ matrix.target }}-rln${{ matrix.build.suffix }}.tar.gz
TARGET: ${{ matrix.target }}
steps:
- name: Checkout sources
uses: actions/checkout@v5
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
target: ${{ env.TARGET }}
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Cross build
run: |
cross build --release --target $TARGET --no-default-features --features "$FEATURES_CARGO" --workspace
mkdir release
cp target/$TARGET/release/librln* release/
tar -czvf $ARTIFACT release/
- name: Upload archive artifact
uses: actions/upload-artifact@v5
with:
name: ${{ env.ARTIFACT }}-archive
path: ${{ env.ARTIFACT }}
retention-days: 2
macos:
name: Build - ${{ matrix.target }}-rln${{ matrix.build.suffix }}
runs-on: macos-latest
strategy:
matrix:
build:
- { suffix: "", features: "" }
- { suffix: "-parallel", features: "parallel" }
target: [x86_64-apple-darwin, aarch64-apple-darwin]
env:
FEATURES_CARGO: ${{ matrix.build.features }}
ARTIFACT: ${{ matrix.target }}-rln${{ matrix.build.suffix }}.tar.gz
TARGET: ${{ matrix.target }}
steps:
- name: Checkout sources
uses: actions/checkout@v5
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
target: ${{ env.TARGET }}
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Cross build
run: |
cross build --release --target $TARGET --no-default-features --features "$FEATURES_CARGO" --workspace
mkdir release
cp target/$TARGET/release/librln* release/
tar -czvf $ARTIFACT release/
- name: Upload archive artifact
uses: actions/upload-artifact@v5
with:
name: ${{ env.ARTIFACT }}-archive
path: ${{ env.ARTIFACT }}
retention-days: 2
wasm32:
name: Build - wasm32-rln${{ matrix.build.suffix }}
runs-on: ubuntu-latest
strategy:
matrix:
build:
- { feature: default, suffix: "" }
- { feature: parallel, suffix: "-parallel" }
- { feature: utils, suffix: "-utils" }
env:
ARTIFACT: wasm32-rln${{ matrix.build.suffix }}.tar.gz
steps:
- name: Checkout sources
uses: actions/checkout@v5
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
targets: wasm32-unknown-unknown
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Build rln-wasm package
run: |
if [[ ${{ matrix.build.feature }} == "parallel" ]]; then
env CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUSTFLAGS="-C target-feature=+atomics,+bulk-memory,+mutable-globals -C link-arg=--shared-memory -C link-arg=--max-memory=1073741824 -C link-arg=--import-memory -C link-arg=--export=__wasm_init_tls -C link-arg=--export=__tls_size -C link-arg=--export=__tls_align -C link-arg=--export=__tls_base -C link-arg=--export=__heap_base" \
rustup run nightly wasm-pack build --release --target web --scope waku \
--features parallel -Z build-std=panic_abort,std
sed -i.bak 's/rln-wasm/zerokit-rln-wasm-parallel/g' pkg/package.json && rm pkg/package.json.bak
elif [[ ${{ matrix.build.feature }} == "utils" ]]; then
wasm-pack build --release --target web --scope waku --no-default-features --features utils
sed -i.bak 's/rln-wasm/zerokit-rln-wasm-utils/g' pkg/package.json && rm pkg/package.json.bak
else
wasm-pack build --release --target web --scope waku
sed -i.bak 's/rln-wasm/zerokit-rln-wasm/g' pkg/package.json && rm pkg/package.json.bak
fi
jq '. + {keywords: ["zerokit", "rln", "wasm"]}' pkg/package.json > pkg/package.json.tmp && \
mv pkg/package.json.tmp pkg/package.json
mkdir release
cp -r pkg/* release/
tar -czvf $ARTIFACT release/
working-directory: rln-wasm
- name: Upload archive artifact
uses: actions/upload-artifact@v5
with:
name: ${{ env.ARTIFACT }}-archive
path: rln-wasm/${{ env.ARTIFACT }}
retention-days: 2
prepare-prerelease:
name: Prepare pre-release
needs: [linux, macos, wasm32]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v5
with:
ref: master
- name: Download artifacts
uses: actions/download-artifact@v5
- name: Delete tag
uses: dev-drprasad/delete-tag-and-release@v1.1
with:
delete_release: true
tag_name: nightly
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create prerelease
run: |
start_tag=$(gh release list -L 2 --exclude-drafts | grep -v nightly | cut -d$'\t' -f3 | sed -n '1p')
gh release create nightly --prerelease --target master \
--title 'Nightly build ("master" branch)' \
--generate-notes \
--draft=false \
--notes-start-tag $start_tag \
*-archive/*.tar.gz \
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Delete artifacts
uses: geekyeggo/delete-artifact@v5
with:
failOnError: false
name: |
*-archive