GitHub Actions
Loft provides the following GitHub Actions for use in workflows:
- Setup DevSpace: Installs the
devspace
CLI - Setup Loft: Installs the
loft
CLI and logs in to the Loft instance - Create Space: Creates a Space
- Delete Space: Deletes a Space
Virtual Clusters Too!
Check out the Virtual Cluster Integration section for examples of using the Virtual Cluster create/delete GitHub Actions plugins.
Spaces for Pull Requests
These examples show how to create and delete Spaces for pull requests.
- Basic
- Automatic Cleanup
- DevSpace
This example shows how to create and delete a space to test an application named my-app
for pull requests.
# .github/workflows/prs.yaml
name: Pull Request Checks
on:
pull_request:
branches:
- 'main'
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Install Loft CLI
uses: loft-sh/setup-loft@main
with:
url: ${{ secrets.LOFT_URL }}
access-key: ${{ secrets.LOFT_ACCESS_KEY }}
- name: Create Space for PR
uses: loft-sh/create-space@main
with:
name: pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }}
- name: Deploy Application
run: kubectl apply -Rf ./kubernetes
- name: Wait for Deployment
run: kubectl rollout status -n pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }} deployments/my-app
- name: Run Tests
run: make e2e
- name: Delete PR Space
uses: loft-sh/delete-space@main
with:
name: pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }}
Explanation:
- The Setup Loft action is used to install the Loft CLI and login using the provided
url
andaccess-key
. - The Create Space action is used to create a unique space using information about the pull request. This will automatically configure the kube context for the following steps.
- The next step deploys the application using the runner provided
kubectl
and manifests located under./kubernetes
. - Before running tests, we use
kubectl
to wait for themy-app
deployment to become ready. - Now we run the end-to-end tests. In this example we're using
make
to run tests, but the command should be customized for your testing framework. - Finally, the Delete Space GitHub Action is used to delete the pull request's space.
This example shows how to automatically delete a Space after testing an application named my-app
for pull requests.
# .github/workflows/prs.yaml
name: Pull Request Checks
on:
pull_request:
branches:
- 'main'
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Install Loft CLI
uses: loft-sh/setup-loft@main
with:
url: ${{ secrets.LOFT_URL }}
access-key: ${{ secrets.LOFT_ACCESS_KEY }}
- name: Create Space for PR
uses: loft-sh/create-space@main
with:
name: pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }}
auto-cleanup: true
- name: Deploy Application
run: kubectl apply -Rf ./kubernetes
- name: Wait for Deployment
run: kubectl rollout status -n pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }} deployments/my-app
- name: Run Tests
run: make e2e
Explanation:
- The Setup Loft action is used to install the Loft CLI and login using the provided
url
andaccess-key
. - The Create Space action is used to create a unique space using information about the pull request. This will automatically configure the kube context for the following steps. Additionally, we have enabled the
auto-cleanup
option, which will delete the space after the job completes. - The next step deploys the application using the runner provided
kubectl
and manifests located under./kubernetes
. - Before running tests, we use
kubectl
to wait for themy-app
deployment to become ready. - Finally we run the end-to-end tests. In this example we're using
make
to run tests, but the command should be customized for your testing framework. There's no need to delete the space since theauto-cleanup
option was used when creating the space.
This example shows how use the Setup Devspace GitHub Action to install the DevSpace CLI and DevSpace commands to run tests.
# .github/workflows/prs.yaml
name: Pull Request Checks
on:
pull_request:
branches:
- 'main'
jobs:
e2e:
runs-on: ubuntu-latest
steps:
- name: Install DevSpace CLI
uses: loft-sh/setup-devspace@main
- name: Install Loft CLI
uses: loft-sh/setup-loft@main
with:
url: ${{ secrets.LOFT_URL }}
access-key: ${{ secrets.LOFT_ACCESS_KEY }}
- name: Create Space for PR
uses: loft-sh/create-space@main
with:
name: pr-${{ github.event.pull_request.number }}-${{ github.sha }}-${{ github.run_id }}
auto-cleanup: true
- name: Run Tests
run: devspace run e2e
Explanation:
- The Setup DevSpace action installs the DevSpace CLI.
- The Setup Loft action is used to install the Loft CLI and login using the provided
url
andaccess-key
. - The Create Space action is used to create a unique space using information about the pull request. This will automatically configure the kube context for the following steps. Additionally, we have enabled the
auto-cleanup
option, which will delete the space after the job completes. - Finally we use
devspace run e2e
to perform the needed steps to deploy and testmy-app
.