diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 39e1ce73b1..8569443881 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -259,44 +259,3 @@ jobs: version: "${{ needs.init.outputs.tag }}", } }) - - deploy-api-docs: - if: github.repository == 'esphome/esphome' && needs.init.outputs.branch_build == 'false' - runs-on: ubuntu-latest - needs: [init] - environment: ${{ needs.init.outputs.deploy_env }} - steps: - - name: Checkout repo - uses: actions/checkout@v4.1.7 - - - name: Set up Node.js - uses: actions/setup-node@v4.4.0 - with: - node-version: "22" - - - name: Generate docs - uses: mattnotmitt/doxygen-action@v1.12.0 - - - name: Deploy to netlify ${{ needs.init.outputs.deploy_env }} - if: needs.init.outputs.deploy_env != 'production' - env: - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - run: | - npx netlify-cli deploy \ - --dir api-docs \ - --no-build \ - --alias "${{ needs.init.outputs.deploy_env }}" \ - --message "Deploy API docs for ${{ needs.init.outputs.tag }}" - - - name: Deploy to netlify production - if: needs.init.outputs.deploy_env == 'production' - env: - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} - run: | - npx netlify-cli deploy \ - --dir api-docs \ - --no-build \ - --prod \ - --message "Deploy API docs for ${{ needs.init.outputs.tag }}" diff --git a/.netlify/netlify.toml b/.netlify/netlify.toml new file mode 100644 index 0000000000..7783414a91 --- /dev/null +++ b/.netlify/netlify.toml @@ -0,0 +1,3 @@ +[build] + command = "script/build-api-docs" + publish = "api-docs" diff --git a/script/build-api-docs b/script/build-api-docs new file mode 100755 index 0000000000..dbd215c9ee --- /dev/null +++ b/script/build-api-docs @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail +DOXYGEN_VERSION="1.12.0" +DOXYGEN_TAG="Release_${DOXYGEN_VERSION//./_}" + +DOXYGEN_PATH="doxygen" + +download_doxygen() { + TEMP_DIR="$(mktemp -d)" + trap 'rm -rf "$TEMP_DIR"' EXIT + pushd "$TEMP_DIR" >/dev/null + echo "downloading doxygen..." + curl -o doxygen.tar.gz -L "https://github.com/doxygen/doxygen/releases/download/${DOXYGEN_TAG}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz" + tar -xzf doxygen.tar.gz + rm doxygen.tar.gz + DOXYGEN_PATH="$TEMP_DIR/doxygen-${DOXYGEN_VERSION}/bin/doxygen" + popd >/dev/null + echo "doxygen downloaded successfully" +} + +# if doxygen command not found or version not as above, download it +if command -v doxygen &>/dev/null; then + DOXYGEN_VERSION_INSTALLED=$(doxygen --version) + if [[ $DOXYGEN_VERSION_INSTALLED != $DOXYGEN_VERSION ]]; then + echo "doxygen version $DOXYGEN_VERSION_INSTALLED found, but not the expected version $DOXYGEN_VERSION" + download_doxygen + else + echo "doxygen version $DOXYGEN_VERSION_INSTALLED found, using it" + fi +else + download_doxygen +fi + +exec $DOXYGEN_PATH