-
-
Notifications
You must be signed in to change notification settings - Fork 516
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Beginning work on new Svelte UI (#1417)
* Created new sveltekit project * Added VS Code launch support for svelte. * Added tailwind and dasiyui * Added helpful resources * Added models generated from swagger. * WIP Added login page * Updated login * Fixed launch config and updated login styles * WIP - login page validation work. * Added api client. * Added problem details * Fixed tests * Fixed tests * WIP Problem details. * Login page refactor * Some cleanup and get events list page * Minor * Store token in localstorage, redirect back to page after login * Logout page * Added api launch config * Fixed formatting. * Change default proxy port to match API. Some work on OAuth login. * Login page fixes * Fixed login page * Swagger fixes * Google login working * Adding other oauth providers * State is google specific * Added shared layout for auth pages. * Few minor oauth updates * Fixed merge build errors * Fixed build errors * Update deps * Applied linting * Regenerated models after Nullable reference types * Added default templates npx swagger-typescript-api generate-templates -o api-templates * Updates to client side model generation * Added ability to pull in fluent validation rules into swagger. * Updated generation * more generation improvements * Improved code gen * More code gen fixes * Updated signup model validation * code gen improvements * Removed constructor * Some cleanup of problem details / validation * Updated swagger config * WIP: MiniValidation with automatic problem details DamianEdwards/MiniValidation#51 * Login and logout flow + dashboard with auth detection. * Reverted some model state changes * Reworked how api client redirects * Added websockets and layout auth redirection * Added samples for both paging and infinity paging * Updated to tanstack query (other one was deprecated) * More example resources * Updated deps * Added paging helpers to json response * Updated server response types and base summary model * Added Events Table component which supports column selection, default summaries (WIP) * Pushed summary updates * FetchClient changes to add middleware and make it more generic * Add global default options to FetchClient, setup global model validator, and global middleware to redirect on 401. * Some small fixes. * some fetch updates * Fixed build warnings * Early WIP - Taillog component * Greatly improved summaries * some query client work * WIP event tail log * Always return search tokens * Updated deps * Added default public env file * Conditionally turn off account creation * Moved oauth to use env * Added exceptionless client * Fixed client warnings and errors by adding trace logging. * changed file type of hook * Fixed app login * Fixed summary formatters * More efficient events tail log. * Added temporary drawer * Added live mode, start of pager. * Moving app base to /next, more FetchClient updates, fix unmount code for eventstail component. * Some styling * More style * Conditionally render summaries * Added new websocket message component to streamline how we listen to events * Working on getting both client apps to run together * Remove lint from build * Handle fallback for /next client app * Fixed logo * Change URL to /next for SPA startup * Change launchUrl to match SPA url * Some paging updates * Added paging summary * Fixed paging * Fixed paging * Fixed the pager on mobile. * Created generic table component (WIP) * forward events https://learn.svelte.dev/tutorial/event-forwarding * Ensure json doesn't get new line inserted * Fixed summary tests * Fixed validation tests * Fixed all tests * Fixed bad auto git merge * Fixed redirect * Added pagination helper. * WIP: Added column sorting * Added column picker * Added ability to navigate to the first page * Fixed binding issue * Fixed callback * Fixed drawer * Use store for drawer and for live view * WIP search and filtering * Added empty table message. * Workaround for $$Generic sveltejs/svelte-eslint-parser#306 * Fixed linting errors, updated deps * Use global fetch / loading * Updated deps * Work arounds for slot forwarding, couldn't reuse let:variable syntax and had to use writables for page. sveltejs/svelte#7021 * use persisted storage for events column options * WIP events drawer * Updated deps * Rearranged models a bit and pulled in some models from the exceptionless client * Added components for time formatting * WIP: Events drawer and overview. * Fix issue with code formatter changing line endings and causing git issues. Turn daisyui banner off. * Parallelize build * Events Sidebar * Ran formatting * Try building just exceptionless all in one image during docker build step * Don't run client tests yet * Try only building app docker image * Set artifact retention * Tweak how we start docker services * Don't wait for docker compose * Debug * Try different approach * Checkout on deploy * Try different docker build * Another parallel approach * Break out deploy * More build tweaks * Add code coverage * Use run-all to run multiple tasks * Revert some CSP policy changes * Comment out unused code to pass lint rules * Allow http gravatar * Add missing logo back * increased sidebar width * WIP - Error and Simple error stack traces * Fixed http file * Updated deps * Reworked how stack traces are rendered * removed extra whitespace. * Whitespace formatting * More styling fixes * make stack trace look nicer * Updated deps * WIP: Clickable filters with ability to enter custom keyword filters. * rearranged loading rendering order in component due to global loader. * Renamed functions * Added more search + log level component * Fixed warning --------- Co-authored-by: Blake Niemyjski <[email protected]>
- Loading branch information
Showing
472 changed files
with
22,590 additions
and
9,747 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,98 +8,265 @@ env: | |
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | ||
|
||
jobs: | ||
build: | ||
|
||
version: | ||
|
||
runs-on: ubuntu-latest | ||
timeout-minutes: 30 | ||
outputs: | ||
version: ${{ steps.version.outputs.version }} | ||
|
||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Build Reason | ||
env: | ||
GITHUB_EVENT: ${{ toJson(github) }} | ||
run: "echo ref: ${{github.ref}} event: ${{github.event_name}}" | ||
|
||
- name: Version | ||
id: version | ||
run: | | ||
dotnet tool install --global minver-cli --version 4.3.0 | ||
version=$(minver --tag-prefix v) | ||
echo "version=$version" >> $GITHUB_OUTPUT | ||
echo "### $version" >> $GITHUB_STEP_SUMMARY | ||
test-api: | ||
|
||
runs-on: ubuntu-latest | ||
timeout-minutes: 30 | ||
|
||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Setup .NET Core | ||
uses: actions/setup-dotnet@v3 | ||
with: | ||
dotnet-version: 7.0.* | ||
dotnet-quality: ga | ||
- name: Build Version | ||
run: | | ||
dotnet tool install --global minver-cli --version 4.3.0 | ||
version=$(minver --tag-prefix v) | ||
echo "MINVERVERSIONOVERRIDE=$version" >> $GITHUB_ENV | ||
echo "VERSION=$version" >> $GITHUB_ENV | ||
echo "### Version: $version" >> $GITHUB_STEP_SUMMARY | ||
- name: Lint .NET | ||
run: dotnet format --verify-no-changes --no-restore --verbosity diagnostic | ||
- name: Build | ||
run: dotnet build --configuration Release /clp:NoSummary | ||
|
||
- name: Start Services | ||
working-directory: docker | ||
run: docker compose up -d elasticsearch & | ||
|
||
- uses: actions/cache@v3 | ||
with: | ||
path: ~/.nuget/packages | ||
key: nuget-${{ runner.os }}-${{ hashFiles('**/packages.lock.json') }} | ||
restore-keys: | | ||
nuget-${{ runner.os }}- | ||
- name: Nuget Restore | ||
run: dotnet restore | ||
|
||
- name: Build | ||
run: dotnet build --no-restore --configuration Release | ||
|
||
- name: Wait for Elasticsearch | ||
working-directory: docker | ||
run: docker compose up --wait elasticsearch | ||
- name: Run Tests | ||
run: dotnet test --configuration Release --no-build --logger GitHubActions | ||
|
||
- name: Run .NET Tests | ||
run: dotnet test --no-restore --no-build --configuration Release --collect:"XPlat Code Coverage" -m:1 --logger trx --results-directory coverage --logger GitHubActions | ||
|
||
- name: Copy Coverage to Predictable Location | ||
run: cp coverage/*/coverage.cobertura.xml coverage/coverage.cobertura.xml | ||
|
||
- name: Code Coverage Summary Report | ||
uses: irongut/[email protected] | ||
with: | ||
filename: coverage/coverage.cobertura.xml | ||
badge: true | ||
format: "markdown" | ||
output: "both" | ||
|
||
- name: Add Coverage PR Comment | ||
uses: marocchino/sticky-pull-request-comment@v2 | ||
if: github.event_name == 'pull_request' | ||
with: | ||
recreate: true | ||
path: code-coverage-results.md | ||
|
||
- name: Write Coverage to Job Summary | ||
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY | ||
|
||
test-client: | ||
|
||
runs-on: ubuntu-latest | ||
timeout-minutes: 30 | ||
defaults: | ||
run: | ||
working-directory: ./src/Exceptionless.Web/ClientApp | ||
|
||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Setup .NET Core | ||
uses: actions/setup-dotnet@v3 | ||
with: | ||
dotnet-version: 7.0.* | ||
dotnet-quality: ga | ||
|
||
- name: Cache node_modules | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
node_modules | ||
key: node-modules-${{ hashFiles('package-lock.json') }} | ||
|
||
- name: Setup Node.js environment | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 18 | ||
|
||
- name: Install Npm Packages | ||
working-directory: src/Exceptionless.Web/ClientApp | ||
run: npm ci | ||
|
||
- name: Lint Client | ||
working-directory: src/Exceptionless.Web/ClientApp | ||
run: | | ||
npm run lint | ||
npm run prettier:check | ||
run: npm run lint | ||
|
||
- name: Run Unit Tests | ||
run: echo "npm run test:unit" | ||
|
||
- name: Run Integration Tests | ||
run: echo "npm run test:integration" | ||
|
||
build-docker: | ||
|
||
runs-on: ubuntu-latest | ||
needs: [version] | ||
timeout-minutes: 30 | ||
env: | ||
VERSION: ${{needs.version.outputs.version}} | ||
|
||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Set up Docker Buildx | ||
if: "${{ env.DOCKER_USERNAME != '' }}" | ||
uses: docker/setup-buildx-action@v2 | ||
with: | ||
platforms: linux/amd64 | ||
|
||
- name: Build api docker image | ||
run: | | ||
echo "::remove-matcher owner=csc::" | ||
docker buildx build . --target api --platform linux/amd64 --tag exceptionless/api-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load | ||
- name: Build job docker image | ||
run: | | ||
echo "::remove-matcher owner=csc::" | ||
docker buildx build . --target job --platform linux/amd64 --tag exceptionless/job-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load | ||
- name: Build app docker image | ||
run: | | ||
echo "::remove-matcher owner=csc::" | ||
docker buildx build . --target app --platform linux/amd64 --tag exceptionless/app-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load | ||
- name: Build all-in-one docker image | ||
run: | | ||
echo "::remove-matcher owner=csc::" | ||
docker buildx build . --target exceptionless --platform linux/amd64 --tag exceptionless/exceptionless-ci:latest --cache-from type=gha --cache-to type=gha,mode=max --load | ||
- name: Build all-in-one Elasticsearch 7 docker image | ||
if: "${{ env.DOCKER_USERNAME != '' && startsWith(github.ref, 'refs/tags/v') && github.event_name != 'pull_request' }}" | ||
run: | | ||
echo "::remove-matcher owner=csc::" | ||
docker buildx build . --target exceptionless7 --platform linux/amd64 --tag exceptionless/exceptionless:latest-elasticsearch7 --cache-from type=gha --cache-to type=gha,mode=max --load | ||
- name: Login to GitHub Container Registry | ||
if: "${{ env.DOCKER_USERNAME != '' }}" | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Login to DockerHub | ||
if: "${{ env.DOCKER_USERNAME != '' }}" | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ env.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Wait for test jobs | ||
uses: yogeshlonkar/wait-for-jobs@v0 | ||
with: | ||
jobs: 'test-api,test-client' | ||
interval: '2500' | ||
ttl: '10' | ||
|
||
- name: Publish CI Packages | ||
if: "${{ env.DOCKER_USERNAME != '' }}" | ||
run: | | ||
echo "::remove-matcher owner=csc::" | ||
# tag and push docker image | ||
# tag and push docker images | ||
for image in {"api","job","app","exceptionless"}; do | ||
docker buildx build --target $image --platform linux/amd64 --output "type=image,push=true" . --tag exceptionless/$image-ci:$VERSION --tag exceptionless/$image-ci:latest --tag ghcr.io/exceptionless/exceptionless/$image:$VERSION --tag ghcr.io/exceptionless/exceptionless/$image:latest | ||
docker image tag exceptionless/$image-ci:latest exceptionless/$image-ci:$VERSION | ||
docker image tag exceptionless/$image-ci:latest ghcr.io/exceptionless/exceptionless/$image-ci:$VERSION | ||
docker image tag exceptionless/$image-ci:latest ghcr.io/exceptionless/exceptionless/$image-ci:latest | ||
docker image push --all-tags exceptionless/$image-ci | ||
done | ||
#docker buildx build --target exceptionless7 --platform linux/amd64 --output "type=image,push=true" . --tag exceptionless/exceptionless-ci:$VERSION-elasticsearch7 --tag exceptionless/exceptionless-ci:latest-elasticsearch7 --tag ghcr.io/exceptionless/exceptionless/exceptionless:$VERSION-elasticsearch7 --tag ghcr.io/exceptionless/exceptionless/exceptionless:latest-elasticsearch7 | ||
- name: Publish Release Packages | ||
if: "${{ env.DOCKER_USERNAME != '' && startsWith(github.ref, 'refs/tags/v') && github.event_name != 'pull_request' }}" | ||
run: | | ||
# tag and push docker image | ||
echo "::remove-matcher owner=csc::" | ||
# tag and push docker images | ||
# only build elasticsearch 7 all-in-one image for release builds | ||
docker image tag exceptionless/exceptionless:latest-elasticsearch7 exceptionless/exceptionless:$VERSION-elasticsearch7 | ||
for image in {"api","job","app","exceptionless"}; do | ||
docker buildx build --target $image --platform linux/amd64 --output "type=image,push=true" . --tag exceptionless/$image:$VERSION --tag exceptionless/$image:latest | ||
docker image tag exceptionless/$image-ci:latest exceptionless/$image:$VERSION | ||
docker image tag exceptionless/$image-ci:latest exceptionless/$image:latest | ||
docker image push --all-tags exceptionless/$image | ||
done | ||
docker buildx build --target exceptionless7 --platform linux/amd64 --output "type=image,push=true" . --tag exceptionless/exceptionless:$VERSION-elasticsearch7 --tag exceptionless/exceptionless:latest-elasticsearch7 | ||
deploy: | ||
if: "${{ (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) && github.event_name != 'pull_request' }}" | ||
needs: [version,build-docker] | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 30 | ||
env: | ||
VERSION: ${{needs.version.outputs.version}} | ||
|
||
steps: | ||
|
||
- name: Install Helm | ||
if: "${{ env.DOCKER_USERNAME != '' && github.event_name != 'pull_request' }}" | ||
uses: azure/setup-helm@v3 | ||
with: | ||
version: v3.11.1 | ||
version: v3.13.0 | ||
|
||
- name: Deploy Changes to Development Environment | ||
if: "${{ env.DOCKER_USERNAME != '' && github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }}" | ||
run: | | ||
az login --service-principal --username ${{ secrets.AZ_USERNAME }} --password ${{ secrets.AZ_PASSWORD }} --tenant ${{ secrets.AZ_TENANT }} --output none | ||
az aks get-credentials --resource-group exceptionless-v6 --name ex-k8s-v6 | ||
sed -i "s/^appVersion:.*$/appVersion: '${VERSION}'/" ./k8s/exceptionless/Chart.yaml | ||
helm upgrade --set "version=${VERSION}" --reuse-values --values ./k8s/ex-dev-values.yaml ex-dev --namespace ex-dev ./k8s/exceptionless | ||
- name: Deploy Changes to Production Environment | ||
if: "${{ env.DOCKER_USERNAME != '' && startsWith(github.ref, 'refs/tags/v') && github.event_name != 'pull_request' }}" | ||
run: | | ||
|
This file contains 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
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.