# This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] pull_request: branches: [ master ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: upload-release: strategy: matrix: target: - x86_64-unknown-linux-gnu - x86_64-pc-windows-gnu - x86_64-apple-darwin needs: [create-release] runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v1 with: name: create-release - id: upload-url run: | echo "::set-output name=url::$(cat create-release/release_upload_url.txt)" - uses: actions/download-artifact@v1 with: name: build-${{ matrix.target }} - uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.upload-url.outputs.url }} asset_path: ./build-${{ matrix.target }}/rustris-${{ matrix.target }}.zip asset_name: rustris-${{ matrix.target }}.zip asset_content_type: application/zip create-release: needs: [build] runs-on: ubuntu-latest steps: - id: create-release uses: actions/create-release@v1.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} draft: false prerelease: false - run: | echo '${{ steps.create-release.outputs.upload_url }}' > release_upload_url.txt - uses: actions/upload-artifact@v1 with: name: create-release path: release_upload_url.txt build: strategy: matrix: target: - x86_64-unknown-linux-gnu - x86_64-pc-windows-gnu - x86_64-apple-darwin include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest - target: x86_64-pc-windows-gnu os: ubuntu-latest - target: x86_64-apple-darwin os: macos-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v1 # https://github.com/actions/cache/blob/master/examples.md#rust---cargo - name: Cache cargo registry uses: actions/cache@v1 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo index uses: actions/cache@v1 with: path: ~/.cargo/git key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - uses: actions-rs/cargo@v1.0.1 with: command: build args: --release --target=${{ matrix.target }} use-cross: true - run: | zip --junk-paths rustris-${{ matrix.target }} target/${{ matrix.target }}/release/rustris{,.exe} - uses: actions/upload-artifact@v1 with: name: build-${{ matrix.target }} path: rustris-${{ matrix.target }}.zip