elm-pages-v3-beta/.github/workflows/ci.yml
2022-10-04 14:34:04 -07:00

171 lines
6.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Elm CI
on:
push:
branches:
- master
pull_request:
branches:
- master
- serverless-latest
env:
SESSION_SECRET: hello
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Use Node.js 18
uses: actions/setup-node@v1
with:
node-version: 18
# Re-use node_modules between runs until package-lock.json changes.
- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v2
with:
path: |
~/.cache/Cypress
node_modules
key: node_modules-node-v${{ matrix.node }}-${{ hashFiles('package-lock.json') }}
# Re-use ~/.elm between runs until elm.json, elm-tooling.json or
# review/elm.json changes. The Elm compiler saves downloaded Elm packages
# to ~/.elm, and elm-tooling saves downloaded tool executables there.
- name: Cache ~/.elm
uses: actions/cache@v2
with:
path: ~/.elm
key: elm-${{ hashFiles('elm.json', 'elm-tooling.json', 'generator/elm.json', 'review/elm.json', 'examples/routing/elm.json', 'examples/escaping/elm.json', 'examples/base-path/elm.json') }}
- name: Download lamdera
run: curl https://static.lamdera.com/bin/linux/lamdera-next-alpine-musl -o /usr/local/bin/lamdera && chmod a+x /usr/local/bin/lamdera
# Install npm packages, unless we restored them from cache.
# Since `npm ci` removes the node_modules folder before running its
# important to skip this step if cache was restored.
- name: npm ci
if: steps.cache-node_modules.outputs.cache-hit != 'true'
env:
# If you have a `"postinstall": "elm-tooling install"` script in your
# package.json, this turns it into a no-op. Well run it in the next
# step because of the caching. If elm-tooling.json changes but
# package-lock.json does not, the postinstall script needs running
# but this step wont.
NO_ELM_TOOLING_INSTALL: 1
run: npm ci
- name: elm-tooling install
run: npx --no-install elm-tooling install
- name: Global elm-format install
run: npm i -g elm-format@0.8.5
- name: Add elm-review, elm and elm-format to path
run: npm bin >> $GITHUB_PATH
- name: Tests
run: npm test
- uses: sparksp/elm-review-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: elm-format
run: npx --no-install elm-format --validate src/ generator/src
- name: Build elm docs
id: docs
run: lamdera make --docs docs.json
- name: Setup for cypress
run: (cd examples/end-to-end && npm install && npx elm-tooling install && rm -rf elm-stuff && npx elm-pages gen && lamdera make app/Route/Index.elm)
- name: Cypress tests
uses: cypress-io/github-action@v4
with:
start: npm start
wait-on: "http://localhost:1234"
wait-on-timeout: 60
- uses: actions/upload-artifact@v1
if: failure()
with:
name: cypress-screenshots
path: cypress/screenshots
- uses: actions/upload-artifact@v1
if: failure()
with:
name: cypress-videos
path: cypress/videos
- run: npx elm-tooling install
- name: Build base path example site
run: cd examples/base-path && npm install && npx elm-pages build --base elm-pages && cd ../..
- name: GitHub Pages Example Deploy
uses: peaceiris/actions-gh-pages@v3
if: ${{ github.ref == 'refs/heads/master' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./examples/base-path/dist
- name: Elm Publish
uses: dillonkearns/elm-publish-action@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-elm: ./node_modules/.bin/elm
- id: npm-publish
if: github.ref == 'refs/heads/master'
uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
tag: beta
windows-snapshots:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Download lamdera
shell: bash
run: mkdir bin && curl https://static.lamdera.com/bin/win/lamdera.exe -o ./bin/lamdera && chmod a+x ./bin/lamdera
- name: Add Lamdera to path
shell: bash
run: echo "$GITHUB_WORKSPACE/bin" >> $GITHUB_PATH
- name: Confirm that lamdera is on path
shell: bash
run: lamdera --version && which lamdera
- name: Use Node.js 16
uses: actions/setup-node@v1
with:
node-version: 16
# Re-use node_modules between runs until package-lock.json changes.
- name: Cache node_modules
id: cache-node_modules
uses: actions/cache@v2
with:
path: |
~/.cache/Cypress
node_modules
key: node_modules-node-windows-v${{ matrix.node }}-${{ hashFiles('package-lock.json') }}
- run: git config core.autocrlf true
# Re-use ~/.elm between runs until elm.json, elm-tooling.json or
# review/elm.json changes. The Elm compiler saves downloaded Elm packages
# to ~/.elm, and elm-tooling saves downloaded tool executables there.
- name: Cache ~/.elm
uses: actions/cache@v2
with:
path: ~/.elm
key: elm-windows-${{ hashFiles('elm.json', 'elm-tooling.json', 'generator/elm.json', 'review/elm.json') }}
# Install npm packages, unless we restored them from cache.
# Since `npm ci` removes the node_modules folder before running its
# important to skip this step if cache was restored.
- name: npm ci
shell: bash
if: steps.cache-node_modules.outputs.cache-hit != 'true'
env:
# If you have a `"postinstall": "elm-tooling install"` script in your
# package.json, this turns it into a no-op. Well run it in the next
# step because of the caching. If elm-tooling.json changes but
# package-lock.json does not, the postinstall script needs running
# but this step wont.
NO_ELM_TOOLING_INSTALL: 1
run: npm ci
- name: elm-tooling install
shell: bash
run: npx --no-install elm-tooling install
# - name: Snapshot Tests
# shell: bash
# run: (cd examples/escaping && npm install && npm test) && (cd examples/base-path && npm install && npm test)