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
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
- Reuse
- 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 to create and reuse 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 }}
use: 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. Notice that we're using the
use
attribute to specify that we wish to reuse the space if it still exists from a previous run. - 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.
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
.