Skip to content

Commit

Permalink
Publish livebooks.
Browse files Browse the repository at this point in the history
  • Loading branch information
christhekeele committed Apr 19, 2024
1 parent 2a1c39d commit 1d1418a
Show file tree
Hide file tree
Showing 5 changed files with 246 additions and 15 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/publish-site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Publish ❯ Site
# Generates and publishes site

on:
workflow_dispatch:

push:
branches: ["latest"]

concurrency:
group: publish-site-${{ github.ref }}
cancel-in-progress: true

jobs:
build-and-publish:
name: Build and Publish Site
runs-on: ${{ vars.PREFERRED_OS }}

environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

permissions:
contents: read
pages: write
id-token: write

steps:
- uses: actions/checkout@v4

- name: Install Erlang & Elixir
id: beam-versions
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ vars.PREFERRED_ELIXIR }}
otp-version: ${{ vars.PREFERRED_OTP }}

- name: Restore mix dependency installation cache
id: mix-deps-get-cache
uses: actions/cache@v4
with:
path: deps
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Install mix dependencies
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true'
run: mix deps.get

- name: Restore mix dependency compilation cache
id: mix-deps-compile-cache
uses: actions/cache@v4
with:
path: _build
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Compile mix dependencies
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true'
run: mix deps.compile

- name: Build site
run: mix build

- name: Upload build static site to Github Pages
uses: actions/upload-pages-artifact@v3
with:
path: "./site"

- name: Deploy artifact to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
168 changes: 168 additions & 0 deletions .github/workflows/test-suite.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: Test ❯ Suite
# Runs tests, typechecking, and linting.

on:
# Allow running from GitHub UI.
- workflow_dispatch
# Run on all pushes.
- push

env:
MIX_ENV: test

concurrency:
group: test-suite-${{ github.ref }}
cancel-in-progress: true

jobs:
tests:
name: Testing
runs-on: ${{ vars.PREFERRED_OS }}

steps:
- uses: actions/checkout@v4

- name: Install Erlang & Elixir
id: beam-versions
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ vars.PREFERRED_ELIXIR }}
otp-version: ${{ vars.PREFERRED_OTP }}

- name: Restore mix dependency installation cache
id: mix-deps-get-cache
uses: actions/cache@v4
with:
path: |
deps
mix.lock
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-${{ steps.beam-versions.outputs.otp-version }}-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-exs-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.exs')) }}

- name: Install mix dependencies
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true'
run: mix deps.get

- name: Restore mix dependency compilation cache
id: mix-deps-compile-cache
uses: actions/cache@v4
with:
path: _build
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-${{ steps.beam-versions.outputs.otp-version }}-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Compile mix dependencies
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true'
run: mix deps.compile

- name: Run test suite
run: mix test

types:
# Skip type checking for now
if: ${{ !always() }}
name: Typechecking
runs-on: ${{ vars.PREFERRED_OS }}

steps:
- uses: actions/checkout@v4

- name: Install Erlang & Elixir
id: beam-versions
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ vars.PREFERRED_ELIXIR }}
otp-version: ${{ vars.PREFERRED_OTP }}

- name: Restore mix dependency installation cache
id: mix-deps-get-cache
uses: actions/cache@v4
with:
path: deps
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Install mix dependencies
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true'
run: mix deps.get

- name: Restore mix dependency compilation cache
id: mix-deps-compile-cache
uses: actions/cache@v4
with:
path: _build
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Compile mix dependencies
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true'
run: mix deps.compile

- name: Restore mix typecheck cache
id: mix-typecheck-cache
uses: actions/cache@v4
with:
path: priv/plts
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-typecheck

- name: Setup typechecking
if: steps.mix-typecheck-cache.outputs.cache-hit != 'true'
run: mix typecheck.build-cache

- name: Run typecheck tasks
run: mix typecheck

lints:
name: Linting
runs-on: ${{ vars.PREFERRED_OS }}

steps:
- uses: actions/checkout@v4

- name: Install Erlang & Elixir
id: beam-versions
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ vars.PREFERRED_ELIXIR }}
otp-version: ${{ vars.PREFERRED_OTP }}

- name: Restore mix dependency installation cache
id: mix-deps-get-cache
uses: actions/cache@v4
with:
path: deps
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Install mix dependencies
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true'
run: mix deps.get

- name: Restore mix dependency compilation cache
id: mix-deps-compile-cache
uses: actions/cache@v4
with:
path: _build
key: cache-${{ vars.CACHE_VERSION }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}

- name: Compile mix dependencies
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true'
run: mix deps.compile

- name: Run linter tasks
run: mix lint
continue-on-error: true

results:
name: Test Suite Results
runs-on: ${{ vars.PREFERRED_OS }}

if: ${{ always() }}
needs:
- tests
- types
- lints

steps:
- name: Test Suite Succeeded
if: ${{ needs.tests.result == 'success' && needs.types.result == 'success' && needs.lints.result == 'success' }}
run: exit 0

- name: Test Suite Failed
if: ${{ needs.tests.result == 'failure' || needs.types.result == 'failure' || needs.lints.result == 'failure' }}
run: exit 1
11 changes: 2 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,5 @@ livebooks-*.tar
# Temporary files, for example, from tests.
/tmp/

/build/

# /doc/assets/
# /doc/dist
# /doc/*.epub
# /doc/*.html
# /doc/*.md
# /doc/*.livemd
# /doc/*.cheatmd
# Where our actual built site resides (build via "mix build").
/site/
7 changes: 4 additions & 3 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ defmodule Livebooks.MixProject do

def cli,
do: [
# default_task: :docs,
# preferred_envs: [docs: :docs]
default_task: :docs,
preferred_envs: [docs: :docs]
]

def application(),
Expand Down Expand Up @@ -87,7 +87,8 @@ defmodule Livebooks.MixProject do
source_url: @github_url,
homepage_url: @homepage_url,
# Files and Layout
output: "build",
output: "site",
formatter: "html",
main: "home",
api_reference: false,
extra_section: "LIVEBOOKS",
Expand Down
5 changes: 2 additions & 3 deletions test/livebooks_test.exs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
defmodule LivebooksTest do
use ExUnit.Case
doctest Livebooks

test "greets the world" do
assert Livebooks.hello() == :world
test "passes" do
assert true
end
end

0 comments on commit 1d1418a

Please sign in to comment.