wascc-host 0.14.0

WebAssembly Secure Capabilities Connector (waSCC) Host Runtime
Documentation
name: Release

on:
  push:  
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
  release:
    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: Release ${{ github.ref }}
        draft: false
        prerelease: true
    - name: Output Release URL File
      run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
    - name: Save Release URL File for publish
      uses: actions/upload-artifact@v1
      with:
        name: release_url
        path: release_url.txt

  publish:
    needs: release
    strategy:
        matrix:
          os: [ubuntu-latest, macos-latest, windows-latest]
          engine: [wasm3, wasmtime]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Get the version
        id: get_version
        shell: bash
        run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/}
      - name: Load Release URL File from release job
        uses: actions/download-artifact@v1
        with:
          name: release_url
      - name: Install clang on Windows
        if: ${{ startsWith(matrix.os, 'windows') }}
        run: |
          curl -fsSL -o LLVM9.exe https://releases.llvm.org/9.0.0/LLVM-9.0.0-win64.exe
          7z x LLVM9.exe -y -o"C:/Program Files/LLVM"
      - name: Create release Build
        run: cargo build --features "bin manifest lattice ${{ matrix.engine }}" --release
      - name: Install 7Zip PowerShell Module (win)
        if: ${{ startsWith(matrix.os, 'windows') }}
        shell: powershell
        run: Install-Module 7Zip4PowerShell -Force -Verbose
      - name: Create Release Zip (windows)
        if: ${{ startsWith(matrix.os, 'windows') }}
        run: powershell Compress-7Zip "target\release\wascc-host.exe" -ArchiveFileName "wascchost-${{matrix.os}}.zip" -Format Zip
      - name: Create Release Zip (ubuntu)
        if: ${{ startsWith(matrix.os, 'ubuntu') }}
        run: zip -j wascchost-${{ matrix.os }}.zip ./target/release/wascc-host
      - name: Create Release Zip (mac)
        if: ${{ startsWith(matrix.os, 'mac') }}
        run: zip -j wascchost-${{ matrix.os }}.zip ./target/release/wascc-host            

      - name: Get Release File Name & Upload URL
        id: get_release_info
        shell: bash
        run: |        
          value=`cat release_url/release_url.txt`
          echo ::set-output name=upload_url::$value   
      - name: Set friendly OS label (ubuntu)
        if: ${{ startsWith(matrix.os, 'ubuntu') }}
        run: echo ::set-env name=OS_LABEL::linux
      - name: Set friendly OS label (mac)
        if: ${{ startsWith(matrix.os, 'mac') }}
        run: echo ::set-env name=OS_LABEL::macos
      - name: Set friendly OS label (windows)
        shell: bash
        if: ${{ startsWith(matrix.os, 'windows') }}
        run: echo ::set-env name=OS_LABEL::windows    
      - name: Upload Release Asset
        id: upload-release-asset 
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}          
        with:
          upload_url: ${{ steps.get_release_info.outputs.upload_url }}
          asset_path: ./wascchost-${{ matrix.os }}.zip
          asset_name: wascchost-${{ steps.get_version.outputs.VERSION }}-${{ env.OS_LABEL }}-${{ matrix.engine }}-x86_64.zip
          asset_content_type: application/zip  


  crates:
    needs: publish
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Cargo login
        env:
          CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }}
        run: cargo login ${{ env.CRATES_TOKEN }}
      - name: Cargo publish
        run: cargo publish --no-verify