name: Release on: create: tags: - 'v*' # Version tag workflow_dispatch: env: CARGO_TERM_COLOR: always jobs: publish: name: publish to crates.io runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: Swatinem/rust-cache@v1.0.1 - name: Publish crate continue-on-error: true run: cargo publish --manifest-path kalk/Cargo.toml --token ${{ secrets.CARGO_REGISTRY_TOKEN }} --verbose - name: Publish CLI run: sleep 20 && cargo publish --manifest-path cli/Cargo.toml --token ${{ secrets.CARGO_REGISTRY_TOKEN }} --verbose publish_npm: name: publish to npm runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: Swatinem/rust-cache@v1.0.1 - uses: actions/setup-node@v1 with: node-version: 14 registry-url: https://registry.npmjs.org/ - name: Install wasm-pack run: cargo install wasm-pack - name: Build run: | yarn install cd kalk wasm-pack build --scope paddim8 -- --no-default-features cd .. - uses: JS-DevTools/npm-publish@v1 with: token: ${{ secrets.NPM_TOKEN }} package: ./kalk/pkg/package.json access: public publish_kalk_web: name: publish kalk_web if: always() runs-on: ubuntu-latest needs: [publish_npm] steps: - uses: actions/checkout@master - uses: actions/setup-node@v1 with: node-version: 14 registry-url: https://registry.npmjs.org/ - name: build run: | cd web npm install cd .. - uses: JS-DevTools/npm-publish@v1 with: token: ${{ secrets.NPM_TOKEN }} package: ./web/package.json access: public release_linux: name: release linux runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: Swatinem/rust-cache@v1.0.1 - name: Compile run: | cargo build --release --verbose cp target/release/kalker target/release/kalker-linux - uses: actions/upload-artifact@v2 with: name: binaries path: target/release/kalker-linux release_mac: name: release mac runs-on: macos-latest steps: - uses: actions/checkout@master - uses: actions/cache@v2 with: path: | ~/.cargo/registry/index ~/.cargo/registry/cache target key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Compile run: | cargo build --release --verbose zip -r kalker-macOS.zip target/release/kalker - uses: actions/upload-artifact@v2 with: name: binaries path: kalker-macOS.zip release_windows: name: release windows runs-on: windows-latest steps: - uses: actions/checkout@master - uses: actions/cache@v2 with: key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} path: | C:\Users\runneradmin\.cargo\bin\cargo-wix C:\Users\runneradmin\.cargo\registry\index C:\Users\runneradmin\.cargo\registry\cache C:\Users\runneradmin\.cargo\registry\cache {FOLDERID_LocalAppData}\gmp-mpfr-sys D:\a\kalker\kalker\target C:\msys64\home\paddi\kalker\target - uses: msys2/setup-msys2@v2 with: update: true install: >- base-devel pacman-mirrors diffutils m4 make mingw-w64-x86_64-gcc mingw-w64-x86_64-rust continue-on-error: true - shell: msys2 {0} run: | cargo build --release --verbose - uses: crazy-max/ghaction-chocolatey@v1 with: args: install wixtoolset -y - shell: msys2 {0} run: | [ ! -f /c/Users/runneradmin/.cargo/bin/cargo-wix.exe ] && cargo install cargo-wix --version 0.3.1 cd cli cargo wix --no-build --nocapture mv target/wix/*.msi target/wix/kalker-windows.msi - uses: actions/upload-artifact@v2 with: name: binaries path: cli/target/wix/kalker-windows.msi release_android: name: release android if: always() runs-on: ubuntu-latest needs: [publish_kalk_web] defaults: run: working-directory: ./mobile steps: - uses: actions/checkout@master - uses: actions/cache@v2 with: path: | mobile/android/.gradle mobile/android/build mobile/android/app/build key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: npm run: | npm install npm run build - name: build app run: | npx cap sync cd android version=$(cat ../../web/package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]') APP_VERSION_NAME=$version ./gradlew assembleRelease - uses: r0adkll/sign-android-release@v1 name: sign apk with: releaseDirectory: mobile/android/app/build/outputs/apk/release signingKeyBase64: ${{ secrets.SIGNING_KEY }} alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - run: mv $(ls -Art android/app/build/outputs/apk/release/*.apk | tail -n 1) ../kalker-android.apk - uses: actions/upload-artifact@v2 with: name: binaries path: kalker-android.apk create_release: name: Create Release if: always() needs: [release_linux, release_mac, release_windows, release_android] runs-on: ubuntu-latest steps: - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ github.ref }} draft: false prerelease: false - name: Download Artifact uses: actions/download-artifact@v2 with: name: binaries - name: Upload Assets uses: softprops/action-gh-release@v1 with: files: ./* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}