diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000..f059577 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,116 @@ +name: CI +# Run on master, tags, or any pull request +on: + schedule: + - cron: '0 2 * * *' # Daily at 2 AM UTC (8 PM CST) + push: + branches: [master] + tags: ["*"] + pull_request: +concurrency: + # Skip intermediate builds: always. + # Cancel intermediate builds: only if it is a pull request build. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} +jobs: + test: + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + version: + - "1.0" # LTS + - "1" # Latest Release + os: + - ubuntu-latest + - macOS-latest + - windows-latest + arch: + - x64 + - x86 + exclude: + # Test 32-bit only on Linux + - os: macOS-latest + arch: x86 + - os: windows-latest + arch: x86 + include: + # Add specific version used to run the reference tests. + # Must be kept in sync with version check in `test/runtests.jl`, + # and with the branch protection rules on the repository which + # require this specific job to pass on all PRs + # (see Settings > Branches > Branch protection rules). + - os: ubuntu-latest + version: 1.7.2 + arch: x64 + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@v1 + with: + version: ${{ matrix.version }} + arch: ${{ matrix.arch }} + - uses: actions/cache@v2 + env: + cache-name: cache-artifacts + with: + path: ~/.julia/artifacts + key: ${{ runner.os }}-${{ matrix.arch }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.arch }}-test-${{ env.cache-name }}- + ${{ runner.os }}-${{ matrix.arch }}-test- + ${{ runner.os }}-${{ matrix.arch }}- + ${{ runner.os }}- + - uses: julia-actions/julia-buildpkg@latest + - run: | + git config --global user.name Tester + git config --global user.email te@st.er + - uses: julia-actions/julia-runtest@latest + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v2 + with: + files: lcov.info + + slack: + name: Notify Slack Failure + needs: test + runs-on: ubuntu-latest + if: always() && github.event_name == 'schedule' + steps: + - uses: technote-space/workflow-conclusion-action@v2 + - uses: voxmedia/github-action-slack-notify-build@v1 + if: env.WORKFLOW_CONCLUSION == 'failure' + with: + channel: nightly-dev + status: FAILED + color: danger + env: + SLACK_BOT_TOKEN: ${{ secrets.DEV_SLACK_BOT_TOKEN }} + + docs: + name: Documentation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@v1 + with: + version: '1' + - run: | + git config --global user.name name + git config --global user.email email + git config --global github.user username + - run: | + julia --project=docs -e ' + using Pkg + Pkg.develop(PackageSpec(path=pwd())) + Pkg.instantiate()' + - run: | + julia --project=docs -e ' + using Documenter: doctest + using PkgTemplates + doctest(PkgTemplates)' + - run: julia --project=docs docs/make.jl + env: + JULIA_PKG_SERVER: "" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} diff --git a/.github/workflows/CompatHelper.yml b/.github/workflows/CompatHelper.yml new file mode 100644 index 0000000..c988a3e --- /dev/null +++ b/.github/workflows/CompatHelper.yml @@ -0,0 +1,18 @@ +name: CompatHelper +on: + schedule: + - cron: '0 0 * * *' # Everyday at midnight + workflow_dispatch: +jobs: + CompatHelper: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Pkg.add("CompatHelper") + run: julia -e 'using Pkg; Pkg.add("CompatHelper")' + - name: CompatHelper.main() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COMPATHELPER_PRIV: ${{ secrets.DOCUMENTER_KEY }} + run: julia -e 'using CompatHelper; CompatHelper.main()' diff --git a/.github/workflows/JuliaNightly.yml b/.github/workflows/JuliaNightly.yml new file mode 100644 index 0000000..f521f61 --- /dev/null +++ b/.github/workflows/JuliaNightly.yml @@ -0,0 +1,32 @@ +name: JuliaNightly +# Nightly Scheduled Julia Nightly Run +on: + schedule: + - cron: '0 2 * * *' # Daily at 2 AM UTC (8 PM CST) +jobs: + test: + name: Julia Nightly - Ubuntu - x64 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: julia-actions/setup-julia@v1 + with: + version: nightly + arch: x64 + - uses: actions/cache@v2 + env: + cache-name: julia-nightly-cache-artifacts + with: + path: ~/.julia/artifacts + key: ${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} + restore-keys: | + ${{ env.cache-name }}- + - uses: julia-actions/julia-buildpkg@latest + - run: | + git config --global user.name Tester + git config --global user.email te@st.er + - uses: julia-actions/julia-runtest@latest + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v2 + with: + files: lcov.info diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml new file mode 100644 index 0000000..f49313b --- /dev/null +++ b/.github/workflows/TagBot.yml @@ -0,0 +1,15 @@ +name: TagBot +on: + issue_comment: + types: + - created + workflow_dispatch: +jobs: + TagBot: + if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' + runs-on: ubuntu-latest + steps: + - uses: JuliaRegistries/TagBot@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + ssh: ${{ secrets.DOCUMENTER_KEY }} diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index f45eecf..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,2 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - diff --git a/Project.toml b/Project.toml index e40618e..c88423e 100644 --- a/Project.toml +++ b/Project.toml @@ -3,6 +3,9 @@ uuid = "5c889d49-8c60-4500-9d10-5d3a22e2f4b9" authors = ["smataigne and contributors"] version = "0.1.0" +[deps] +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + [compat] julia = "1"