Merge pull request #1496 from nshyrei/ignore_deps_contracts #785
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: Deploy | |
on: | |
push: | |
branches: 'master' | |
paths-ignore: 'docs/**' | |
env: | |
RUST_BACKTRACE: 1 | |
PRUSTI_ASSERT_TIMEOUT: 60000 | |
jobs: | |
# Build and test in release mode | |
build: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, windows-latest, macos-latest] | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v3 | |
- name: Set up Python 3 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '15' | |
distribution: 'zulu' | |
- name: Set up the environment | |
run: python x.py setup | |
- name: Build with cargo --release | |
run: python x.py build --release --all --jobs 1 | |
- name: Run cargo tests --release | |
run: python x.py test --release --all --jobs 1 | |
- name: Package Prusti artifact | |
run: python x.py package release prusti_artifact | |
- name: Test Prusti artifact | |
run: python x.py test-package prusti_artifact | |
- name: Upload Prusti artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: prusti-release-${{ matrix.os }} | |
if-no-files-found: error | |
path: prusti_artifact/** | |
# Build in release mode (but don't test) for macOS ARM | |
# See: https://stackoverflow.com/a/66875783/2491528 | |
# Blocked by: requires jni-rs version >=0.21 to avoid linking to the JVM at compilation time | |
build_macos_arm: | |
runs-on: macos-latest | |
if: false | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v3 | |
- name: Set up Python 3 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '15' | |
distribution: 'zulu' | |
- name: Set up the environment | |
run: python x.py setup | |
- name: Install the ARM toolchain | |
run: rustup target add aarch64-apple-darwin | |
- name: Build with cargo --release for arm64 | |
run: | | |
export SDKROOT=$(xcrun -sdk macosx --show-sdk-path) | |
export MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) | |
python x.py build --release --target=aarch64-apple-darwin -p prusti-launch | |
python x.py build --release --target=aarch64-apple-darwin -p prusti-server | |
python x.py build --release --target=aarch64-apple-darwin -p prusti-contracts-build | |
- name: Package Prusti artifact | |
run: python x.py package release prusti_artifact | |
- name: Upload Prusti artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: prusti-release-macos-arm | |
if-no-files-found: error | |
path: prusti_artifact/** | |
# Deploy to a new GitHub pre-release | |
deploy: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download all Prusti artifacts | |
uses: actions/download-artifact@v2 | |
- name: Zip Prusti artifacts | |
shell: bash | |
run: | | |
for os in ubuntu-20.04 windows-latest macos-latest | |
do | |
echo "Package Prusti artifact for $os" | |
cd prusti-release-$os | |
zip -r prusti.zip * | |
cd .. | |
done | |
- name: Create release tag | |
shell: bash | |
run: echo "TAG_NAME=$(date +v-%Y-%m-%d-%H%M)" >> $GITHUB_ENV | |
- name: Create a nightly release | |
id: create_release | |
uses: viperproject/create-nightly-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ env.TAG_NAME }} | |
release_name: Nightly Release ${{ env.TAG_NAME }} | |
keep_num: 4 | |
- name: Upload release asset for Ubuntu | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./prusti-release-ubuntu-20.04/prusti.zip | |
asset_name: prusti-release-ubuntu.zip | |
asset_content_type: application/zip | |
- name: Upload release asset for Windows | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./prusti-release-windows-latest/prusti.zip | |
asset_name: prusti-release-windows.zip | |
asset_content_type: application/zip | |
- name: Upload release asset for MacOS | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./prusti-release-macos-latest/prusti.zip | |
asset_name: prusti-release-macos.zip | |
asset_content_type: application/zip |