publish-site #40
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: site-publish | |
# Publishes Github Site Pages for twitter/util, twitter/scrooge, twitter/finagle, | |
# twitter/twitter-server, and twitter/finatra | |
# | |
# Expects a repository dispatch event: https://developer.github.com/v3/repos/#create-a-repository-dispatch-event | |
# in the form of JSON data POST to /repos/twitter/dodo/dispatches: | |
# | |
# { | |
# "event_type": "publish-site", | |
# "client_payload": { | |
# "dry_run": true | |
# } | |
# } | |
env: | |
JAVA_OPTS: "-Dsbt.log.noformat=true" | |
API_USER: ${{ secrets.API_USER }} | |
API_KEY: ${{ secrets.API_KEY }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
SCALA_VERSION: "2.13" | |
REMOTE_BASE: "https://${API_USER}:${API_KEY}@github.com/twitter" | |
defaults: | |
run: | |
shell: bash --noprofile --norc -eux -o pipefail {0} | |
on: | |
repository_dispatch: | |
types: [publish-site] | |
jobs: | |
publish-site: | |
runs-on: ubuntu-latest | |
steps: | |
- name: dump/context | |
env: | |
GITHUB_CONTEXT: ${{ toJson(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
- uses: actions/checkout@v2.3.4 | |
- uses: actions/setup-java@v1 | |
with: | |
java-version: 1.8 | |
- uses: olafurpg/setup-scala@v10 | |
with: | |
java-version: adopt@1.8 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: 3.6 | |
- name: setup/sphinx | |
run: | | |
sudo apt-get update | |
sudo apt-get install python3-sphinx | |
- name: setup/git | |
run: | | |
git config --global user.email "${API_USER}@twitter.com" | |
git config --global user.name "$API_USER" | |
# publish util site | |
- name: checkout/util | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/util | |
token: ${{ secrets.API_KEY }} | |
ref: release | |
path: util | |
- name: generate/util | |
run: | | |
./sbt --warn util-doc/makeSite | |
./sbt --warn unidoc | |
working-directory: ${{ github.workspace }}/util | |
- name: checkout/util-gh-pages | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/util | |
token: ${{ secrets.API_KEY }} | |
ref: gh-pages | |
path: util-gh-pages | |
- name: publish/util-gh-pages | |
run: | | |
touch .nojekyll | |
cp ${{ github.workspace }}/util/site/index.html . | |
rm -fr docs/ | |
cp -r ${{ github.workspace }}/util/target/scala-$SCALA_VERSION/unidoc/ docs/ | |
rm -fr guide/ | |
cp -r ${{ github.workspace }}/util/doc/target/site/ guide/ | |
git add . | |
git commit --allow-empty -m "site publish by $API_USER" | |
git diff --name-only origin/gh-pages gh-pages | |
working-directory: ${{ github.workspace }}/util-gh-pages | |
- name: push/util-gh-pages | |
if: ${{ !github.event.client_payload.dry_run }} | |
run: | | |
git push $REMOTE_BASE/util.git HEAD | |
working-directory: ${{ github.workspace }}/util-gh-pages | |
# publish scrooge site | |
- name: checkout/scrooge | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/scrooge | |
token: ${{ secrets.API_KEY }} | |
ref: release | |
path: scrooge | |
- name: generate/scrooge | |
run: | | |
./sbt --warn scrooge-doc/makeSite | |
working-directory: ${{ github.workspace }}/scrooge | |
- name: checkout/scrooge-gh-pages | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/scrooge | |
token: ${{ secrets.API_KEY }} | |
ref: gh-pages | |
path: scrooge-gh-pages | |
- name: publish/scrooge-gh-pages | |
run: | | |
git rm -fr --ignore-unmatch . | |
touch .nojekyll | |
cp -r ${{ github.workspace }}/scrooge/doc/target/site/* . | |
git add . | |
git commit --allow-empty -m "site publish by $API_USER" | |
git diff --name-only origin/gh-pages gh-pages | |
working-directory: ${{ github.workspace }}/scrooge-gh-pages | |
- name: push/scrooge-gh-pages | |
if: ${{ !github.event.client_payload.dry_run }} | |
run: | | |
git push $REMOTE_BASE/scrooge.git HEAD | |
working-directory: ${{ github.workspace }}/scrooge-gh-pages | |
# publish finagle site | |
- name: checkout/finagle | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/finagle | |
token: ${{ secrets.API_KEY }} | |
ref: release | |
path: finagle | |
- name: generate/finagle | |
run: | | |
./sbt --warn finagle-doc/makeSite | |
./sbt --warn unidoc | |
working-directory: ${{ github.workspace }}/finagle | |
- name: checkout/finagle-gh-pages | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/finagle | |
token: ${{ secrets.API_KEY }} | |
ref: gh-pages | |
path: finagle-gh-pages | |
- name: publish/finagle-gh-pages | |
run: | | |
touch .nojekyll | |
cp ${{ github.workspace }}/finagle/site/index.html . | |
rm -fr docs/ | |
cp -r ${{ github.workspace }}/finagle/target/scala-$SCALA_VERSION/unidoc/ docs/ | |
rm -fr guide/ | |
cp -r ${{ github.workspace }}/finagle/doc/target/site/ guide/ | |
git add . | |
git commit --allow-empty -m "site publish by $API_USER" | |
git diff --name-only origin/gh-pages gh-pages | |
working-directory: ${{ github.workspace }}/finagle-gh-pages | |
- name: push/finagle-gh-pages | |
if: ${{ !github.event.client_payload.dry_run }} | |
run: | | |
git push $REMOTE_BASE/finagle.git HEAD | |
working-directory: ${{ github.workspace }}/finagle-gh-pages | |
# publish twitter-server site | |
- name: checkout/twitter-server | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/twitter-server | |
token: ${{ secrets.API_KEY }} | |
ref: release | |
path: twitter-server | |
- name: generate/twitter-server | |
run: | | |
./sbt --warn twitterServerDoc/makeSite | |
working-directory: ${{ github.workspace }}/twitter-server | |
- name: checkout/twitter-server-gh-pages | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/twitter-server | |
token: ${{ secrets.API_KEY }} | |
ref: gh-pages | |
path: twitter-server-gh-pages | |
- name: publish/twitter-server-gh-pages | |
run: | | |
git rm -fr --ignore-unmatch . | |
touch .nojekyll | |
cp -r ${{ github.workspace }}/twitter-server/doc/target/site/* . | |
git add . | |
git commit --allow-empty -m "site publish by $API_USER" | |
git diff --name-only origin/gh-pages gh-pages | |
working-directory: ${{ github.workspace }}/twitter-server-gh-pages | |
- name: push/twitter-server-gh-pages | |
if: ${{ !github.event.client_payload.dry_run }} | |
run: | | |
git push $REMOTE_BASE/twitter-server.git HEAD | |
working-directory: ${{ github.workspace }}/twitter-server-gh-pages | |
# publish finatra site | |
- name: checkout/finatra | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/finatra | |
token: ${{ secrets.API_KEY }} | |
ref: release | |
path: finatra | |
- name: generate/finatra | |
run: | | |
./sbt --warn site/makeSite | |
./sbt --warn unidoc | |
working-directory: ${{ github.workspace }}/finatra | |
- name: checkout/finatra-gh-pages | |
uses: actions/checkout@v2.3.4 | |
with: | |
repository: twitter/finatra | |
token: ${{ secrets.API_KEY }} | |
ref: gh-pages | |
path: finatra-gh-pages | |
- name: publish/finatra-gh-pages | |
run: | | |
git rm -fr --ignore-unmatch . | |
touch .nojekyll | |
cp -r ${{ github.workspace }}/finatra/doc/target/site/* . | |
cp -r ${{ github.workspace }}/finatra/target/scala-$SCALA_VERSION/unidoc/ scaladocs/ | |
git add . | |
git commit --allow-empty -m "site publish by $API_USER" | |
git diff --name-only origin/gh-pages gh-pages | |
working-directory: ${{ github.workspace }}/finatra-gh-pages | |
- name: push/finatra-gh-pages | |
if: ${{ !github.event.client_payload.dry_run }} | |
run: | | |
git push $REMOTE_BASE/finatra.git HEAD | |
working-directory: ${{ github.workspace }}/finatra-gh-pages | |
- name: slack/notification-failure | |
if: ${{ cancelled() || failure() }} | |
run: ${{ github.workspace }}/bin/slack --verbose --denote-dry-run ${{ github.event.client_payload.dry_run }} --message "📓 ${{ github.event.client_payload.version }} Site publish \`failed\`." --color "#DA2700" | |
- name: slack/notification-success | |
if: ${{ success() }} | |
run: ${{ github.workspace }}/bin/slack --verbose --denote-dry-run ${{ github.event.client_payload.dry_run }} --message "📓 ${{ github.event.client_payload.version }} Site publish \`successful\`." --color "#229954" |