Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
2aa0183
refactor(monorepo): 🧹 move API into api/
alexchristy Jul 13, 2025
4b364c9
refactor(monorepo): move cli over
Adamkadaban Jul 13, 2025
79ec998
refactor(monorepo): move frontend over
Adamkadaban Jul 13, 2025
8a8d3c3
refactor(monorepo): move cli gitignore over
Adamkadaban Jul 13, 2025
ae259cc
refactor(monorepo): scope workflows to appropriate folders
Adamkadaban Jul 13, 2025
a8e9db7
refactor(monorepo): move docs over
Adamkadaban Jul 13, 2025
0ca5517
fix(monorepo): add missing goreleaser file
Adamkadaban Jul 13, 2025
ab75f50
fix(monorepo): get version from project root
Adamkadaban Jul 13, 2025
2cbbad4
style(monorepo): black fixes
Adamkadaban Jul 13, 2025
ec33106
fix(monorepo): move api docker compose files to api directory for now…
Adamkadaban Jul 13, 2025
6241ddf
fix(monorepo): reformat docker compose files to support frontend and …
Adamkadaban Jul 13, 2025
cd5a8cc
fix(monorepo): fix versioning in api to work regardless of src root
Adamkadaban Jul 13, 2025
6822e1d
fix api dockerfile paths
Adamkadaban Jul 14, 2025
9d10e53
configure docker compose with cors
Adamkadaban Jul 14, 2025
c551954
add cors to api setup
Adamkadaban Jul 14, 2025
f5bc20d
add cors to api setup
Adamkadaban Jul 14, 2025
831ef72
style(monorepo): black fixes
Adamkadaban Jul 14, 2025
4dd5d91
fix(monorepo): add vite url to frontend dockerfile
Adamkadaban Jul 14, 2025
b6851cb
fix(monorepo): add noqa for inline import that was accidentally removed
Adamkadaban Jul 14, 2025
1e21ae3
docs: switch url for repo from API to OpenLabs
Adamkadaban Jul 14, 2025
0eb68c0
style(monorepo): black fixes
Adamkadaban Jul 14, 2025
4e4e8cc
style(monorepo): put ruff noqa for inline imports back into conftest
Adamkadaban Jul 14, 2025
f7e5b08
ci(monorepo): remove erroneous job in cli lint workflow
Adamkadaban Jul 14, 2025
a6b87ec
docs(monorepo): include checks for cli and frontend in pr template
Adamkadaban Jul 14, 2025
9804bda
fix(monorepo): fix path for docker compose files in api conftest
Adamkadaban Jul 14, 2025
b13da32
fix(monorepo): fix path for docker compose files in api conftest
Adamkadaban Jul 14, 2025
55b45fb
fix(monorepo): fix path for docker compose files in api conftest
Adamkadaban Jul 14, 2025
4c04f7f
style(monorepo): black fixes
Adamkadaban Jul 14, 2025
e34b95c
fix(monorepo): fix docker compose files to get integration tests work…
Adamkadaban Jul 14, 2025
7202ad8
fix(api,config): update api default config values for postgress and r…
alexchristy Jul 14, 2025
63d48dc
fix(env): move env example files to project root
alexchristy Jul 14, 2025
45603a5
fix(docker): move docker config file to project root
alexchristy Jul 14, 2025
4afc589
fix(docker, api): update docker and api config variables and point do…
alexchristy Jul 14, 2025
374214a
fix(docker): make frontend wait until API is healthy to prevent eager…
alexchristy Jul 14, 2025
72aced2
fix(api): revert allowed default origins to localhost
alexchristy Jul 14, 2025
0c4d92b
fix(frontend): update runtime config to fall back to port 8000 for th…
alexchristy Jul 14, 2025
9d58271
fix(git): update .gitignore to include project root env files
alexchristy Jul 14, 2025
afeca8f
fix(tests): dynamically determine the path project root
alexchristy Jul 14, 2025
291aa1b
fix(tests): remove integration test coverage to speed up test time
alexchristy Jul 14, 2025
2a7d18f
fix(tests): update integration tests credential loading
alexchristy Jul 14, 2025
57e8e36
fix(workflows): change api test workflows to create .env file in proj…
alexchristy Jul 14, 2025
67fb692
fix(workflows): change deploy test workflow to create .env file in pr…
alexchristy Jul 14, 2025
611872f
Create central README.md
alexchristy Jul 15, 2025
54d2bd9
fix(docs): update API readme
alexchristy Jul 15, 2025
5ba4ef0
feat(docs): catch up docs wip commit
alexchristy Jul 16, 2025
946f7d5
fix(docs): wip documentation need to create diagram for Lab Hierarchy
alexchristy Jul 16, 2025
ca82b64
feat(docs): add core concepts page and supporting assets
alexchristy Jul 17, 2025
c5df157
feat(docs): add index content
alexchristy Jul 17, 2025
cd881d3
fix(docs): rename the first lab quick start tutorial
alexchristy Jul 17, 2025
afc7450
fix(docs): finish the deploy your first range tutorial
alexchristy Jul 17, 2025
e572991
fix(docs): update core components explanation page to indicate that J…
alexchristy Jul 17, 2025
05d1411
fix(docs): add emoji to introduction doc index entry
alexchristy Jul 17, 2025
a6ec2fa
fix(docs): add cli tutorial placeholder
alexchristy Jul 17, 2025
89bf19c
feat(docs): add architectural diagram
alexchristy Jul 17, 2025
3050ce4
fix(api,config): update default license values for api
alexchristy Jul 17, 2025
857f281
fix(docs): update installation docs and env examples to make it easy …
alexchristy Jul 17, 2025
8a2b83f
fix(docs): reformat main README to point to new installation guide on…
alexchristy Jul 17, 2025
62f194b
fix(docs): remove auto release workflows from api readme
alexchristy Jul 17, 2025
20cbf3a
fix(docs): add frontend port to env example
alexchristy Jul 17, 2025
0e70b6b
test(ssh): add integration test to check that ssh from jumpbox to hos…
Adamkadaban Jul 18, 2025
bf3e95f
fix(typing): add better type hinting so mypy passes
Adamkadaban Jul 18, 2025
77ee005
fix(enums): make os username enums seperate per provider
Adamkadaban Jul 18, 2025
edbe779
fix(workflows): update auto workflow config to point to new repo name
alexchristy Jul 18, 2025
14989fa
fix(git): add new paths for test files and outputs
alexchristy Jul 18, 2025
7a7b29a
fix(docker): update the api dockerfile terraform install into a singl…
alexchristy Jul 18, 2025
da0c9c2
fix(workflow): api aws tests add pip caching and artifact uploads on …
alexchristy Jul 18, 2025
7bde2ef
fix(workflow): api black add pip caching
alexchristy Jul 18, 2025
11220f4
fix(workflows): api mypy add pip caching
alexchristy Jul 18, 2025
3c8de75
fix(workflow): api ruff add pip caching
alexchristy Jul 18, 2025
16a9317
fix(workflow): api unit tests add pip caching and artifact uploads on…
alexchristy Jul 18, 2025
bc3b7c5
fix(workflows): api integration tests add pip caching and aritifact u…
alexchristy Jul 18, 2025
859a403
fix(docker): remove unnecessary env file passing and default values i…
alexchristy Jul 18, 2025
7b24210
feat(docker): add a docker-compose test override to prevent overwriti…
alexchristy Jul 18, 2025
b712965
fix(tests,api): update api pyproject.toml to save test articacts in t…
alexchristy Jul 18, 2025
21b6437
fix(frontend): remove runtime configuration of api url to ensure that…
alexchristy Jul 18, 2025
63bb176
fix(env): update env file to centralize value setting and dyanmically…
alexchristy Jul 18, 2025
6d9ee82
fix(api): refactor api config to remove redundant starlette env parsi…
alexchristy Jul 18, 2025
a549638
fix(api): update api conftest to use new testing-out directory and dy…
alexchristy Jul 18, 2025
957a511
feat(e2e): add new end to end tests
alexchristy Jul 18, 2025
d28404c
fix(tests): fix yield type in test env file creation for api integrat…
alexchristy Jul 18, 2025
a498fbf
Merge branch 'monorepo' into ssh-tests
Adamkadaban Jul 18, 2025
f7ab730
fix(workflows): move all api tests into single workflow file and corr…
alexchristy Jul 18, 2025
08d383d
fix(workflows): update end to end tests workflow to be scoped to rele…
alexchristy Jul 18, 2025
76a46e8
fix(workflows): combine all api lint workflow files into a single wor…
alexchristy Jul 18, 2025
50eb0f7
fix(workflows): make e2e test workflow read only
alexchristy Jul 18, 2025
fd895fc
fix(workflow): update e2e test workflow playwright commands
alexchristy Jul 18, 2025
b293dd1
fix(workflows): update e2e test workflow playwright commands to remov…
alexchristy Jul 18, 2025
8b65d17
fix(workflows): remove pytest args breaking e2e workflow tests
alexchristy Jul 18, 2025
906cf51
fix(workflows): update API tests AWS test to point to correct reusabl…
alexchristy Jul 18, 2025
dc541bd
fix(workflows): add concurrency checks for API and end2end tests to s…
alexchristy Jul 18, 2025
46072ee
fix(docs): update README badges
alexchristy Jul 18, 2025
117ceb3
Merge pull request #117 from OpenLabsHQ/ssh-tests
Adamkadaban Jul 18, 2025
54a9a8f
fix(workflows): add codecov to API unit tests
alexchristy Jul 19, 2025
c2d840c
feat(codecov): add code coverage configuration
alexchristy Jul 19, 2025
ff7d0f4
fix(api): update api pyproject.toml to remove redundant coverage thre…
alexchristy Jul 19, 2025
98084f5
fix(tests): update api test to use the correct invalid payload
alexchristy Jul 19, 2025
e36bedd
fix(workflows): switch api unit test coverage to coveralls
alexchristy Jul 19, 2025
aacd5b5
Merge branch 'main' into monorepo
Adamkadaban Jul 19, 2025
9b88e59
fix(docs): add coverage badge to readme
alexchristy Jul 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
66 changes: 66 additions & 0 deletions .github/goreleaser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# test this file with
# goreleaser release --config goreleaser.yml --clean --snapshot
version: 2
builds:
- env:
- CGO_ENABLED=0
- GOVERSION=1.19
ldflags:
- -s -w -X github.com/OpenLabsHQ/CLI/cmd.version={{.Version}} -X github.com/OpenLabsHQ/CLI/cmd.buildTime={{.Date}}
flags:
- -trimpath
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
binary: openlabs

