diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 2b0fb1051b..a4948c5fda 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -211,6 +211,7 @@ jobs: VITE_APP_API_URL: https://api.${{ env.FULL_DOMAIN }} VITE_APP_HASURA_URL: https://hasura.${{ env.FULL_DOMAIN }}/v1/graphql VITE_APP_HASURA_WEBSOCKET: wss://hasura.${{ env.FULL_DOMAIN }}/v1/graphql + VITE_APP_MAPBOX_ACCESS_TOKEN: ${{ secrets.MAPBOX_ACCESS_TOKEN }} VITE_APP_SHAREDB_URL: wss://sharedb.${{ env.FULL_DOMAIN }} # needed because there's no API to change google's allowed OAuth URLs VITE_APP_GOOGLE_OAUTH_OVERRIDE: https://api.editor.planx.dev @@ -226,6 +227,7 @@ jobs: VITE_APP_API_URL: https://api.${{ env.FULL_DOMAIN }} VITE_APP_HASURA_URL: https://hasura.${{ env.FULL_DOMAIN }}/v1/graphql VITE_APP_HASURA_WEBSOCKET: wss://hasura.${{ env.FULL_DOMAIN }}/v1/graphql + VITE_APP_MAPBOX_ACCESS_TOKEN: ${{ secrets.MAPBOX_ACCESS_TOKEN }} VITE_APP_SHAREDB_URL: wss://sharedb.${{ env.FULL_DOMAIN }} VITE_APP_GOOGLE_OAUTH_OVERRIDE: https://api.editor.planx.dev VITE_APP_ENV: pizza diff --git a/.github/workflows/push-main.yml b/.github/workflows/push-main.yml index 9c8b73c8e8..d99d4d7b71 100644 --- a/.github/workflows/push-main.yml +++ b/.github/workflows/push-main.yml @@ -53,13 +53,14 @@ jobs: - run: pnpm build working-directory: editor.planx.uk env: + VITE_APP_AIRBRAKE_PROJECT_ID: ${{ secrets.AIRBRAKE_PROJECT_ID }} + VITE_APP_AIRBRAKE_PROJECT_KEY: ${{ secrets.AIRBRAKE_PROJECT_KEY }} VITE_APP_API_URL: https://api.editor.planx.dev + VITE_APP_ENV: staging VITE_APP_HASURA_URL: https://hasura.editor.planx.dev/v1/graphql + VITE_APP_MAPBOX_ACCESS_TOKEN: ${{ secrets.MAPBOX_ACCESS_TOKEN }} VITE_APP_HASURA_WEBSOCKET: wss://hasura.editor.planx.dev/v1/graphql VITE_APP_SHAREDB_URL: wss://sharedb.editor.planx.dev - VITE_APP_AIRBRAKE_PROJECT_ID: ${{ secrets.AIRBRAKE_PROJECT_ID }} - VITE_APP_AIRBRAKE_PROJECT_KEY: ${{ secrets.AIRBRAKE_PROJECT_KEY }} - VITE_APP_ENV: staging - name: Upload Build Artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/push-production.yml b/.github/workflows/push-production.yml index 319f28051b..f89fd74555 100644 --- a/.github/workflows/push-production.yml +++ b/.github/workflows/push-production.yml @@ -53,13 +53,14 @@ jobs: - run: pnpm build working-directory: editor.planx.uk env: + VITE_APP_AIRBRAKE_PROJECT_ID: ${{ secrets.AIRBRAKE_PROJECT_ID }} + VITE_APP_AIRBRAKE_PROJECT_KEY: ${{ secrets.AIRBRAKE_PROJECT_KEY }} VITE_APP_API_URL: https://api.editor.planx.uk + VITE_APP_ENV: production VITE_APP_HASURA_URL: https://hasura.editor.planx.uk/v1/graphql VITE_APP_HASURA_WEBSOCKET: wss://hasura.editor.planx.uk/v1/graphql + VITE_APP_MAPBOX_ACCESS_TOKEN: ${{ secrets.MAPBOX_ACCESS_TOKEN }} VITE_APP_SHAREDB_URL: wss://sharedb.editor.planx.uk - VITE_APP_AIRBRAKE_PROJECT_ID: ${{ secrets.AIRBRAKE_PROJECT_ID }} - VITE_APP_AIRBRAKE_PROJECT_KEY: ${{ secrets.AIRBRAKE_PROJECT_KEY }} - VITE_APP_ENV: production - name: Upload Build Artifact uses: actions/upload-artifact@v4 with: diff --git a/.gitignore b/.gitignore index cf53f31bad..2b647dd837 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ editor.planx.uk/.eslintcache .env.prod .env.temp api.planx.uk/.env.test +editor.planx.uk/.env hasura.planx.uk/.env.test # IDE diff --git a/docker-compose.yml b/docker-compose.yml index f638c5069d..6d57522027 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -112,41 +112,42 @@ services: timeout: 3s retries: 5 environment: - APP_ENVIRONMENT: ${APP_ENVIRONMENT} - HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} - HASURA_GRAPHQL_URL: http://hasura-proxy:${HASURA_PROXY_PORT}/v1/graphql - HASURA_METADATA_URL: http://hasura-proxy:${HASURA_PROXY_PORT}/v1/metadata - HASURA_SCHEMA_URL: http://hasura-proxy:${HASURA_PROXY_PORT}/v2/query - JWT_SECRET: ${JWT_SECRET} - GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} - GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET} + AIRBRAKE_PROJECT_ID: ${AIRBRAKE_PROJECT_ID} + AIRBRAKE_PROJECT_KEY: ${AIRBRAKE_PROJECT_KEY} API_URL_EXT: ${API_URL_EXT} - EDITOR_URL_EXT: ${EDITOR_URL_EXT} - SESSION_SECRET: ${SESSION_SECRET} - AWS_S3_REGION: ${AWS_S3_REGION} + APP_ENVIRONMENT: ${APP_ENVIRONMENT} AWS_ACCESS_KEY: ${AWS_ACCESS_KEY} - AWS_SECRET_KEY: ${AWS_SECRET_KEY} - AWS_S3_BUCKET: ${AWS_S3_BUCKET} AWS_S3_ACL: ${AWS_S3_ACL} - PORT: ${API_PORT} + AWS_S3_BUCKET: ${AWS_S3_BUCKET} + AWS_S3_REGION: ${AWS_S3_REGION} + AWS_SECRET_KEY: ${AWS_SECRET_KEY} BOPS_API_TOKEN: ${BOPS_API_TOKEN} - AIRBRAKE_PROJECT_ID: ${AIRBRAKE_PROJECT_ID} - AIRBRAKE_PROJECT_KEY: ${AIRBRAKE_PROJECT_KEY} - UNIFORM_TOKEN_URL: ${UNIFORM_TOKEN_URL} - UNIFORM_SUBMISSION_URL: ${UNIFORM_SUBMISSION_URL} - GOVUK_NOTIFY_API_KEY: ${GOVUK_NOTIFY_API_KEY} - HASURA_PLANX_API_KEY: ${HASURA_PLANX_API_KEY} - FILE_API_KEY: ${FILE_API_KEY} - FILE_API_KEY_NEXUS: ${FILE_API_KEY_NEXUS} - FILE_API_KEY_BARNET: ${FILE_API_KEY_BARNET} - SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL} - ORDNANCE_SURVEY_API_KEY: ${ORDNANCE_SURVEY_API_KEY} - MINIO_PORT: ${MINIO_PORT} CORS_ALLOWLIST: ${EDITOR_URL_EXT}, ${API_URL_EXT} + EDITOR_URL_EXT: ${EDITOR_URL_EXT} ENCRYPTION_KEY: ${ENCRYPTION_KEY} + FILE_API_KEY_BARNET: ${FILE_API_KEY_BARNET} + FILE_API_KEY_NEXUS: ${FILE_API_KEY_NEXUS} + FILE_API_KEY: ${FILE_API_KEY} + GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} + GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET} + GOVUK_NOTIFY_API_KEY: ${GOVUK_NOTIFY_API_KEY} + HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} + HASURA_GRAPHQL_URL: http://hasura-proxy:${HASURA_PROXY_PORT}/v1/graphql + HASURA_METADATA_URL: http://hasura-proxy:${HASURA_PROXY_PORT}/v1/metadata + HASURA_PLANX_API_KEY: ${HASURA_PLANX_API_KEY} + HASURA_SCHEMA_URL: http://hasura-proxy:${HASURA_PROXY_PORT}/v2/query IDOX_NEXUS_CLIENT: ${IDOX_NEXUS_CLIENT} - IDOX_NEXUS_TOKEN_URL: ${IDOX_NEXUS_TOKEN_URL} IDOX_NEXUS_SUBMISSION_URL: ${IDOX_NEXUS_SUBMISSION_URL} + IDOX_NEXUS_TOKEN_URL: ${IDOX_NEXUS_TOKEN_URL} + JWT_SECRET: ${JWT_SECRET} + MAPBOX_ACCESS_TOKEN: ${MAPBOX_ACCESS_TOKEN} + MINIO_PORT: ${MINIO_PORT} + ORDNANCE_SURVEY_API_KEY: ${ORDNANCE_SURVEY_API_KEY} + PORT: ${API_PORT} + SESSION_SECRET: ${SESSION_SECRET} + SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL} + UNIFORM_SUBMISSION_URL: ${UNIFORM_SUBMISSION_URL} + UNIFORM_TOKEN_URL: ${UNIFORM_TOKEN_URL} # Local authority config # Lambeth UNIFORM_CLIENT_LAMBETH: ${UNIFORM_CLIENT_LAMBETH} diff --git a/editor.planx.uk/.env b/editor.planx.uk/.env deleted file mode 100644 index ca38e5df07..0000000000 --- a/editor.planx.uk/.env +++ /dev/null @@ -1,13 +0,0 @@ -# Used in local development and testing, overwritten in .env.production -# This file does not (and should not) contain secrets - all values here are publicly exposed -# If you're working off a fork of Planx, please replace the AIRBRAKE and FEEDBACK_FISH values with a mock value like "SECRET" - -VITE_APP_AIRBRAKE_PROJECT_ID=329753 -VITE_APP_AIRBRAKE_PROJECT_KEY=388fe6f4cc0d6644c923500d5672a5b6 - -VITE_APP_API_URL=http://localhost:7002 -VITE_APP_HASURA_URL=http://localhost:7100/v1/graphql -VITE_APP_HASURA_WEBSOCKET=ws://localhost:7100/v1/graphql -VITE_APP_SHAREDB_URL=ws://localhost:7003 - -VITE_APP_ENV=development \ No newline at end of file diff --git a/editor.planx.uk/.env.example b/editor.planx.uk/.env.example new file mode 100644 index 0000000000..ac87499ee5 --- /dev/null +++ b/editor.planx.uk/.env.example @@ -0,0 +1,15 @@ +# Used in local development and testing, overwritten in .env.production +# Most values in this file are publicly exposed and not secrets +VITE_APP_AIRBRAKE_PROJECT_ID=👻 +VITE_APP_AIRBRAKE_PROJECT_KEY=👻 + +# This token should be exclusively scoped for local development: localhost:3000 (here) & localhost:5173 (@opensystemslab/map) +# A separate token restricted to our production, staging, and pizza domains is then set via Pulumi and Github Action secrets +VITE_APP_MAPBOX_ACCESS_TOKEN=👻 + +VITE_APP_API_URL=http://localhost:7002 +VITE_APP_HASURA_URL=http://localhost:7100/v1/graphql +VITE_APP_HASURA_WEBSOCKET=ws://localhost:7100/v1/graphql +VITE_APP_SHAREDB_URL=ws://localhost:7003 + +VITE_APP_ENV=development \ No newline at end of file diff --git a/editor.planx.uk/.gitignore b/editor.planx.uk/.gitignore index 28f061d8ba..feecb54853 100644 --- a/editor.planx.uk/.gitignore +++ b/editor.planx.uk/.gitignore @@ -13,6 +13,7 @@ # misc .DS_Store +.env .env.local .env.development.local .env.test.local diff --git a/editor.planx.uk/src/@planx/components/List/schemas/Trees.ts b/editor.planx.uk/src/@planx/components/List/schemas/Trees.ts index c7d9e47681..62b70f550b 100644 --- a/editor.planx.uk/src/@planx/components/List/schemas/Trees.ts +++ b/editor.planx.uk/src/@planx/components/List/schemas/Trees.ts @@ -68,8 +68,7 @@ export const Trees: Schema = { mapOptions: { basemap: "OSVectorTile", drawType: "Point", - drawColor: "#ff0000", - drawMany: true, + drawColor: "#66ff00", }, }, }, diff --git a/editor.planx.uk/src/@planx/components/List/utils.tsx b/editor.planx.uk/src/@planx/components/List/utils.tsx index 71044f10aa..28f8dbb2b4 100644 --- a/editor.planx.uk/src/@planx/components/List/utils.tsx +++ b/editor.planx.uk/src/@planx/components/List/utils.tsx @@ -39,7 +39,7 @@ export function formatSchemaDisplayValue( } case "question": { const matchingOption = field.data.options.find( - (option) => option.data.text === value, + (option) => option.data.text === value || option.data.val === value, ); return matchingOption?.data.text; } @@ -56,6 +56,7 @@ export function formatSchemaDisplayValue( {/* @ts-ignore */} @@ -80,6 +86,7 @@ export function formatSchemaDisplayValue( {/* @ts-ignore */} diff --git a/editor.planx.uk/src/@planx/components/MapAndLabel/Editor.tsx b/editor.planx.uk/src/@planx/components/MapAndLabel/Editor.tsx index 036e3b909a..2c8b6e0c8f 100644 --- a/editor.planx.uk/src/@planx/components/MapAndLabel/Editor.tsx +++ b/editor.planx.uk/src/@planx/components/MapAndLabel/Editor.tsx @@ -1,7 +1,7 @@ +import Box from "@mui/material/Box"; import FormControl from "@mui/material/FormControl"; import MenuItem from "@mui/material/MenuItem"; import RadioGroup from "@mui/material/RadioGroup"; -import { useTheme } from "@mui/material/styles"; import { ComponentType as TYPES } from "@opensystemslab/planx-core/types"; import { useFormik } from "formik"; import React from "react"; @@ -28,8 +28,6 @@ export const SCHEMAS = [{ name: "Trees", schema: Trees }]; export default MapAndLabelComponent; function MapAndLabelComponent(props: Props) { - const theme = useTheme(); - const formik = useFormik({ initialValues: parseContent(props.node?.data), onSubmit: (newValues) => { @@ -78,8 +76,68 @@ function MapAndLabelComponent(props: Props) { - + + + + + + {[ + { + id: "OSVectorTile", + title: "Ordnance Survey Vector Tiles", + }, + { + id: "MapboxSatellite", + title: "Mapbox Satellite imagery", + }, + ].map((type) => ( + ) => { + const target = e?.target as HTMLInputElement; + formik.setFieldValue("basemap", target.value); + }} + /> + ))} + + + + + + + + + {[ + { id: "Polygon", title: "Polygon" }, + { id: "Point", title: "Point" }, + ].map((type) => ( + ) => { + const target = e?.target as HTMLInputElement; + formik.setFieldValue("drawType", target.value); + }} + /> + ))} + + + + - - - - - {[ - { id: "Polygon", title: "Polygon" }, - { id: "Point", title: "Point" }, - ].map((type) => ( - ) => { - const target = e?.target as HTMLInputElement; - formik.setFieldValue("drawType", target.value); - }} - /> - ))} - - - - diff --git a/editor.planx.uk/src/@planx/components/MapAndLabel/Public/index.tsx b/editor.planx.uk/src/@planx/components/MapAndLabel/Public/index.tsx index fb945f1813..e67154fe27 100644 --- a/editor.planx.uk/src/@planx/components/MapAndLabel/Public/index.tsx +++ b/editor.planx.uk/src/@planx/components/MapAndLabel/Public/index.tsx @@ -76,7 +76,7 @@ const VerticalFeatureTabs: React.FC<{ features: Feature[] }> = ({ {`${schema.type} ${feature.properties?.label}`} - + {`${feature.geometry.type}`} {feature.geometry.type === "Point" ? ` (${feature.geometry.coordinates.map((coord) => @@ -106,6 +106,7 @@ const Root = () => { info, policyRef, howMeasured, + basemap, drawColor, drawType, schemaName, @@ -173,6 +174,7 @@ const Root = () => { {/* @ts-ignore */} { osProxyEndpoint={`${ import.meta.env.VITE_APP_API_URL }/proxy/ordnance-survey`} - osCopyright={`© Crown copyright and database rights ${new Date().getFullYear()} OS (0)100024857`} + osCopyright={ + basemap === "OSVectorTile" + ? `© Crown copyright and database rights ${new Date().getFullYear()} OS (0)100024857` + : `` + } clipGeojsonData={ teamSettings?.boundaryBBox && JSON.stringify(teamSettings?.boundaryBBox) } + mapboxAccessToken={import.meta.env.VITE_APP_MAPBOX_ACCESS_TOKEN} + collapseAttributions /> {features && features?.length > 0 ? ( diff --git a/editor.planx.uk/src/@planx/components/MapAndLabel/model.ts b/editor.planx.uk/src/@planx/components/MapAndLabel/model.ts index 0af358016d..3f2877f91c 100644 --- a/editor.planx.uk/src/@planx/components/MapAndLabel/model.ts +++ b/editor.planx.uk/src/@planx/components/MapAndLabel/model.ts @@ -8,6 +8,7 @@ export interface MapAndLabel extends MoreInformation { fn: string; title: string; description?: string; + basemap: "OSVectorTile" | "OSRaster" | "MapboxSatellite" | "OSM"; drawColor: string; drawType: "Polygon" | "Point"; schemaName: string; @@ -20,6 +21,7 @@ export const parseContent = ( fn: data?.fn || "", title: data?.title, description: data?.description, + basemap: data?.basemap || "OSVectorTile", drawColor: data?.drawColor || "#22194D", drawType: data?.drawType || "Polygon", schemaName: data?.schemaName || SCHEMAS[0].name, diff --git a/editor.planx.uk/src/@planx/components/shared/Schema/InputFields/MapFieldInput.tsx b/editor.planx.uk/src/@planx/components/shared/Schema/InputFields/MapFieldInput.tsx index f362cba5b2..c258b8199e 100644 --- a/editor.planx.uk/src/@planx/components/shared/Schema/InputFields/MapFieldInput.tsx +++ b/editor.planx.uk/src/@planx/components/shared/Schema/InputFields/MapFieldInput.tsx @@ -64,11 +64,17 @@ export const MapFieldInput: React.FC> = (props) => { osProxyEndpoint={`${ import.meta.env.VITE_APP_API_URL }/proxy/ordnance-survey`} - osCopyright={`Basemap subject to Crown copyright and database rights ${new Date().getFullYear()} OS (0)100024857`} + osCopyright={ + mapOptions?.basemap === "OSVectorTile" + ? `Basemap subject to Crown copyright and database rights ${new Date().getFullYear()} OS (0)100024857` + : `` + } clipGeojsonData={ teamSettings?.boundaryBBox && JSON.stringify(teamSettings?.boundaryBBox) } + mapboxAccessToken={import.meta.env.VITE_APP_MAPBOX_ACCESS_TOKEN} + collapseAttributions /> diff --git a/infrastructure/application/Pulumi.production.yaml b/infrastructure/application/Pulumi.production.yaml index 9cd4350222..f86e61472c 100644 --- a/infrastructure/application/Pulumi.production.yaml +++ b/infrastructure/application/Pulumi.production.yaml @@ -31,6 +31,8 @@ config: application:idox-nexus-token-url: todo application:jwt-secret: secure: AAABABnYUYnZbOVTfN/n+m6kMQV951efSyHJYKVkGmtYvbPkpAk+BUIciL6AbJvW2x5bBuYvsrmY1v5lyZkoqoJ3XgDA/MTBQNIiNg== + application:mapbox-access-token: + secure: AAABAGwrLOkFpIZ3u8XeKIsfk1ujqFYKdv4us+ia2EdCXU8sBj2LiXfn8K6UcOifzf3HlOA6CYL3WwalKLmtvuq90CInbipB3dtY4Mr2Vx7NcUA7zxbUtli+8WcShIiNq490GwlTlf7ChjnNSIr3FzCeK3D/Xiq25wT0398c5ZwHyg== application:metabase-encryption-secret-key: secure: AAABAKQ6L5aOwZWpj9YOsaW8bOOukjt1mZuTgdKjM/3nSmF/0nM/f9c9W9DXygUFj2wtq5/iugo1UTS0+bhEn8Dr9k1Qzr2EmuGpQw== application:metabasePgPassword: diff --git a/infrastructure/application/Pulumi.staging.yaml b/infrastructure/application/Pulumi.staging.yaml index 1e82aeb6e0..c229c31e56 100644 --- a/infrastructure/application/Pulumi.staging.yaml +++ b/infrastructure/application/Pulumi.staging.yaml @@ -32,6 +32,8 @@ config: application:idox-nexus-token-url: https://dev.identity.idoxgroup.com/uaa/oauth/token application:jwt-secret: secure: AAABACbmLC4176IBxX5iL64/nycSXEsCYSQ0hTb7t2OCVlWUc627Vr/EpBhcqPrw9q+0z8UOvRJG5/c/DflZxfPxyJRUVNu+ + application:mapbox-access-token: + secure: AAABAMWf2zVq5/mKCLynpgzAidNsnbUEBpb47n7MRWp2xzRgwaf3kzOvnZax9N04ZScQqU6I5/tEKTBAbSb8MIBJ8mU2iTZbPg8FD6wYsetRyftm1K39KBsIl9aS7fXvZFOG7BsC4qMDEhlDkH8gbV2HTev3VvvRUe3lzVhjNGNHqQ== application:metabase-encryption-secret-key: secure: AAABAGmfVICD8sR+IE6mHC8BNUY1WQXGCbv5F3C1fSgA+1ADiRem3GNrwY0YRZociRYuPIo3MIRS0aIg44jt10SBCE0ik58wHamcKA== application:metabasePgPassword: diff --git a/infrastructure/application/index.ts b/infrastructure/application/index.ts index c92f558199..72b80554eb 100644 --- a/infrastructure/application/index.ts +++ b/infrastructure/application/index.ts @@ -421,6 +421,10 @@ export = async () => { name: "IDOX_NEXUS_SUBMISSION_URL", value: config.requireSecret("idox-nexus-submission-url"), }, + { + name: "MAPBOX_ACCESS_TOKEN", + value: config.requireSecret("mapbox-access-token"), + }, generateCORSAllowList(CUSTOM_DOMAINS, DOMAIN), ...generateTeamSecrets(config, env), ], diff --git a/scripts/pull-secrets.sh b/scripts/pull-secrets.sh index deb2863074..86bdc61e3b 100755 --- a/scripts/pull-secrets.sh +++ b/scripts/pull-secrets.sh @@ -8,6 +8,7 @@ then aws s3 cp s3://pizza-secrets/root.env ./../.env aws s3 cp s3://pizza-secrets/api.env.test ./../api.planx.uk/.env.test aws s3 cp s3://pizza-secrets/hasura.env.test ./../hasura.planx.uk/.env.test + aws s3 cp s3://pizza-secrets/editor.env ./../editor.planx.uk/.env else echo "Fetching secrets for developer" profile=${1:-default} @@ -15,6 +16,7 @@ else aws s3 cp s3://pizza-secrets/root.env ./../.env --profile $profile aws s3 cp s3://pizza-secrets/api.env.test ./../api.planx.uk/.env.test --profile $profile aws s3 cp s3://pizza-secrets/hasura.env.test ./../hasura.planx.uk/.env.test --profile $profile + aws s3 cp s3://pizza-secrets/editor.env ./../editor.planx.uk/.env --profile $profile fi echo "Complete: Secrets from S3 copied to local machine" diff --git a/scripts/push-secrets.sh b/scripts/push-secrets.sh index 73aae14e9f..cb7f3a74bc 100755 --- a/scripts/push-secrets.sh +++ b/scripts/push-secrets.sh @@ -7,4 +7,5 @@ aws sso login --profile $profile aws s3 cp ./../.env s3://pizza-secrets/root.env --profile $profile aws s3 cp ./../api.planx.uk/.env.test s3://pizza-secrets/api.env.test --profile $profile aws s3 cp ./../hasura.planx.uk/.env.test s3://pizza-secrets/hasura.env.test --profile $profile +aws s3 cp ./../editor.planx.uk/.env s3://pizza-secrets/editor.env --profile $profile echo "Complete: Secrets from local machine pushed to S3" \ No newline at end of file