Deploy to GitHub Pages #115
This file contains hidden or 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: Deploy to GitHub Pages | |
| on: | |
| #push: | |
| # branches: [ master ] | |
| workflow_run: | |
| workflows: ["Build BCL Package"] # Name of the workflow to trigger from. | |
| types: | |
| - completed | |
| permissions: | |
| contents: read | |
| actions: write | |
| # repository_dispatch: write | |
| env: | |
| BCL_Source: "https://nuget.pkg.github.com/phil-nhs/index.json" | |
| #GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| #GITHUB_TOKEN: ${{ secrets.PACKAGES_TOKEN }} | |
| PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }} | |
| GITHUB_USERNAME: "Phil-NHS" | |
| IS_LOCAL_DEV: false | |
| USE_BCL_PROJECT_REFERENCE: false | |
| jobs: | |
| get-bcl-version: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| bcl-version: ${{ steps.get-bcl-version-from-git-packages.outputs.latest-bcl-version }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| - name: Get BCL Version from Git Packages | |
| id: get-bcl-version-from-git-packages | |
| run: | | |
| TOKEN="$GITHUB_TOKEN" | |
| OWNER="Phil-NHS" | |
| PACKAGE_NAME="TELBlazorComponentLibrary.GitPageBlazorWasm" | |
| BCL_PACKAGE_PATH="https://api.github.com/users/$OWNER/packages/nuget/$PACKAGE_NAME/versions" | |
| echo "API Path: $BCL_PACKAGE_PATH" | |
| VERSION_JSON=$(curl -s -H "Authorization: Bearer $TOKEN" -H "Accept: application/vnd.github+json" $BCL_PACKAGE_PATH) | |
| echo "$VERSION_JSON" | |
| LATEST_VERSION=$(echo "$VERSION_JSON" | jq -r '.[0].name') | |
| echo "latest-bcl-version=$LATEST_VERSION" >> $GITHUB_OUTPUT | |
| update-gh-page: | |
| needs: get-bcl-version | |
| runs-on: ubuntu-latest | |
| env: | |
| BCL_VERSION: ${{ needs.get-bcl-version.outputs.bcl-version }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '8.0.x' | |
| - name: Replace local environment variable in nuget config because cant provide it as a parameter | |
| run: | | |
| sed -i "s|%LocalPackagePath%|$BCL_Source|g" nuget.config | |
| sed -i "s|%GITHUB_USERNAME%|$GITHUB_USERNAME|g" nuget.config | |
| sed -i "s|%GITHUB_PACKAGES_TOKEN%|$PACKAGES_TOKEN |g" nuget.config | |
| - name: debug values | |
| run: | | |
| echo "BCL_VERSION $BCL_VERSION" | |
| - name: Publish client using client release .csproj logic | |
| run: | | |
| dotnet publish ./TestHostPrerenderWASM/TestHostPrerenderWASM.Client/TestHostPrerenderWASM.Client.csproj --configuration Release \ | |
| /p:IsLocalDev=$IS_LOCAL_DEV \ | |
| /p:BCLVersion=$BCL_VERSION \ | |
| /p:UseBCLProjectReference=$USE_BCL_PROJECT_REFERENCE | |
| # qqqq nice to have would be only running if version number increase | |
| - name: Creating artifact of publish folder for test gh page workflow | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: gh-blazor-components-wiki-site-using-package-${{env.BCL_VERSION}} | |
| path: ./docs | |
| retention-days: 90 | |
| - name: Debug artifact location | |
| run: | | |
| # Get the artifact list for the current workflow run | |
| ARTIFACT_LIST=$(gh api "repos/TechnologyEnhancedLearning/GitPageBlazorWASM/actions/runs/${GITHUB_RUN_ID}/artifacts") | |
| # Echo the entire artifact list for debugging purposes | |
| echo "Artifact List: $ARTIFACT_LIST" | |
| # Extract the download URL from the artifact list (first artifact in the list) | |
| #ARTIFACT_URL=$(echo "$ARTIFACT_LIST" | jq -r '.artifacts[0].archive_download_url') | |
| ARTIFACT_URL=$(echo "$ARTIFACT_LIST" | jq -r '.artifacts[0].url') | |
| # Echo the artifact URL to confirm | |
| echo "Artifact URL: $ARTIFACT_URL" | |
| echo "artifact_url=$ARTIFACT_URL" >> $GITHUB_ENV | |
| - name: Trigger Workflow in Another Repository | |
| run: | | |
| # Set the required variables | |
| repo_owner="TechnologyEnhancedLearning" # Replace with the repository owner (organization or user) | |
| repo_name="GitPageBlazorWASM-TestGHPage" # Replace with the repository name | |
| event_type="artifact_ready" | |
| #artifact_url="https://api.github.com/repos/TechnologyEnhancedLearning/GitPageBlazorWASM/actions/artifacts/2859947943" | |
| # Trigger the workflow in another repository | |
| curl -L \ | |
| -X POST \ | |
| -H "Accept: application/vnd.github+json" \ | |
| -H "Authorization: Bearer ${{ secrets.PACKAGES_TOKEN }}" \ | |
| -H "X-GitHub-Api-Version: 2022-11-28" \ | |
| https://api.github.com/repos/$repo_owner/$repo_name/dispatches \ | |
| -d "{\"event_type\": \"$event_type\", \"client_payload\": {\"artifact_url\": \"$artifact_url\"}}" | |
| - name: Deploy to GitHub Pages | |
| uses: JamesIves/github-pages-deploy-action@v4 | |
| with: | |
| folder: docs # The folder the action should deploy | |
| branch: gh-pages # The branch the action should deploy to | |
| # { | |
| # "id": 2859123465, | |
| # "node_id": "MDg6QXJ0aWZhY3QyODU5MTIzNDY1", | |
| # "name": "gh-blazor-components-wiki-site-using-package-1.2.27-DEV-master-250401-12-36-20", | |
| # "size_in_bytes": 8934640, | |
| # "url": "https://api.github.com/repos/TechnologyEnhancedLearning/GitPageBlazorWASM/actions/artifacts/2859123465", | |
| # "archive_download_url": "https://api.github.com/repos/TechnologyEnhancedLearning/GitPageBlazorWASM/actions/artifacts/2859123465/zip", | |
| # "expired": false, | |
| # "digest": "sha256:0f2f65b4ee432facd62b1558a2d3feaf59a9a58f2d5d8cfc066cb3a84194fd2c", | |
| # "created_at": "2025-04-01T12:38:01Z", | |
| # "updated_at": "2025-04-01T12:38:01Z", | |
| # "expires_at": "2025-06-30T12:37:04Z", | |
| # "workflow_run": { | |
| # "id": 14195776281, | |
| # "repository_id": 942679037, | |
| # "head_repository_id": 942679037, | |
| # "head_branch": "master", | |
| # "head_sha": "aa71ffeaee45e4f5d9edbe84c0da15dee5397eb2" | |
| # } | |
| # } | |
| # need gh or curl using gh for gh api actions | |
| # - name: Install GitHub CLI | |
| # run: | | |
| # sudo apt update | |
| # sudo apt install gh -y | |
| # need gh or curl using gh for gh api actions - we have a token | |
| # - name: Authenticate GitHub CLI | |
| # run: | | |
| # echo ${{ secrets.PACKAGES_TOKEN }} | gh auth login --with-token | |
| # - name: one line | |
| # run: gh api repos/TechnologyEnhancedLearning/GitPageBlazorWASM-TestGHPage/dispatches -H "Authorization: token $PACKAGES_TOKEN" -f event_type=artifact_ready -f client_payload="{\"artifact_url\": \"$artifact_url\"}" | |
| # - name: gh api dispatch | |
| # run: | | |
| # gh api repos/TechnologyEnhancedLearning/GitPageBlazorWASM-TestGHPage/dispatches \ | |
| # --method POST \ | |
| # --field event_type=artifact_ready \ | |
| # --field client_payload='{"artifact_url": "'"$artifact_url"'" }' || echo "gh api failed, continuing..." | |
| # - name: curl dispatch | |
| # run: | | |
| # curl -X POST https://api.github.com/repos/TechnologyEnhancedLearning/GitPageBlazorWASM-TestGHPage/dispatches \ | |
| # -H "Authorization: token $GITHUB_TOKEN" \ | |
| # -H "Accept: application/vnd.github.v3+json" \ | |
| # -d '{"event_type": "artifact_ready", "client_payload": {"artifact_url": "'"$artifact_url"'"}}' || echo "curl failed, continuing..." | |
| # # dont think token has what it needs -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" | |
| # - name: Dispatch artifact ready event to test environment gh page | |
| # run: | | |
| # # Use the artifact URL that was passed from the previous step | |
| # echo "Artifact URL: $artifact_url" | |
| # # Dispatch the artifact URL to the other repository | |
| # gh api \ | |
| # "repos/TechnologyEnhancedLearning/GitPageBlazorWASM-TestGHPage/dispatches" \ | |
| # -f event_type=artifact_ready \ | |
| # -f client_payload='{"artifact_url": "'"$artifact_url"'"}' | |
| # - name: gh api dispatch | |
| # run: | | |
| # gh api repos/TechnologyEnhancedLearning/GitPageBlazorWASM-TestGHPage/dispatches \ | |
| # --method POST \ | |
| # --field event_type=artifact_ready \ | |
| # --field client_payload='{"artifact_url": "'"$artifact_url"'" }' || echo "gh api failed, continuing..." | |