From b02b88cf56767e8e86099b8039d108d5a68d536d Mon Sep 17 00:00:00 2001 From: Diane Batres Date: Fri, 22 Aug 2025 17:23:31 -0400 Subject: [PATCH 1/2] Add workflow files for ai metadata generation --- .github/workflows/ai-deploy-request.yml | 45 +++++++++++++++++++++++++ .github/workflows/ai-pr-request.yml | 40 ++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 .github/workflows/ai-deploy-request.yml create mode 100644 .github/workflows/ai-pr-request.yml diff --git a/.github/workflows/ai-deploy-request.yml b/.github/workflows/ai-deploy-request.yml new file mode 100644 index 000000000..4ae188a70 --- /dev/null +++ b/.github/workflows/ai-deploy-request.yml @@ -0,0 +1,45 @@ +--- +########################### +########################### +## Deployment AI generation testing ## +########################### +########################### + +name: Hackathon Deployment Request + +###################################################### +# Start the job on a "deployment" to hackathon-test or other branch # +###################################################### + +on: + workflow_dispatch: + inputs: + target_branch: + description: "Target branch to send PR to (e.g., main, stage, etc)" + type: string + required: false + default: "hackathon-test" + +############### +# Set the Job # +############### + +jobs: + ai-metadata-update: + name: AI Metadata Update on Deployment + uses: AdobeDocs/adp-devsite-workflow/.github/workflows/ai-deploy-metadata.yml@app-builder-test + with: + FILE_NAME: "all_pages_content.txt" + secrets: + AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }} + AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }} + + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Lint + run: npx --yes github:AdobeDocs/adp-devsite-utils#add-lint-check runLint -v diff --git a/.github/workflows/ai-pr-request.yml b/.github/workflows/ai-pr-request.yml new file mode 100644 index 000000000..e738dea27 --- /dev/null +++ b/.github/workflows/ai-pr-request.yml @@ -0,0 +1,40 @@ +--- +########################### +########################### +## Pull request testing ## +########################### +########################### +name: Hackathon Pull Request + +# Documentation: +# - Workflow: https://help.github.com/en/articles/workflow-syntax-for-github-actions +# - SuperLinter: https://github.com/github/super-linter +# - Markdown linter: https://github.com/DavidAnson/markdownlint +# - Link validation: https://github.com/remarkjs/remark-validate-links + +###################################################### +# Start the job on a pull request to the hackathon-test branch # +###################################################### +on: + pull_request: + branches: [hackathon-test] + paths: + - 'src/pages/**' + +############### +# Set the Job # +############### +jobs: + call_reusable_workflow: + name: Generate AI Metadata + # Skip if PR title starts with "[AI PR] Metadata Update" or branch name starts with "ai-metadata" + if: >- + !startsWith(github.event.pull_request.title, '[AI PR] Metadata Update') || + !startsWith(github.event.pull_request.head.ref, 'ai-metadata') + uses: AdobeDocs/adp-devsite-workflow/.github/workflows/ai-pr-request-metadata.yml@app-builder-test + with: + PR_ID: ${{ github.event.pull_request.number }} + FILE_NAME: "pr_content.txt" + secrets: + AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }} + AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }} From c62d1b98b6474cda1cafdc4dd31fe070e7dcce02 Mon Sep 17 00:00:00 2001 From: Diane Batres Date: Mon, 25 Aug 2025 16:09:27 -0400 Subject: [PATCH 2/2] multiple types of files with varying degrees of metadata --- src/pages/hackathon/aep-foundation.png | Bin 0 -> 40611 bytes src/pages/hackathon/assets.md | 17 ++++ src/pages/hackathon/index.md | 45 ++++++++++ .../hackathon/new-files/adobe-express.svg | 8 ++ src/pages/hackathon/new-files/references.md | 41 +++++++++ src/pages/hackathon/new-files/runtimes.md | 82 ++++++++++++++++++ 6 files changed, 193 insertions(+) create mode 100644 src/pages/hackathon/aep-foundation.png create mode 100644 src/pages/hackathon/assets.md create mode 100644 src/pages/hackathon/index.md create mode 100644 src/pages/hackathon/new-files/adobe-express.svg create mode 100644 src/pages/hackathon/new-files/references.md create mode 100644 src/pages/hackathon/new-files/runtimes.md diff --git a/src/pages/hackathon/aep-foundation.png b/src/pages/hackathon/aep-foundation.png new file mode 100644 index 0000000000000000000000000000000000000000..3d831be456c817c9af420a9e623c55a578d79732 GIT binary patch literal 40611 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ÿ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 literal 0 HcmV?d00001 diff --git a/src/pages/hackathon/assets.md b/src/pages/hackathon/assets.md new file mode 100644 index 000000000..28cad7f12 --- /dev/null +++ b/src/pages/hackathon/assets.md @@ -0,0 +1,17 @@ +--- +title: Adobe Developers Live | Asset Compute Service Extensibility +description: Learn how to use App Builder to build custom Asset Compute worker for asset processing during ingestion into Adobe Experience Manager. +keywords: + - Adobe I/O + - Extensibility + - API Documentation + - Developer Tooling +--- + +# Adobe Developers Live | Asset Compute Service Extensibility + +Learn how to use App Builder to build custom Asset Compute worker for asset processing during ingestion into Adobe Experience Manager. + + + +https://youtu.be/6wdbd050UMM diff --git a/src/pages/hackathon/index.md b/src/pages/hackathon/index.md new file mode 100644 index 000000000..7f193f684 --- /dev/null +++ b/src/pages/hackathon/index.md @@ -0,0 +1,45 @@ +--- +keywords: + - App Builder + - Guides + - Documentation +title: App Builder Guides +description: Comprehensive guides for building and deploying applications with App Builder. +faqs: +- question: What topics are covered in the App Builder Guides? + answer: The guides cover architecture, development, configuration, deployment, security, and integration aspects of building applications with App Builder. +- question: Where can I find information about App Builder deployment? + answer: Deployment details are included under the Configuration and Deployment section of the App Builder Guides. +- question: Does the App Builder support integrations with other platforms? + answer: Yes, the guides include information about integrating App Builder with Adobe Experience Cloud and other services. +--- + +# App Builder Guides + +Welcome to the App Builder Guides section. Here you'll find comprehensive documentation about building and deploying applications with App Builder. + +## Architecture and Development + +* [Architecture Overview](architecture_overview/architecture-overview.md) +* [Application State](application-state.md) +* [Development](development.md) +* [Distribution](distribution.md) +* [Optimization](optimization.md) +* [Telemetry](telemetry.md) + +## Configuration and Deployment + +* [Configuration](configuration/configuration.md) +* [Deployment](deployment/deployment.md) +* [Application Logging](application_logging/logging.md) +* [Events](events/custom-events.md) +* [Extensions](extensions/extensions.md) +* [Security](security/index.md) + +## Integration + +* [Adobe Experience Cloud Integration](exc_app/aec-integration.md) + +## Next step + +Return to [Guides Index](../index.md). diff --git a/src/pages/hackathon/new-files/adobe-express.svg b/src/pages/hackathon/new-files/adobe-express.svg new file mode 100644 index 000000000..b7f4834d4 --- /dev/null +++ b/src/pages/hackathon/new-files/adobe-express.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/pages/hackathon/new-files/references.md b/src/pages/hackathon/new-files/references.md new file mode 100644 index 000000000..053f1ddc9 --- /dev/null +++ b/src/pages/hackathon/new-files/references.md @@ -0,0 +1,41 @@ +--- +keywords: + - Adobe I/O + - Extensibility + - API Documentation + - Developer Tooling +title: Reference Documentation +--- + +# Reference Documentation + +* [Adobe Developer Console](https://developer.adobe.com/developer-console/docs/) +* [Adobe CLI](https://github.com/adobe/aio-cli) +* [App Builder Application Generators](https://github.com/adobe/generator-aio-app) +* [Developer Console Project Generators](https://github.com/adobe/generator-aio-console) +* [Adobe Authentication Library](https://github.com/adobe/aio-lib-ims) +* [Token-Vending Machine](https://github.com/adobe/aio-tvm) +* [SDK Libraries](https://github.com/adobe/aio-sdk) + * [File Storage Library](https://github.com/adobe/aio-lib-files) + * [Key/Value Storage Library](https://github.com/adobe/aio-lib-state) + * [Adobe Analytics 2.0 Library](https://github.com/adobe/aio-lib-analytics) + * [Adobe Audience Manager Customer Data](https://github.com/adobe/aio-lib-audience-manager-cd) + * [Adobe Campaign Standard Library](https://github.com/adobe/aio-lib-campaign-standard) + * [Adobe Experience Platform Real-Time Customer Profile](https://github.com/adobe/aio-lib-customer-profile) + * [Adobe Target Library](https://github.com/adobe/aio-lib-target) + * [Adobe Developer Console Library](https://github.com/adobe/aio-lib-console) + * [Adobe I/O Events Library](https://github.com/adobe/aio-lib-events) + * [Core SDK Library](https://github.com/adobe/aio-sdk-core) + * [Logging Library](https://github.com/adobe/aio-lib-core-logging) + * [Error Handling Library](https://github.com/adobe/aio-lib-core-errors) + * [Configuration Library](https://github.com/adobe/aio-lib-core-config) + * [Networking Library](https://github.com/adobe/aio-lib-core-networking) + * [Token-Vending Machine Client Library](https://github.com/adobe/aio-lib-core-tvm) +* [Github Actions Support](https://github.com/features/actions) + * [Github Action to setup the CLI](https://github.com/adobe/aio-cli-setup-action) + * [Github Action to use the CLI](https://github.com/adobe/aio-apps-action) + * [Github workflow generator for App Builder Apps](https://github.com/adobe/generator-aio-app/tree/master/generators/add-ci/.github/workflows) + + ## Next step + + Return to [Guides Index](index.md). diff --git a/src/pages/hackathon/new-files/runtimes.md b/src/pages/hackathon/new-files/runtimes.md new file mode 100644 index 000000000..314e801a9 --- /dev/null +++ b/src/pages/hackathon/new-files/runtimes.md @@ -0,0 +1,82 @@ +# Runtimes + +Adobe I/O Runtime supports the three latest Node.js versions (see the [Node.js release schedule](https://nodejs.org/en/about/previous-releases#release-schedule) for details). We encourage you to keep actions updated to the latest version so you can take advantage of latest security updates and the pre-warmed container feature that dramatically improves cold-start times. + +These npm modules are pre-installed, so you don't need to package them with your action code to use them: + +### Node.js v22.6.0 + + "express": "4.18.2", + "openwhisk": "3.21.7", + "body-parser": "1.20.2", + "redis": "4.6.9", + "node-fetch": "3.3.2", + "dnscache": "1.0.2", + "prom-client": "14.2.0" + +### Node.js v20.7.0 + + "express": "4.18.2", + "openwhisk": "3.21.7", + "body-parser": "1.20.2", + "redis": "4.6.9", + "node-fetch": "3.3.2", + "dnscache": "1.0.2", + "prom-client": "14.2.0" + +### Node.js v18.14.2 + + "express": "4.18.2", + "openwhisk": "3.21.7", + "body-parser": "1.20.2", + "redis": "4.6.5", + "node-fetch": "3.3.1", + "dnscache": "1.0.2", + "prom-client": "14.2.0" + +### Node.js v16.17.0 + + "express": "4.18.1", + "openwhisk": "3.21.6", + "body-parser": "1.20.0", + "redis": "4.1.0", + "node-fetch": "3.2.4", + "dnscache": "1.0.2", + "prom-client": "13.2.0" + +### Node.js v14.20.0 + + "express": "4.17.1", + "openwhisk": "3.21.6", + "body-parser": "1.19.0", + "cls-hooked": "4.2.2", + "redis": "3.1.2", + "node-fetch": "2.6.7", + "dnscache": "1.0.2", + "prom-client": "12.0.0" + +To specify a kind: + +``` +aio rt:action:create actionName fromFile.js --kind nodejs:20 +``` + +or + +``` +aio rt:action:create actionName fromFile.js --kind nodejs:18 +``` + +These images are on Docker Hub: + +1. [Node 22](https://hub.docker.com/r/adobeapiplatform/adobe-action-nodejs-v22/tags) +2. [Node 20](https://hub.docker.com/r/adobeapiplatform/adobe-action-nodejs-v20/tags) +3. [Node 18](https://hub.docker.com/r/adobeapiplatform/adobe-action-nodejs-v18/tags) +4. [Node 16](https://hub.docker.com/r/adobeapiplatform/adobe-action-nodejs-v16/tags) +5. [Node 14](https://hub.docker.com/r/adobeapiplatform/adobe-action-nodejs-v14/tags) + +## Next steps + +Return to the [Runtime Reference Documentation Index](index.md). + +Return to the [Guides Index](../../index.md).