116 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Build-n-Test
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches:
 | 
						|
    - master
 | 
						|
    - travis
 | 
						|
 | 
						|
  pull_request:
 | 
						|
    branches:
 | 
						|
    - master
 | 
						|
 | 
						|
# Look:
 | 
						|
# https://github.com/actions/starter-workflows/blob/master/ci/rust.yml
 | 
						|
#
 | 
						|
# Simple, right? Right.
 | 
						|
# But we need to:
 | 
						|
# * download a specific Sciter library matching the running OS
 | 
						|
# * figure out where to save it
 | 
						|
# * add it to the $PATH
 | 
						|
#
 | 
						|
# yet,
 | 
						|
# * in case of macOS realize that it doesn't have Rust installed, so
 | 
						|
# * install it manually and don't forget to add cargo and rustc to the $PATH on each step
 | 
						|
# * and in case of Linux install additional packages for GTK3
 | 
						|
#
 | 
						|
# So, now we're ended up with this ugly script.
 | 
						|
 | 
						|
jobs:
 | 
						|
  fetch:
 | 
						|
    name: Fetch dependencies
 | 
						|
 | 
						|
    runs-on: ${{ matrix.os }}
 | 
						|
    strategy:
 | 
						|
      matrix:
 | 
						|
        # macOS doesn't have Rust installed
 | 
						|
        # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/software-installed-on-github-hosted-runners#macos-1015
 | 
						|
        # we will try to install it manually below.
 | 
						|
        os: [macos-latest, ubuntu-latest, windows-latest]
 | 
						|
 | 
						|
    steps:
 | 
						|
      - name: Environment
 | 
						|
        shell: bash
 | 
						|
        env:
 | 
						|
          RUNNER_CONTEXT: ${{ toJson(runner) }}
 | 
						|
          SCITER_DEPS: ${{ runner.workspace }}
 | 
						|
        run: |
 | 
						|
          echo HOME is "$HOME"
 | 
						|
          echo workspace is "$SCITER_DEPS"
 | 
						|
          echo temp is "$TEMP"
 | 
						|
          echo runner is "$RUNNER_CONTEXT"
 | 
						|
          echo cargo is at `which cargo`
 | 
						|
          echo rustc is at `which rustc`
 | 
						|
          command -v cargo && rustc -vV
 | 
						|
          echo done
 | 
						|
 | 
						|
  build:
 | 
						|
    needs: [fetch]
 | 
						|
    name: Build and test
 | 
						|
 | 
						|
    runs-on: ${{ matrix.os }}
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        os: [macos-latest, ubuntu-latest, windows-latest]
 | 
						|
 | 
						|
    steps:
 | 
						|
    - uses: actions/checkout@v2
 | 
						|
 | 
						|
    - name: Windows deps
 | 
						|
      if: runner.os == 'Windows'
 | 
						|
      # Windows: download sciter library
 | 
						|
      run: curl -sSLo "%SCITER_DEPS%/sciter.dll" "https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll"
 | 
						|
      shell: cmd
 | 
						|
      env:
 | 
						|
        SCITER_DEPS: ${{ runner.workspace }}
 | 
						|
 | 
						|
    - name: Linux deps
 | 
						|
      if: runner.os == 'Linux'
 | 
						|
      # Linux: download sciter library && install libgtk-3-dev
 | 
						|
      run: |
 | 
						|
        curl -so "$SCITER_DEPS/libsciter-gtk.so" "https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so"
 | 
						|
        sudo apt-get update -y && sudo apt-get install libgtk-3-dev libgtk-3-0 libstdc++-6-pic -y
 | 
						|
      env:
 | 
						|
        SCITER_DEPS: ${{ runner.workspace }}
 | 
						|
 | 
						|
    - name: macOS deps
 | 
						|
      if: runner.os == 'macOS'
 | 
						|
      # OSX: download sciter library && install rustup
 | 
						|
      run: |
 | 
						|
        curl -so "$SCITER_DEPS/sciter-osx-64.dylib" "https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/sciter-osx-64.dylib"
 | 
						|
        curl https://sh.rustup.rs -sSf | sh -s -- --profile minimal -y
 | 
						|
        test -f $HOME/.cargo/env && source $HOME/.cargo/env
 | 
						|
        echo cargo is at `which cargo`
 | 
						|
        echo rustc is at `which rustc`
 | 
						|
      env:
 | 
						|
        SCITER_DEPS: ${{ runner.workspace }}
 | 
						|
 | 
						|
    - name: Build
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        test -f $HOME/.cargo/env && source $HOME/.cargo/env
 | 
						|
        cargo build --all
 | 
						|
        cargo build --examples
 | 
						|
 | 
						|
    - name: Tests
 | 
						|
      shell: bash
 | 
						|
      run: |
 | 
						|
        test -f $HOME/.cargo/env && source $HOME/.cargo/env
 | 
						|
        export PATH="$PATH:$SCITER_DEPS"
 | 
						|
        cargo run --example first
 | 
						|
        cargo test -p sciter-rs
 | 
						|
        cargo test -p sciter-serde
 | 
						|
      env:
 | 
						|
        SCITER_DEPS: ${{ runner.workspace }}
 |