Closed tschaffter closed 7 months ago
The development environment is the environment used by the developers (N developers => N development environments). The development environment can be local or on AWS, for instance a stack deployed by each developers.
The testing environment is where testing suites are run (unit, integration, e2e). Tests could also measure the performance of the stack, for instance, maximum sustainable throughput (MST) and maximum sustainable tracking throughput. At least e2e and performance-related tests should be performed in an environment almost identical to the production environment.
The staging environment is where QA testers review the app. Once the staging version is approved, the production environment can be updated.
The production environment is the "live" environment that hosts the app.
The environments that OC should deploy are:
testing
(optional)staging
production
Feature | Trunk Base Development | Feature Branching (Github Flow) |
---|---|---|
Main branch | Always deployable | Not always deployable |
Feature branches | Short-lived, optional | Long-lived, required |
Merge frequency | Frequent | Infrequent |
CI/CD emphasis | Strong | Weaker |
Complexity | Simpler | More complex |
Merge conflicts | Less likely | More likely |
Example workflow:
main
updated?This is an article about creating separate CI/CD pipelines for microservices in a monorepo using GitHub Actions. It discusses the benefits of using microservices and why deploying them independently is important. It also explains how traditional monorepo CI/CD pipelines can’t handle individual deployments. The article then introduces a solution using GitHub Actions workflows to create separate CI/CD pipelines for each microservice in a monorepo. Finally, it provides an example project with instructions on how to run it.
About Metarepo:
Metarepos combine the convenience of a monorepo with the flexibility of separate code repositories. But still, having separate code repositories adds complexity, and it would be better if we could stick to the simpler monorepo for as long as possible.
Current settings:
Google Bard:
Here's a guide on how to run e2e tests with GitHub Workflows in a forking workflow:
1. Create or Update a Workflow File:
.github/workflows
directory, create or update a YAML file defining your workflow.2. Configure Actions for E2E Tests:
actions/setup-node
, actions/setup-java
, etc.).3. Run the E2E Tests:
actions/github-script
: Directly run test commands within the workflow.cypress-io/github-action
for Cypress).4. Customize Actions for Forked Repositories:
github.repository_owner
).5. Example Workflow File:
name: E2E Tests
on: [pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm install
- run: npm test:e2e
Additional Considerations:
Added to Sprint 24.2
Added to Sprint 24.3
We have a general solution to run e2e tests as part of PRs that originate from forks.
The OC team and Platform are now teaming up to deploy OC to AWS in a scalable way. The Platform team will be responsible for deciding how to deploy OC to AWS.
What product(s) is this story for?
Sage Monorepo
As a user, I want
No response
Description
We need to:
schematic-api
e2e test requires secrets to access Synapsestaging
andproduction
development
andtesting
should be considered (see Microsoft docs)Other considerations:
References:
CodePipeline
Acceptance criteria
TBA
Tasks
Anything else?
cc @andrewelamb
Have you linked this story to a GitHub Project?