nfpms:
- maintainer: "https://github.com/OpenLabsHQ"
package_name: openlabs
formats:
- deb
- rpm
- apk

archives:
- format: tar.gz
name_template: >-
openlabs_
{{- .Version }}_
{{- .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}
format_overrides:
- goos: windows
format: zip
files:
- README.md
- LICENSE*
- CHANGELOG.md

checksum:
name_template: 'checksums.txt'

snapshot:
name_template: "{{ incpatch .Version }}"

release:
draft: false
prerelease: auto

changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
- "^ci:"
- "^chore:"
- "Merge pull request"
- "Merge branch"
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: AWS Tests
name: API - AWS Tests

on:
workflow_run:
workflows: ["Integration Tests"]
workflows: ["API - Integration Tests"]
types:
- completed
branches:
Expand Down Expand Up @@ -31,6 +31,7 @@ jobs:
# Create .env file with defaults
- name: Set default ENV values
run: |
cd api
cp .env.example .env

# Set up Python
Expand All @@ -42,6 +43,7 @@ jobs:
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt
Expand All @@ -52,4 +54,5 @@ jobs:
INTEGRATION_TEST_AWS_ACCESS_KEY: ${{ secrets.INTEGRATION_TEST_AWS_ACCESS_KEY }}
INTEGRATION_TEST_AWS_SECRET_KEY: ${{ secrets.INTEGRATION_TEST_AWS_SECRET_KEY }}
run: |
cd api
pytest -m aws --no-cov
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
name: Black
name: API - Black

on:
push:
branches:
- main
paths:
- 'api/**'
pull_request:
branches:
- '**'
paths:
- 'api/**'

jobs:
run:
Expand All @@ -26,11 +30,13 @@ jobs:
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt

# Run Black formatter
- name: Run Black
run: |
cd api
black --check --diff .
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
name: Integration Tests
name: API - Integration Tests

on:
push:
branches:
- main
paths:
- 'api/**'
pull_request:
branches:
- '**'
paths:
- 'api/**'

jobs:
run:
Expand All @@ -26,6 +30,7 @@ jobs:
# Create .env file with defaults
- name: Set default ENV values
run: |
cd api
cp .env.example .env

# Set up Python
Expand All @@ -37,11 +42,13 @@ jobs:
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt

# Run Tests
- name: Run Integration Tests
run: |
cd api
pytest -m "integration and not deploy" --no-cov
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
name: Mypy
name: API - Mypy

on:
push:
branches:
- main
paths:
- 'api/**'
pull_request:
branches:
- '**'
paths:
- 'api/**'

jobs:
run:
Expand All @@ -26,11 +30,13 @@ jobs:
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt

# Run MyPy checks
- name: Run MyPy
run: |
cd api
mypy --install-types --non-interactive .
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
name: Ruff
name: API - Ruff

on:
push:
branches:
- main
paths:
- 'api/**'
pull_request:
branches:
- '**'
paths:
- 'api/**'

jobs:
run:
Expand All @@ -26,11 +30,13 @@ jobs:
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt

# Run Ruff linter and formatter
- name: Run Ruff
run: |
cd api
ruff check .
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
name: Unit Tests
name: API - Unit Tests

on:
push:
branches:
- main
paths:
- 'api/**'
pull_request:
branches:
- '**'
paths:
- 'api/**'

jobs:
run:
Expand All @@ -20,6 +24,7 @@ jobs:
# Create .env file with defaults
- name: Set default ENV values
run: |
cd api
cp .env.example .env

# Set up Python
Expand All @@ -31,11 +36,13 @@ jobs:
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt

# Run Tests
- name: Run Unit Tests
run: |
cd api
pytest -m unit
105 changes: 105 additions & 0 deletions .github/workflows/cli-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: CLI - Build + Release

on:
push:
tags:
- 'v*'
paths:
- 'cli/**'
workflow_dispatch:
workflow_run:
workflows: [auto_release]
types:
- completed
branches:
- main

permissions:
contents: write
packages: write

jobs:
check_pr_labels:
name: Check PR Labels
if: ${{ github.event_name == 'workflow_run' }}
runs-on: ubuntu-latest
outputs:
skip_build: ${{ steps.check_labels.outputs.has_documentation_label == 'true' }}
steps:
- name: Check documentation label
id: check_labels
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const workflowRun = await github.rest.actions.getWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }}
});

