diff --git a/.github/actions/docs/Dockerfile b/.github/actions/docs/Dockerfile new file mode 100644 index 000000000..458771951 --- /dev/null +++ b/.github/actions/docs/Dockerfile @@ -0,0 +1,11 @@ +FROM node:12-slim + +LABEL com.github.actions.name="Docs" +LABEL com.github.actions.description="Commit docs to the docs/ branch." +LABEL com.github.actions.icon="upload-cloud" +LABEL com.github.actions.color="blue" + +RUN apt-get update && apt-get install -y git + +COPY src /actions/docs/src +ENTRYPOINT ["/actions/docs/src/entrypoint.sh"] diff --git a/.github/actions/docs/src/entrypoint.sh b/.github/actions/docs/src/entrypoint.sh new file mode 100755 index 000000000..042c166aa --- /dev/null +++ b/.github/actions/docs/src/entrypoint.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +set -e + +cd $GITHUB_WORKSPACE + +# Run the build +npm run docs +NODE_ENV=production npm run build:browser + +# Initialise some useful variables +REPO="https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" +BRANCH_OR_TAG=`awk -F/ '{print $2}' <<< $GITHUB_REF` +CURRENT_BRANCH=`awk -F/ '{print $NF}' <<< $GITHUB_REF` + +if [ "$BRANCH_OR_TAG" == "heads" ]; then + SOURCE_TYPE="branch" +else + SOURCE_TYPE="tag" +fi + +# Checkout the repo in the target branch so we can build docs and push to it +TARGET_BRANCH="docs" +git clone $REPO out -b $TARGET_BRANCH + +# Move the generated JSON file to the newly-checked-out repo, to be committed and pushed +mv docs/docs.json out/$CURRENT_BRANCH.json + +# Commit and push +cd out +git add . +git config user.name "${GITHUB_ACTOR}" +git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" +git commit -m "Docs build for ${SOURCE_TYPE} ${CURRENT_BRANCH}: ${GITHUB_SHA}" || true +git push origin $TARGET_BRANCH + +# Clean up... +cd .. +rm -rf out + +# ...then do the same once more for the webpack +TARGET_BRANCH="webpack" +git clone $REPO out -b $TARGET_BRANCH + +# Move the generated webpack over +mv webpack/discord.min.js out/discord.$CURRENT_BRANCH.min.js + +# Commit and push +cd out +git add . +git config user.name "${GITHUB_ACTOR}" +git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" +git commit -m "Webpack build for ${SOURCE_TYPE} ${CURRENT_BRANCH}: ${GITHUB_SHA}" || true +git push origin $TARGET_BRANCH diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..5c01c2c75 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,25 @@ +name: Docs + +on: + push: + branches: + - '!gh-action' + - '!webpack' + - '!docs' + +jobs: + docs: + name: deploy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: install node v12 + uses: actions/setup-node@master + with: + node-version: 12 + - name: npm install + run: npm install + - name: deploy docs + uses: ./.github/actions/docs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..5f41b66e9 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,28 @@ +name: Lint + +on: + push: + pull_request: + +jobs: + lint: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: install node v12 + uses: actions/setup-node@v1 + with: + node-version: 12 + - name: npm install + run: npm install + - name: eslint + uses: discordjs/action-eslint@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + job-name: lint + - name: lint typings + run: npm run lint:typings + - name: lint docs + run: npm run docs:test diff --git a/travis/test.sh b/travis/test.sh index bef6134e9..83eb37e10 100644 --- a/travis/test.sh +++ b/travis/test.sh @@ -20,4 +20,4 @@ else fi # Run the tests -npm test +npm run docs:test && npm run lint:typings