From 1a152ed7fa3838ef5d7756458566bcb993bd16fa Mon Sep 17 00:00:00 2001 From: valeros Date: Wed, 28 Apr 2021 20:18:23 +0300 Subject: [PATCH] Add deploy step to CI configuration --- .github/workflows/docs.yml | 78 +++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 4bab6a0a..2b03d146 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -4,6 +4,7 @@ on: [push, pull_request] jobs: build: + name: Build Docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -29,4 +30,79 @@ jobs: type: ${{ job.status }} job_name: '*Docs*' commit: true - url: ${{ secrets.SLACK_BUILD_WEBHOOK }} \ No newline at end of file + url: ${{ secrets.SLACK_BUILD_WEBHOOK }} + + - name: Preserve Docs + if: ${{ github.event_name == 'push' }} + run: | + tar -czvf docs.tar.gz -C docs/_build html rtdpage + + - name: Save artifact + if: ${{ github.event_name == 'push' }} + uses: actions/upload-artifact@v2 + with: + name: docs + path: ./docs.tar.gz + + deploy: + name: Deploy Docs + needs: build + runs-on: ubuntu-latest + env: + DOCS_DIR: platformio-docs + LATEST_DOCS_DIR: latest-docs + RELEASE_BUILD: ${{ startsWith(github.ref, 'refs/tags/v') }} + DOCS_REPO: platformio/platformio-docs + if: ${{ github.event_name == 'push' }} + steps: + - name: Download artifact + uses: actions/download-artifact@v2 + with: + name: docs + - name: Unpack artifact + run: | + mkdir ./LATEST_DOCS_DIR + tar -xzf ./docs.tar.gz -C ./LATEST_DOCS_DIR + - name: Delete Artifact + uses: geekyeggo/delete-artifact@v1 + with: + name: docs + - name: Select Docs type + id: get-destination-dir + run: | + if [[ ${{ env.RELEASE_BUILD }} == true ]]; then + echo "::set-output name=dst_dir::stable" + else + echo "::set-output name=dst_dir::latest" + fi + - name: Checkout latest Docs + continue-on-error: true + uses: actions/checkout@v2 + with: + repository: ${{ env.DOCS_REPO }} + path: ${{ env.DOCS_DIR }} + ref: gh-pages + - name: Synchronize Docs + run: | + rm -rf ${{ env.DOCS_DIR }}/.git + rm -rf ${{ env.DOCS_DIR }}/en/${{ steps.get-destination-dir.outputs.dst_dir }} + mkdir -p ${{ env.DOCS_DIR }}/en/${{ steps.get-destination-dir.outputs.dst_dir }} + cp -rf LATEST_DOCS_DIR/html/* ${{ env.DOCS_DIR }}/en/${{ steps.get-destination-dir.outputs.dst_dir }} + if [[ ${{ env.RELEASE_BUILD }} == false ]]; then + rm -rf ${{ env.DOCS_DIR }}/page + mkdir -p ${{ env.DOCS_DIR }}/page + cp -rf LATEST_DOCS_DIR/rtdpage/* ${{ env.DOCS_DIR }}/page + fi + - name: Validate Docs + run: | + if [ -z "$(ls -A ${{ env.DOCS_DIR }})" ]; then + echo "Docs folder is empty. Aborting!" + exit 1 + fi + - name: Deploy to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + personal_token: ${{ secrets.PERSONAL_TOKEN }} + external_repository: ${{ env.DOCS_REPO }} + publish_dir: ./${{ env.DOCS_DIR }} + commit_message: Sync Docs