Deploy #793
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: | |
# macos-13 is x86, macos-14 is arm64 | |
os: [ubuntu-20.04, windows-latest, macos-13, macos-14] | |
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: Zip Prusti artifact | |
shell: bash | |
run: | | |
cd prusti_artifact | |
zip -r release.zip * | |
- name: Upload Prusti artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: prusti-release-${{ matrix.os }} | |
if-no-files-found: error | |
path: prusti_artifact/release.zip | |
# 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: 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/release.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/release.zip | |
asset_name: prusti-release-windows.zip | |
asset_content_type: application/zip | |
# This asset is only for backward compatibility with Prusti-Assistant. After updating | |
# Prusti-Assistant to use the new asset name, we can wait a while and then delete this. | |
- name: Upload release asset for macOS x86 using a backward-compatibile name | |
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-13/release.zip | |
asset_name: prusti-release-macos.zip | |
asset_content_type: application/zip | |
- name: Upload release asset for macOS x86 | |
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-13/release.zip | |
asset_name: prusti-release-macos-x86.zip | |
asset_content_type: application/zip | |
- name: Upload release asset for macOS arm64 | |
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-14/release.zip | |
asset_name: prusti-release-macos-arm64.zip | |
asset_content_type: application/zip |