diff --git a/.github/workflows/generateAndPublishDocc.yml b/.github/workflows/generateAndPublishDocc.yml new file mode 100644 index 0000000..5dd158d --- /dev/null +++ b/.github/workflows/generateAndPublishDocc.yml @@ -0,0 +1,67 @@ +# This workflow automates the process of generating and deploying documentation using DocC (Apple's documentation compiler). +# The workflow is triggered on push events to the 'main' branch and can also be manually triggered. + +name: publishDocc + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + pages: write + id-token: write + contents: read + +jobs: + build: + runs-on: macos-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Select latest Xcode version + run: sudo xcode-select -s /Applications/Xcode_15.0.app + + - name: Run Build Docs + run: | + REPOSITORY_NAME="${{ github.event.repository.name }}" + PACKAGE_NAME="GoodPersistence" + PACKAGE_NAME_LOWERCASE=$(echo "$PACKAGE_NAME" | tr '[:upper:]' '[:lower:]') + + # Build the DocC archive using xcodebuild. + xcrun xcodebuild docbuild \ + -scheme "$PACKAGE_NAME" \ + -destination 'generic/platform=iOS Simulator' \ + -derivedDataPath "$PWD/.derivedData" + + # Process the DocC archive for static hosting. + $(xcrun --find docc) process-archive \ + transform-for-static-hosting "$PWD/.derivedData/Build/Products/Debug-iphonesimulator/${PACKAGE_NAME}.doccarchive" \ + --output-path ".docs" \ + --hosting-base-path "$REPOSITORY_NAME" + + # Create an index.html file to redirect the browser to the documentation path. + echo '' > .docs/index.html + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + path: .docs + + deploy: + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} \ No newline at end of file