// Check if the workflow was triggered by a PR
if (workflowRun.data.head_commit && workflowRun.data.head_commit.message.includes('Merge pull request')) {
const prNumber = workflowRun.data.head_commit.message.match(/Merge pull request #(\d+)/)[1];

// Get PR details to check labels
const { data: pr } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber
});

// Check if PR has documentation label
const hasDocLabel = pr.labels.some(label => label.name === 'documentation');
core.setOutput('has_documentation_label', hasDocLabel.toString());
console.log(`PR #${prNumber} has documentation label: ${hasDocLabel}`);
} else {
core.setOutput('has_documentation_label', 'false');
}

prepare:
name: Prepare Release
needs: [check_pr_labels]
if: ${{ github.event_name != 'workflow_run' || needs.check_pr_labels.outputs.skip_build != 'true' }}
runs-on: ubuntu-latest
outputs:
tag_name: ${{ steps.get_tag.outputs.tag_name }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get tag name
id: get_tag
run: |
if [[ $GITHUB_REF == refs/tags/* ]]; then
echo "tag_name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
else
echo "tag_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
fi

release:
name: Create Release
needs: [check_pr_labels, prepare]
if: ${{ github.event_name != 'workflow_run' || needs.check_pr_labels.outputs.skip_build != 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ needs.prepare.outputs.tag_name }}

- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: 1.24.1
cache: true

- name: Run GoReleaser
run: |
cd cli
curl -sfL https://goreleaser.com/static/run | bash -s -- release --config ../.github/goreleaser.yml --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading
Loading