name: Nightly builds on: schedule: - cron: '14 4 * * *' jobs: matrix_prep: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: # creates the matrix strategy from nightly_build_matrix_includes.json - uses: actions/checkout@v2 - id: set-matrix uses: JoshuaTheMiller/conditional-build-matrix@main with: inputFile: '.github/workflows/nightly_build_matrix_includes.json' filter: '[?runOnEvent==`${{ github.event_name }}` || runOnEvent==`always`]' build: needs: matrix_prep strategy: matrix: ${{fromJson(needs.matrix_prep.outputs.matrix)}} runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.rust == 'nightly' || matrix.rust == 'beta' || matrix.rust == 'stable' }} steps: - name: Install Dependencies (Linux) run: sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev squashfs-tools if: matrix.os == 'ubuntu-latest' - name: Check out repository code uses: actions/checkout@v2 - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} override: true components: rustfmt, clippy - name: Build all binaries uses: actions-rs/cargo@v1 with: command: build args: --workspace - name: Run all tests uses: actions-rs/cargo@v1 with: command: test args: --workspace - name: Reclaim some disk space (because Windows is being annoying) uses: actions-rs/cargo@v1 if: ${{ matrix.os == 'windows-latest' }} with: command: clean - name: Run expensive tests if: github.ref == 'refs/heads/develop' || github.event.pull_request.base.ref == 'develop' || github.event.pull_request.base.ref == 'master' uses: actions-rs/cargo@v1 with: command: test args: --workspace --all-features -- --ignored - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check - name: Reclaim some disk space (because Windows is being annoying) uses: actions-rs/cargo@v1 if: ${{ matrix.os == 'windows-latest' }} with: command: clean - uses: actions-rs/clippy-check@v1 name: Clippy checks with: token: ${{ secrets.GITHUB_TOKEN }} args: --all-features - name: Run clippy uses: actions-rs/cargo@v1 if: ${{ matrix.rust != 'nightly' }} with: command: clippy args: --workspace --all-targets -- -D warnings - name: Reclaim some disk space uses: actions-rs/cargo@v1 if: ${{ matrix.os == 'windows-latest' || matrix.os == 'ubuntu-latest' }} with: command: clean # COCONUT stuff - name: Build all binaries with coconut enabled uses: actions-rs/cargo@v1 with: command: build args: --workspace --features=coconut - name: Run all tests with coconut enabled uses: actions-rs/cargo@v1 with: command: test args: --workspace --features=coconut - name: Reclaim some disk space (because Windows is being annoying) uses: actions-rs/cargo@v1 if: ${{ matrix.os == 'windows-latest' }} with: command: clean - name: Run clippy with coconut enabled uses: actions-rs/cargo@v1 if: ${{ matrix.rust != 'nightly' }} with: command: clippy args: --workspace --all-targets --features=coconut -- -D warnings # nym-wallet (the rust part) - name: Build nym-wallet rust code uses: actions-rs/cargo@v1 with: command: build args: --manifest-path nym-wallet/Cargo.toml --workspace - name: Run nym-wallet tests uses: actions-rs/cargo@v1 with: command: test args: --manifest-path nym-wallet/Cargo.toml --workspace - name: Check nym-wallet formatting uses: actions-rs/cargo@v1 with: command: fmt args: --manifest-path nym-wallet/Cargo.toml --all -- --check - name: Run clippy for nym-wallet uses: actions-rs/cargo@v1 if: ${{ matrix.rust != 'nightly' }} with: command: clippy args: --manifest-path nym-wallet/Cargo.toml --workspace --all-targets -- -D warnings notification: needs: build runs-on: ubuntu-latest steps: - name: Collect jobs status uses: technote-space/workflow-conclusion-action@v2 - name: Check out repository code uses: actions/checkout@v2 - name: Keybase - Node Install if: env.WORKFLOW_CONCLUSION == 'failure' run: npm install working-directory: .github/workflows/support-files - name: Keybase - Send Notification if: env.WORKFLOW_CONCLUSION == 'failure' env: NYM_NOTIFICATION_KIND: nightly NYM_PROJECT_NAME: "Nym nightly build" GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" GIT_COMMIT_MESSAGE: "${{ github.event.head_commit.message }}" GIT_BRANCH: "${GITHUB_REF##*/}" KEYBASE_NYMBOT_USERNAME: "${{ secrets.KEYBASE_NYMBOT_USERNAME }}" KEYBASE_NYMBOT_PAPERKEY: "${{ secrets.KEYBASE_NYMBOT_PAPERKEY }}" KEYBASE_NYMBOT_TEAM: "${{ secrets.KEYBASE_NYMBOT_TEAM }}" KEYBASE_NYM_CHANNEL: "ci-nightly" IS_SUCCESS: "${{ env.WORKFLOW_CONCLUSION == 'success' }}" uses: docker://keybaseio/client:stable-node with: args: .github/workflows/support-files/notifications/entry_point.sh