From e8451561ed742a0b49775591c57d37a6e927287f Mon Sep 17 00:00:00 2001 From: Crawl Date: Sat, 24 Aug 2019 19:32:18 +0200 Subject: [PATCH] ci: github actions (#3442) * feat: eslint action * refactor: actions v2 * fix: set +x for entrypoint * ci: integrate docs * fix: give it a nice name * ci: publish docs * ci: fix yaml key error * ci: fix executable * ci: use normal sh shebang * ci: move into the workspace * ci: fix eslint path * ci: manually run the build * ci: use different container * ci: install git * ci: assume yes flag * ci: use correct branch * ci: fix branch and source * ci: fix condition * ci: remove useless steps * ci: rename action * ci: make executable again * ci: cleanup * ci: add stable branch * ci: remove semi * ci: do some logging for failing action * ci: remove actions api * ci: re-add semi * ci: use actions repo * ci: use v1 tags * ci: remove semi * chore: change job name passed to eslint * chore: dummy commit, remove different semi * ci: change job name * chore: dummy commit * ci: add gh-actions as possible branches * ci: lint all branches * ci: dummy * ci: separate pr and push * chore: run actions on gh branch * ci: try excluding branches --- .github/actions/docs/Dockerfile | 11 ++++++ .github/actions/docs/src/entrypoint.sh | 54 ++++++++++++++++++++++++++ .github/workflows/docs.yml | 25 ++++++++++++ .github/workflows/lint.yml | 28 +++++++++++++ travis/test.sh | 2 +- 5 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 .github/actions/docs/Dockerfile create mode 100755 .github/actions/docs/src/entrypoint.sh create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/lint.yml 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