blob: ef2b7a5a89aa80ccae156d346b387df6a2c05c50 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
name: Deploy Avro site
on:
push:
branches:
- master
paths:
- .github/workflows/docs.yaml
- doc/**
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-website:
name: Build website
runs-on: ubuntu-latest
steps:
- name: Checkout docs sources
uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Install NPM dependencies
working-directory: doc
run: npm install
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 0.111.3
extended: true
- name: Build docs
working-directory: doc
run: hugo --minify --destination ../website --baseURL=/
- uses: actions/upload-artifact@v3
with:
name: website
path: website
build-api-c:
name: Build C API docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build C docs
run: |
set -x
sudo apt-get update -q
sudo apt-get install -q -y cmake liblzma-dev libsnappy-dev libjansson-dev zlib1g-dev pkg-config asciidoc source-highlight libsource-highlight-dev
cd lang/c
./build.sh clean docs
- uses: actions/upload-artifact@v3
with:
name: api-c
path: build/c/docs
build-api-cpp:
name: Build C++ API docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build C++ docs
run: |
set -x
sudo apt-get update -q
sudo apt-get install -q -y gcc g++ libboost-all-dev cmake doxygen
cd lang/c++
./build.sh clean doc
- uses: actions/upload-artifact@v3
with:
name: api-c++
path: lang/c++/doc/html
build-api-csharp:
name: Build C# API docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build C# docs
run: |
set -x
sudo apt-get update -q
sudo apt-get install -q -y wget libzstd-dev libicu-dev doxygen
sudo wget https://dot.net/v1/dotnet-install.sh
bash ./dotnet-install.sh --channel "7.0" --install-dir "$HOME/.dotnet"
cd lang/csharp
mkdir -p build/doc
doxygen Avro.dox
- uses: actions/upload-artifact@v3
with:
name: api-csharp
path: lang/csharp/build/doc/html
build-api-java:
name: Build Java API docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache Local Maven Repository
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Setup Temurin JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 8
- name: Build Java docs
run: |
set -x
cd lang/java
mvn javadoc::aggregate
- uses: actions/upload-artifact@v3
with:
name: api-java
path: lang/java/target/site/apidocs
build-api-python:
name: Build Python API docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install tox
run: python3 -m pip install tox
- name: Build docs
working-directory: lang/py
run: ./build.sh doc
- uses: actions/upload-artifact@v3
with:
name: api-python
path: lang/py/docs/build/
push-website:
name: Push website
needs: [build-website, build-api-c, build-api-cpp, build-api-csharp, build-api-java]
runs-on: ubuntu-latest
steps:
- name: Checkout asf-site branch
uses: actions/checkout@v3
with:
ref: asf-site
path: asf-site
- name: Download website
uses: actions/download-artifact@v3
with:
name: website
path: website
- name: Download api-c
uses: actions/download-artifact@v3
with:
name: api-c
path: api-c
- name: Download api-c++
uses: actions/download-artifact@v3
with:
name: api-c++
path: api-c++
- name: Download api-csharp
uses: actions/download-artifact@v3
with:
name: api-csharp
path: api-csharp
- name: Download api-java
uses: actions/download-artifact@v3
with:
name: api-java
path: api-java
- name: Download api-python
uses: actions/download-artifact@v3
with:
name: api-python
path: api-python
- name: Copy & push the generated HTML
run: |
set -x
mkdir -p website/docs/++version++/api/c
mkdir -p website/docs/++version++/api/cpp/html
mkdir -p website/docs/++version++/api/csharp/html
mkdir -p website/docs/++version++/api/java
mv api-c/* website/docs/++version++/api/c/
mv api-c++/* website/docs/++version++/api/cpp/html/
mv api-csharp/* website/docs/++version++/api/csharp/html/
mv api-java/* website/docs/++version++/api/java/
mv api-python/* website/docs/++version++/api/python/html/
rmdir api-c api-c++ api-csharp api-java
cd asf-site
rsync \
-a \
--delete \
--exclude '/.git/' \
../website/ \
./
echo "publish:
whoami: asf-site
" > .asf.yaml
touch .nojekyll
git status --porcelain
if [ "$(git status --porcelain)" != "" ]; then
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add --all
git commit -m 'Publish built docs triggered by ${{ github.sha }}'
git push || git push --force
fi