Skip to content

feat: add env to pulumi function args list #154

feat: add env to pulumi function args list

feat: add env to pulumi function args list #154

Workflow file for this run

# This file was automatically generated by github-actions-wac.
# DO NOT MODIFY IT BY HAND. Instead, modify the source *.wac.ts file(s)
# and run "github-actions-wac build" (or "ghawac build") to regenerate this file.
# For more information, run "github-actions-wac --help".
name: Next Branch - Push
'on':
push:
branches:
- next
jobs:
constants:
name: Create constants
outputs:
global-cache-key: ${{ steps.global-cache-key.outputs.global-cache-key }}
run-cache-key: ${{ steps.run-cache-key.outputs.run-cache-key }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
- name: Create global cache key
id: global-cache-key
run: >-
echo "global-cache-key=next-${{ runner.os }}-$(/bin/date -u
"+%m%d")-${{ vars.RANDOM_CACHE_KEY_SUFFIX }}" >> $GITHUB_OUTPUT
- name: Create workflow run cache key
id: run-cache-key
run: >-
echo "run-cache-key=${{ github.run_id }}-${{ github.run_attempt }}-${{
vars.RANDOM_CACHE_KEY_SUFFIX }}" >> $GITHUB_OUTPUT
runs-on: ubuntu-latest
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
build:
name: Build
needs: constants
runs-on: webiny-build-packages
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.global-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
codeAnalysis:
name: Static code analysis
needs:
- constants
- build
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Check code formatting
run: yarn prettier:check
working-directory: next
- name: Check dependencies
run: yarn adio
working-directory: next
- name: Check TS configs
run: yarn check-ts-configs
working-directory: next
- name: ESLint
run: yarn eslint
working-directory: next
runs-on: ubuntu-latest
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
staticCodeAnalysisTs:
name: Static code analysis (TypeScript)
runs-on: webiny-build-packages
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages (full)
run: yarn build
working-directory: next
- name: Check types for Cypress tests
run: yarn cy:ts
working-directory: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
jestTestsNoStorage:
needs:
- constants
- build
name: ${{ matrix.package.cmd }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
package: >-
${{
fromJson('[{"cmd":"packages/api","id":"api"},{"cmd":"packages/api-admin-settings","id":"api-admin-settings"},{"cmd":"packages/api-authentication","id":"api-authentication"},{"cmd":"packages/api-authentication-cognito","id":"api-authentication-cognito"},{"cmd":"packages/api-headless-cms-ddb","id":"api-headless-cms-ddb"},{"cmd":"packages/api-record-locking","id":"api-record-locking"},{"cmd":"packages/api-wcp","id":"api-wcp"},{"cmd":"packages/api-websockets","id":"api-websockets"},{"cmd":"packages/app-aco","id":"app-aco"},{"cmd":"packages/app-admin","id":"app-admin"},{"cmd":"packages/cwp-template-aws","id":"cwp-template-aws"},{"cmd":"packages/data-migration","id":"data-migration"},{"cmd":"packages/db-dynamodb","id":"db-dynamodb"},{"cmd":"packages/form","id":"form"},{"cmd":"packages/handler","id":"handler"},{"cmd":"packages/handler-aws","id":"handler-aws"},{"cmd":"packages/handler-graphql","id":"handler-graphql"},{"cmd":"packages/handler-logs","id":"handler-logs"},{"cmd":"packages/ioc","id":"ioc"},{"cmd":"packages/lexical-converter","id":"lexical-converter"},{"cmd":"packages/plugins","id":"plugins"},{"cmd":"packages/pubsub","id":"pubsub"},{"cmd":"packages/react-composition","id":"react-composition"},{"cmd":"packages/react-properties","id":"react-properties"},{"cmd":"packages/react-rich-text-lexical-renderer","id":"react-rich-text-lexical-renderer"},{"cmd":"packages/utils","id":"utils"},{"cmd":"packages/validation","id":"validation"}]')
}}
runs-on: ${{ matrix.os }}
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Run tests
run: yarn test ${{ matrix.package.cmd }}
working-directory: next
jestTestsDdb:
needs:
- constants
- build
name: ${{ matrix.package.cmd }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
package: >-
${{ fromJson('[{"cmd":"packages/api-aco
--storage=ddb","storage":"ddb","id":"api-aco_ddb"},{"cmd":"packages/api-apw
--storage=ddb","storage":"ddb","id":"api-apw_ddb"},{"cmd":"packages/api-audit-logs
--storage=ddb","storage":"ddb","id":"api-audit-logs_ddb"},{"cmd":"packages/api-file-manager
--storage=ddb","storage":"ddb","id":"api-file-manager_ddb"},{"cmd":"packages/api-form-builder
--storage=ddb","storage":"ddb","id":"api-form-builder_ddb"},{"cmd":"packages/api-headless-cms
--storage=ddb","storage":"ddb","id":"api-headless-cms_ddb"},{"cmd":"packages/api-headless-cms-aco
--storage=ddb","storage":"ddb","id":"api-headless-cms-aco_ddb"},{"cmd":"packages/api-headless-cms-tasks
--storage=ddb","storage":"ddb","id":"api-headless-cms-tasks_ddb"},{"cmd":"packages/api-i18n
--storage=ddb","storage":"ddb","id":"api-i18n_ddb"},{"cmd":"packages/api-mailer
--storage=ddb","storage":"ddb","id":"api-mailer_ddb"},{"cmd":"packages/api-page-builder
--storage=ddb","storage":"ddb","id":"api-page-builder_ddb"},{"cmd":"packages/api-page-builder-aco
--storage=ddb","storage":"ddb","id":"api-page-builder-aco_ddb"},{"cmd":"packages/api-page-builder-import-export
--storage=ddb","storage":"ddb","id":"api-page-builder-import-export_ddb"},{"cmd":"packages/api-prerendering-service
--storage=ddb","storage":"ddb","id":"api-prerendering-service_ddb"},{"cmd":"packages/api-security
--storage=ddb","storage":"ddb","id":"api-security_ddb"},{"cmd":"packages/api-security-cognito
--storage=ddb","storage":"ddb","id":"api-security-cognito_ddb"},{"cmd":"packages/api-tenancy
--storage=ddb","storage":"ddb","id":"api-tenancy_ddb"},{"cmd":"packages/api-tenant-manager
--storage=ddb","storage":"ddb","id":"api-tenant-manager_ddb"},{"cmd":"packages/tasks
--storage=ddb","storage":"ddb","id":"tasks_ddb"}]') }}
runs-on: ${{ matrix.os }}
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Run tests
run: yarn test ${{ matrix.package.cmd }}
working-directory: next
jestTestsDdbEs:
needs:
- constants
- build
name: ${{ matrix.package.cmd }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
package: >-
${{ fromJson('[{"cmd":"packages/api-aco
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-aco_ddb-es_ddb"},{"cmd":"packages/api-audit-logs
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-audit-logs_ddb-es_ddb"},{"cmd":"packages/api-dynamodb-to-elasticsearch
--storage=ddb-es,ddb","storage":["ddb-es"],"id":"api-dynamodb-to-elasticsearch_ddb-es_ddb"},{"cmd":"packages/api-elasticsearch","storage":["ddb-es","ddb-os"],"id":"api-elasticsearch"},{"cmd":"packages/api-elasticsearch-tasks
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-elasticsearch-tasks_ddb-es_ddb"},{"cmd":"packages/api-file-manager
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-file-manager_ddb-es_ddb"},{"cmd":"packages/api-form-builder
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-form-builder_ddb-es_ddb"},{"cmd":"packages/api-form-builder-so-ddb-es
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-form-builder-so-ddb-es_ddb-es_ddb"},{"cmd":"packages/api-headless-cms
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-headless-cms_ddb-es_ddb"},{"cmd":"packages/api-headless-cms-aco
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-headless-cms-aco_ddb-es_ddb"},{"cmd":"packages/api-headless-cms-ddb-es
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-headless-cms-ddb-es_ddb-es_ddb"},{"cmd":"packages/api-headless-cms-es-tasks
--storage=ddb-es,ddb","storage":["ddb-es"],"id":"api-headless-cms-es-tasks_ddb-es_ddb"},{"cmd":"packages/api-headless-cms-tasks
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-headless-cms-tasks_ddb-es_ddb"},{"cmd":"packages/api-mailer
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-mailer_ddb-es_ddb"},{"cmd":"packages/api-page-builder
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-page-builder_ddb-es_ddb"},{"cmd":"packages/api-page-builder-aco
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-page-builder-aco_ddb-es_ddb"},{"cmd":"packages/api-page-builder-so-ddb-es
--storage=ddb-es,ddb","storage":"ddb-es","id":"api-page-builder-so-ddb-es_ddb-es_ddb"},{"cmd":"packages/migrations","storage":["ddb-es","ddb-os"],"id":"migrations"},{"cmd":"packages/tasks
--storage=ddb-es,ddb","storage":"ddb-es","id":"tasks_ddb-es_ddb"}]')
}}
runs-on: ${{ matrix.os }}
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
AWS_ELASTIC_SEARCH_DOMAIN_NAME: ${{ secrets.AWS_ELASTIC_SEARCH_DOMAIN_NAME }}
ELASTIC_SEARCH_ENDPOINT: ${{ secrets.ELASTIC_SEARCH_ENDPOINT }}
ELASTIC_SEARCH_INDEX_PREFIX: ${{ matrix.package.id }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::726952677045:role/GitHubActionsWebinyJs
aws-region: eu-central-1
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Run tests
run: yarn test ${{ matrix.package.cmd }}
working-directory: next
permissions:
id-token: write
jestTestsDdbOs:
needs:
- constants
- build
name: ${{ matrix.package.cmd }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
package: >-
${{ fromJson('[{"cmd":"packages/api-aco
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-aco_ddb-os_ddb"},{"cmd":"packages/api-audit-logs
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-audit-logs_ddb-os_ddb"},{"cmd":"packages/api-dynamodb-to-elasticsearch
--storage=ddb-os,ddb","storage":["ddb-os"],"id":"api-dynamodb-to-elasticsearch_ddb-os_ddb"},{"cmd":"packages/api-elasticsearch","storage":["ddb-es","ddb-os"],"id":"api-elasticsearch"},{"cmd":"packages/api-elasticsearch-tasks
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-elasticsearch-tasks_ddb-os_ddb"},{"cmd":"packages/api-file-manager
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-file-manager_ddb-os_ddb"},{"cmd":"packages/api-form-builder
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-form-builder_ddb-os_ddb"},{"cmd":"packages/api-form-builder-so-ddb-es
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-form-builder-so-ddb-es_ddb-os_ddb"},{"cmd":"packages/api-headless-cms
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-headless-cms_ddb-os_ddb"},{"cmd":"packages/api-headless-cms-aco
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-headless-cms-aco_ddb-os_ddb"},{"cmd":"packages/api-headless-cms-ddb-es
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-headless-cms-ddb-es_ddb-os_ddb"},{"cmd":"packages/api-headless-cms-es-tasks
--storage=ddb-os,ddb","storage":["ddb-os"],"id":"api-headless-cms-es-tasks_ddb-os_ddb"},{"cmd":"packages/api-headless-cms-tasks
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-headless-cms-tasks_ddb-os_ddb"},{"cmd":"packages/api-mailer
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-mailer_ddb-os_ddb"},{"cmd":"packages/api-page-builder
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-page-builder_ddb-os_ddb"},{"cmd":"packages/api-page-builder-aco
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-page-builder-aco_ddb-os_ddb"},{"cmd":"packages/api-page-builder-so-ddb-es
--storage=ddb-os,ddb","storage":"ddb-os","id":"api-page-builder-so-ddb-es_ddb-os_ddb"},{"cmd":"packages/migrations","storage":["ddb-es","ddb-os"],"id":"migrations"},{"cmd":"packages/tasks
--storage=ddb-os,ddb","storage":"ddb-os","id":"tasks_ddb-os_ddb"}]')
}}
runs-on: ${{ matrix.os }}
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
AWS_ELASTIC_SEARCH_DOMAIN_NAME: ${{ secrets.AWS_OPEN_SEARCH_DOMAIN_NAME }}
ELASTIC_SEARCH_ENDPOINT: ${{ secrets.OPEN_SEARCH_ENDPOINT }}
ELASTIC_SEARCH_INDEX_PREFIX: ${{ matrix.package.id }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::726952677045:role/GitHubActionsWebinyJs
aws-region: eu-central-1
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Run tests
run: yarn test ${{ matrix.package.cmd }}
working-directory: next
permissions:
id-token: write
e2eTestsDdb-constants:
name: Constants - DDB
needs:
- build
outputs:
cypress-folders: ${{ steps.list-cypress-folders.outputs.cypress-folders }}
pulumi-backend-url: ${{ steps.pulumi-backend-url.outputs.pulumi-backend-url }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
- name: List Cypress tests folders
id: list-cypress-folders
run: >-
echo "cypress-folders=$(node scripts/listCypressTestsFolders.js)" >>
$GITHUB_OUTPUT
- name: Get Pulumi backend URL
id: get-pulumi-backend-url
run: >-
echo "pulumi-backend-url=${{ secrets.WEBINY_PULUMI_BACKEND }}${{
github.run_id }}_ddb" >> $GITHUB_OUTPUT
runs-on: ubuntu-latest
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
e2eTestsDdb-setup:
needs:
- constants
- build
- e2eTestsDdb-constants
name: E2E (DDB) - Project setup
outputs:
cypress-config: ${{ steps.save-cypress-config.outputs.cypress-config }}
environment: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_SECRETS_PROVIDER: ${{ secrets.PULUMI_SECRETS_PROVIDER }}
WEBINY_PULUMI_BACKEND: ${{ needs.e2eTestsDdb-constants.outputs.pulumi-backend-url }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::726952677045:role/GitHubActionsWebinyJs
aws-region: eu-central-1
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Start Verdaccio local server
working-directory: next
run: >-
yarn add pm2 verdaccio && npx pm2 start verdaccio -- -c
.verdaccio.yaml
- name: Configure NPM to use local registry
run: npm config set registry http://localhost:4873
- name: Set git email
run: git config --global user.email "webiny-bot@webiny.com"
- name: Set git username
run: git config --global user.name "webiny-bot"
- name: Create ".npmrc" file in the project root, with a dummy auth token
run: echo '//localhost:4873/:_authToken="dummy-auth-token"' > .npmrc
working-directory: next
- name: Version and publish to Verdaccio
run: yarn release --type=verdaccio
working-directory: next
- name: Create verdaccio-files artifact
uses: actions/upload-artifact@v4
with:
name: verdaccio-files-ddb
retention-days: 1
path: |-
next/.verdaccio/
next/.verdaccio.yaml
- name: Disable Webiny telemetry
run: >
mkdir ~/.webiny && echo '{ "id": "ci", "telemetry": false }' >
~/.webiny/config
- name: Create a new Webiny project
run: >
npx create-webiny-project@local-npm new-webiny-project --tag local-npm
--no-interactive --assign-to-yarnrc
'{"npmRegistryServer":"http://localhost:4873","unsafeHttpWhitelist":["localhost"]}'
--template-options '{"region":"${{ env.AWS_REGION
}}","storageOperations":"ddb"}'
- name: Print CLI version
working-directory: new-webiny-project
run: yarn webiny --version
- name: Create project-files artifact
uses: actions/upload-artifact@v4
with:
name: project-files-ddb
retention-days: 1
path: |-
new-webiny-project/
!new-webiny-project/node_modules/**/*
!new-webiny-project/**/node_modules/**/*
!new-webiny-project/.yarn/cache/**/*
- name: Deploy Core
working-directory: new-webiny-project
run: yarn webiny deploy apps/core --env dev
- name: Deploy API
working-directory: new-webiny-project
run: yarn webiny deploy apps/api --env dev
- name: Deploy Admin Area
working-directory: new-webiny-project
run: yarn webiny deploy apps/admin --env dev
- name: Deploy Website
working-directory: new-webiny-project
run: yarn webiny deploy apps/website --env dev
- name: Create Cypress config
run: yarn setup-cypress --projectFolder ../new-webiny-project
working-directory: next
- name: Save Cypress config
id: save-cypress-config
run: >-
echo "cypress-config=$(cat cypress-tests/cypress.config.ts | tr -d
'\t\n\r')" >> $GITHUB_OUTPUT
working-directory: next
- name: Cypress - run installation wizard test
run: >-
yarn cy:run --browser chrome --spec
"cypress/e2e/adminInstallation/**/*.cy.js"
working-directory: next
runs-on: ubuntu-latest
permissions:
id-token: write
e2eTestsDdb-cypress:
name: >-
${{ matrix.cypress-folder }} (ddb, ${{ matrix.os }}, Node v${{ matrix.node
}})
needs:
- constants
- e2eTestsDdb-constants
- e2eTestsDdb-setup
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
cypress-folder: ${{ fromJson(needs.e2eTestsDdb-constants.outputs.cypress-folders) }}
environment: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_SECRETS_PROVIDER: ${{ secrets.PULUMI_SECRETS_PROVIDER }}
WEBINY_PULUMI_BACKEND: ${{ needs.e2eTestsDdb-constants.outputs.pulumi-backend-url }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Set up Cypress config
run: >-
echo '${{ needs.e2eTestsDdb-setup.outputs.cypress-config }}' >
cypress-tests/cypress.config.ts
working-directory: next
- name: Cypress - run "${{ matrix.cypress-folder }}" tests
timeout-minutes: 40
run: yarn cy:run --browser chrome --spec "${{ matrix.cypress-folder }}"
working-directory: next
runs-on: ubuntu-latest
e2eTestsDdb-es-constants:
name: Constants - DDB-ES
needs:
- build
outputs:
cypress-folders: ${{ steps.list-cypress-folders.outputs.cypress-folders }}
pulumi-backend-url: ${{ steps.pulumi-backend-url.outputs.pulumi-backend-url }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
- name: List Cypress tests folders
id: list-cypress-folders
run: >-
echo "cypress-folders=$(node scripts/listCypressTestsFolders.js)" >>
$GITHUB_OUTPUT
- name: Get Pulumi backend URL
id: get-pulumi-backend-url
run: >-
echo "pulumi-backend-url=${{ secrets.WEBINY_PULUMI_BACKEND }}${{
github.run_id }}_ddb-es" >> $GITHUB_OUTPUT
runs-on: ubuntu-latest
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
e2eTestsDdb-es-setup:
needs:
- constants
- build
- e2eTestsDdb-es-constants
name: E2E (DDB-ES) - Project setup
outputs:
cypress-config: ${{ steps.save-cypress-config.outputs.cypress-config }}
environment: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_SECRETS_PROVIDER: ${{ secrets.PULUMI_SECRETS_PROVIDER }}
WEBINY_PULUMI_BACKEND: ${{ needs.e2eTestsDdb-es-constants.outputs.pulumi-backend-url }}
AWS_ELASTIC_SEARCH_DOMAIN_NAME: ${{ secrets.AWS_ELASTIC_SEARCH_DOMAIN_NAME }}
ELASTIC_SEARCH_ENDPOINT: ${{ secrets.ELASTIC_SEARCH_ENDPOINT }}
ELASTIC_SEARCH_INDEX_PREFIX: ${{ github.run_id }}_
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::726952677045:role/GitHubActionsWebinyJs
aws-region: eu-central-1
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Start Verdaccio local server
working-directory: next
run: >-
yarn add pm2 verdaccio && npx pm2 start verdaccio -- -c
.verdaccio.yaml
- name: Configure NPM to use local registry
run: npm config set registry http://localhost:4873
- name: Set git email
run: git config --global user.email "webiny-bot@webiny.com"
- name: Set git username
run: git config --global user.name "webiny-bot"
- name: Create ".npmrc" file in the project root, with a dummy auth token
run: echo '//localhost:4873/:_authToken="dummy-auth-token"' > .npmrc
working-directory: next
- name: Version and publish to Verdaccio
run: yarn release --type=verdaccio
working-directory: next
- name: Create verdaccio-files artifact
uses: actions/upload-artifact@v4
with:
name: verdaccio-files-ddb-es
retention-days: 1
path: |-
next/.verdaccio/
next/.verdaccio.yaml
- name: Disable Webiny telemetry
run: >
mkdir ~/.webiny && echo '{ "id": "ci", "telemetry": false }' >
~/.webiny/config
- name: Create a new Webiny project
run: >
npx create-webiny-project@local-npm new-webiny-project --tag local-npm
--no-interactive --assign-to-yarnrc
'{"npmRegistryServer":"http://localhost:4873","unsafeHttpWhitelist":["localhost"]}'
--template-options '{"region":"${{ env.AWS_REGION
}}","storageOperations":"ddb-es"}'
- name: Print CLI version
working-directory: new-webiny-project
run: yarn webiny --version
- name: Create project-files artifact
uses: actions/upload-artifact@v4
with:
name: project-files-ddb-es
retention-days: 1
path: |-
new-webiny-project/
!new-webiny-project/node_modules/**/*
!new-webiny-project/**/node_modules/**/*
!new-webiny-project/.yarn/cache/**/*
- name: Deploy Core
working-directory: new-webiny-project
run: yarn webiny deploy apps/core --env dev
- name: Deploy API
working-directory: new-webiny-project
run: yarn webiny deploy apps/api --env dev
- name: Deploy Admin Area
working-directory: new-webiny-project
run: yarn webiny deploy apps/admin --env dev
- name: Deploy Website
working-directory: new-webiny-project
run: yarn webiny deploy apps/website --env dev
- name: Create Cypress config
run: yarn setup-cypress --projectFolder ../new-webiny-project
working-directory: next
- name: Save Cypress config
id: save-cypress-config
run: >-
echo "cypress-config=$(cat cypress-tests/cypress.config.ts | tr -d
'\t\n\r')" >> $GITHUB_OUTPUT
working-directory: next
- name: Cypress - run installation wizard test
run: >-
yarn cy:run --browser chrome --spec
"cypress/e2e/adminInstallation/**/*.cy.js"
working-directory: next
runs-on: ubuntu-latest
permissions:
id-token: write
e2eTestsDdb-es-cypress:
name: >-
${{ matrix.cypress-folder }} (ddb-es, ${{ matrix.os }}, Node v${{
matrix.node }})
needs:
- constants
- e2eTestsDdb-es-constants
- e2eTestsDdb-es-setup
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
cypress-folder: >-
${{ fromJson(needs.e2eTestsDdb-es-constants.outputs.cypress-folders)
}}
environment: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_SECRETS_PROVIDER: ${{ secrets.PULUMI_SECRETS_PROVIDER }}
WEBINY_PULUMI_BACKEND: ${{ needs.e2eTestsDdb-es-constants.outputs.pulumi-backend-url }}
AWS_ELASTIC_SEARCH_DOMAIN_NAME: ${{ secrets.AWS_ELASTIC_SEARCH_DOMAIN_NAME }}
ELASTIC_SEARCH_ENDPOINT: ${{ secrets.ELASTIC_SEARCH_ENDPOINT }}
ELASTIC_SEARCH_INDEX_PREFIX: ${{ github.run_id }}_
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Set up Cypress config
run: >-
echo '${{ needs.e2eTestsDdb-es-setup.outputs.cypress-config }}' >
cypress-tests/cypress.config.ts
working-directory: next
- name: Cypress - run "${{ matrix.cypress-folder }}" tests
timeout-minutes: 40
run: yarn cy:run --browser chrome --spec "${{ matrix.cypress-folder }}"
working-directory: next
runs-on: ubuntu-latest
e2eTestsDdb-os-constants:
name: Constants - DDB-OS
needs:
- build
outputs:
cypress-folders: ${{ steps.list-cypress-folders.outputs.cypress-folders }}
pulumi-backend-url: ${{ steps.pulumi-backend-url.outputs.pulumi-backend-url }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
- name: List Cypress tests folders
id: list-cypress-folders
run: >-
echo "cypress-folders=$(node scripts/listCypressTestsFolders.js)" >>
$GITHUB_OUTPUT
- name: Get Pulumi backend URL
id: get-pulumi-backend-url
run: >-
echo "pulumi-backend-url=${{ secrets.WEBINY_PULUMI_BACKEND }}${{
github.run_id }}_ddb-os" >> $GITHUB_OUTPUT
runs-on: ubuntu-latest
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
e2eTestsDdb-os-setup:
needs:
- constants
- build
- e2eTestsDdb-os-constants
name: E2E (DDB-OS) - Project setup
outputs:
cypress-config: ${{ steps.save-cypress-config.outputs.cypress-config }}
environment: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_SECRETS_PROVIDER: ${{ secrets.PULUMI_SECRETS_PROVIDER }}
WEBINY_PULUMI_BACKEND: ${{ needs.e2eTestsDdb-os-constants.outputs.pulumi-backend-url }}
AWS_ELASTIC_SEARCH_DOMAIN_NAME: ${{ secrets.AWS_OPEN_SEARCH_DOMAIN_NAME }}
ELASTIC_SEARCH_ENDPOINT: ${{ secrets.OPEN_SEARCH_ENDPOINT }}
ELASTIC_SEARCH_INDEX_PREFIX: ${{ github.run_id }}_
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::726952677045:role/GitHubActionsWebinyJs
aws-region: eu-central-1
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Start Verdaccio local server
working-directory: next
run: >-
yarn add pm2 verdaccio && npx pm2 start verdaccio -- -c
.verdaccio.yaml
- name: Configure NPM to use local registry
run: npm config set registry http://localhost:4873
- name: Set git email
run: git config --global user.email "webiny-bot@webiny.com"
- name: Set git username
run: git config --global user.name "webiny-bot"
- name: Create ".npmrc" file in the project root, with a dummy auth token
run: echo '//localhost:4873/:_authToken="dummy-auth-token"' > .npmrc
working-directory: next
- name: Version and publish to Verdaccio
run: yarn release --type=verdaccio
working-directory: next
- name: Create verdaccio-files artifact
uses: actions/upload-artifact@v4
with:
name: verdaccio-files-ddb-os
retention-days: 1
path: |-
next/.verdaccio/
next/.verdaccio.yaml
- name: Disable Webiny telemetry
run: >
mkdir ~/.webiny && echo '{ "id": "ci", "telemetry": false }' >
~/.webiny/config
- name: Create a new Webiny project
run: >
npx create-webiny-project@local-npm new-webiny-project --tag local-npm
--no-interactive --assign-to-yarnrc
'{"npmRegistryServer":"http://localhost:4873","unsafeHttpWhitelist":["localhost"]}'
--template-options '{"region":"${{ env.AWS_REGION
}}","storageOperations":"ddb-os"}'
- name: Print CLI version
working-directory: new-webiny-project
run: yarn webiny --version
- name: Create project-files artifact
uses: actions/upload-artifact@v4
with:
name: project-files-ddb-os
retention-days: 1
path: |-
new-webiny-project/
!new-webiny-project/node_modules/**/*
!new-webiny-project/**/node_modules/**/*
!new-webiny-project/.yarn/cache/**/*
- name: Deploy Core
working-directory: new-webiny-project
run: yarn webiny deploy apps/core --env dev
- name: Deploy API
working-directory: new-webiny-project
run: yarn webiny deploy apps/api --env dev
- name: Deploy Admin Area
working-directory: new-webiny-project
run: yarn webiny deploy apps/admin --env dev
- name: Deploy Website
working-directory: new-webiny-project
run: yarn webiny deploy apps/website --env dev
- name: Create Cypress config
run: yarn setup-cypress --projectFolder ../new-webiny-project
working-directory: next
- name: Save Cypress config
id: save-cypress-config
run: >-
echo "cypress-config=$(cat cypress-tests/cypress.config.ts | tr -d
'\t\n\r')" >> $GITHUB_OUTPUT
working-directory: next
- name: Cypress - run installation wizard test
run: >-
yarn cy:run --browser chrome --spec
"cypress/e2e/adminInstallation/**/*.cy.js"
working-directory: next
runs-on: ubuntu-latest
permissions:
id-token: write
e2eTestsDdb-os-cypress:
name: >-
${{ matrix.cypress-folder }} (ddb-os, ${{ matrix.os }}, Node v${{
matrix.node }})
needs:
- constants
- e2eTestsDdb-os-constants
- e2eTestsDdb-os-setup
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
node:
- 18
cypress-folder: >-
${{ fromJson(needs.e2eTestsDdb-os-constants.outputs.cypress-folders)
}}
environment: next
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_SECRETS_PROVIDER: ${{ secrets.PULUMI_SECRETS_PROVIDER }}
WEBINY_PULUMI_BACKEND: ${{ needs.e2eTestsDdb-os-constants.outputs.pulumi-backend-url }}
AWS_ELASTIC_SEARCH_DOMAIN_NAME: ${{ secrets.AWS_OPEN_SEARCH_DOMAIN_NAME }}
ELASTIC_SEARCH_ENDPOINT: ${{ secrets.OPEN_SEARCH_ENDPOINT }}
ELASTIC_SEARCH_INDEX_PREFIX: ${{ github.run_id }}_
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
path: next
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Set up Cypress config
run: >-
echo '${{ needs.e2eTestsDdb-os-setup.outputs.cypress-config }}' >
cypress-tests/cypress.config.ts
working-directory: next
- name: Cypress - run "${{ matrix.cypress-folder }}" tests
timeout-minutes: 40
run: yarn cy:run --browser chrome --spec "${{ matrix.cypress-folder }}"
working-directory: next
runs-on: ubuntu-latest
npmReleaseUnstable:
needs:
- constants
- codeAnalysis
- jestTestsNoStorage
- jestTestsDdb
- jestTestsDdbEs
- jestTestsDdbOs
- e2eTestsDdb-cypress
- e2eTestsDdb-es-cypress
- e2eTestsDdb-os-cypress
name: NPM release ("unstable" tag)
environment: release
env:
NODE_OPTIONS: '--max_old_space_size=4096'
YARN_ENABLE_IMMUTABLE_INSTALLS: false
GH_TOKEN: ${{ secrets.GH_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/setup-node@v4
with:
node-version: 18
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/cache@v4
with:
path: next/.yarn/cache
key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}
- uses: actions/cache@v4
with:
path: next/.webiny/cached-packages
key: ${{ needs.constants.outputs.run-cache-key }}
- name: Install dependencies
run: yarn --immutable
working-directory: next
- name: Build packages
run: yarn build:quick
working-directory: next
- name: Create ".npmrc" file in the project root
run: echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc
working-directory: next
- name: Set git info
run: |
git config --global user.email "webiny-bot@webiny.com"
git config --global user.name "webiny-bot"
working-directory: next
- name: Version and publish to NPM
run: yarn release --type=unstable
working-directory: next
runs-on: ubuntu-latest