name: build on: push: paths: - 'src/**' - 'tests/**' - '.github/**' branches: - '**' pull_request: paths: - 'src/**' - 'tests/**' - '.github/**' jobs: install-cross: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 with: fetch-depth: 50 - uses: XAMPPRocky/get-github-release@v1 id: cross with: owner: rust-embedded repo: cross matches: ${{ matrix.platform }} token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/upload-artifact@v1 with: name: cross-${{ matrix.platform }} path: ${{ steps.cross.outputs.install_path }} strategy: matrix: platform: [ linux-musl, apple-darwin ] windows: runs-on: windows-latest needs: install-cross steps: - uses: actions/checkout@v2 with: fetch-depth: 50 - run: .github/scripts/set_rust_version.bash ${{ matrix.channel }} ${{ matrix.target }} shell: bash - run: .github/scripts/build.bash cargo ${{ matrix.target }} shell: bash - run: .github/scripts/test.bash cargo ${{ matrix.target }} shell: bash strategy: matrix: channel: [ stable, beta ] target: - x86_64-pc-windows-gnu - x86_64-pc-windows-msvc macos: runs-on: macos-latest needs: install-cross steps: - uses: actions/checkout@v2 with: fetch-depth: 50 - uses: actions/download-artifact@v1 with: name: cross-apple-darwin path: /usr/local/bin/ - run: chmod +x /usr/local/bin/cross - run: .github/scripts/set_rust_version.bash ${{ matrix.channel }} ${{ matrix.target }} - run: .github/scripts/build.bash cross ${{ matrix.target }} - run: .github/scripts/test.bash cross ${{ matrix.target }} if: matrix.target == 'x86_64-apple-darwin' strategy: matrix: channel: [ stable, beta ] target: - x86_64-apple-darwin linux: runs-on: ubuntu-latest needs: install-cross steps: - uses: actions/checkout@v2 with: fetch-depth: 50 - name: Download Cross uses: actions/download-artifact@v1 with: name: cross-linux-musl path: /tmp/ - run: chmod +x /tmp/cross - run: .github/scripts/set_rust_version.bash ${{ matrix.channel }} ${{ matrix.target }} - run: .github/scripts/build.bash /tmp/cross ${{ matrix.target }} - run: .github/scripts/test.bash /tmp/cross ${{ matrix.target }} if: | !contains(matrix.target, 'android') && !contains(matrix.target, 'bsd') && !contains(matrix.target, 'solaris') && matrix.target != 'armv5te-unknown-linux-musleabi' && matrix.target != 'sparc64-unknown-linux-gnu' strategy: matrix: channel: [ stable, beta ] target: - x86_64-unknown-linux-gnu - x86_64-unknown-linux-musl