Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/garden-io/garden-action
GitHub action to install and prepare Garden, in order to run workflows, tests or deploy to your environments inside GitHub Workflows.
https://github.com/garden-io/garden-action
continuous-integration deployment github-actions
Last synced: about 2 months ago
JSON representation
GitHub action to install and prepare Garden, in order to run workflows, tests or deploy to your environments inside GitHub Workflows.
- Host: GitHub
- URL: https://github.com/garden-io/garden-action
- Owner: garden-io
- License: mpl-2.0
- Created: 2023-02-21T08:55:03.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-11T12:51:09.000Z (6 months ago)
- Last Synced: 2024-10-13T18:42:55.524Z (2 months ago)
- Topics: continuous-integration, deployment, github-actions
- Homepage: https://garden.io
- Size: 35.2 KB
- Stars: 16
- Watchers: 10
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Garden Github Action
This action installs garden and can optionally be used to run any [Garden](https://garden.io) command, for example `deploy`, `test` or `run workflow`.
Garden combines rapid development, testing, and DevOps automation in one tool.
This action will perform the following steps:
1. Download Garden from the GitHub release artifacts for the given version (default latest) at [garden-io/garden](https://github.com/garden-io/garden)
2. Verify the SHA256 checksum
3. Export garden to the `PATH`, so it can be used from any scripts in the following steps of the GitHub Action job.
4. If the `command` option is provided, it will run the given garden command.If the `command` option is *not* provided it will only prepare garden, which means it will install Garden and export it to the `PATH` environment variable. It will also export the `GARDEN_AUTH_TOKEN` environment variable `garden-auth-token` is configured.
This is helpful when calling `garden` in scripts from one of the following steps.
**Note:** At the moment this action only works with Linux-based GitHub Action runners.
If you are using macOS or Windows runners and need this action, please open a GitHub issue – in case there is demand, we will rewrite this action to make it platform-independent. (We also accept Pull requests for rewriting this Action in Typescript)## Inputs
## `command`
**Optional** The Garden command to execute, including all options. For example `deploy`, `test`, `run workflow` etc.
If not provided, the garden-action will
- install garden and export it to the `PATH` environment variable for subsequent steps
- export the `GARDEN_AUTH_TOKEN` environment variable for subsequent steps if the `garden-auth-token` input has been providedFor the full documentation please refer to the [Garden CLI documentation](https://docs.garden.io/reference/commands).
## `garden-version`
**Optional** Garden version. Default is latest
## `garden-auth-token`
**Optional** A token to authenticate to Garden Cloud.
The secret will be [masked to prevent accidental exposure in logs](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#masking-a-value-in-log).
**If no command has been supplied, the action will expose this value to the the following steps in the GitHub Action job by exporting a `GARDEN_AUTH_TOKEN` environment variable.**
## `garden-workdir`
**Optional** A path to a garden project in a repository.
Only necessary if there are multiple garden projects in a repository or if the `project.garden.yml` is in a subdirectory.
## `github-token`
**Optional** This token will be used to authenticate to GitHub API for fetching the latest Garden release. Defaults to `${{ github.token }}`.
The secret will be [masked to prevent accidental exposure in logs](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#masking-a-value-in-log).
## Outputs
The garden-action does not export any outputs.
## Example usage
This example uses the `aws-actions/configure-aws-credentials` action beforehand to authenticate to AWS. This might look different with other cloud providers.
It deploys a preview environment for other team members/teams to explore and tests the latest pushed code in a separate ci environment. In the ci environment, some additional variables are used.```
name: garden
on:
push:
branches:
- main
jobs:
garden-preview:
runs-on: ubuntu-latest
steps:
- name: AWS auth
uses: aws-actions/[email protected]
with:
aws-region: eu-central-1
role-to-assume: ${{ secrets.AWS_ROLE_EKS_DEV }}
role-session-name: GitHubActionsDev
role-duration-seconds: 3600
- name: AWS EKS Kubeconfig
run: |
# Add EKS cluster ${cluster_name} to ~/.kube/config
# NOTE: The context name will be the EKS cluster ARN by default.
# If your Garden configuration expects a different context name,
# you can add override it using the `--alias` option.
aws eks update-kubeconfig --name ${cluster_name} --region ${region}
- uses: actions/[email protected]
- name: Deploy preview env with Garden
uses: garden-io/garden-action@v2
with:
command: deploy --env preview
garden-auth-token: ${{ secrets.GARDEN_AUTH_TOKEN }}
garden-ci:
runs-on: ubuntu-latest
steps:
- name: AWS auth
uses: aws-actions/[email protected]
with:
aws-region: eu-central-1
role-to-assume: ${{ secrets.AWS_ROLE_EKS_DEV }}
role-session-name: GitHubActionsDev
role-duration-seconds: 3600
- name: AWS EKS Kubeconfig
run: |
# Add EKS cluster ${cluster_name} to ~/.kube/config
# NOTE: The context name will be the EKS cluster ARN by default.
# If your Garden configuration expects a different context name,
# you can add override it using the `--alias` option.
aws eks update-kubeconfig --name ${cluster_name} --region ${region}
- uses: actions/[email protected]
- name: Run tests in ci environment with Garden
uses: garden-io/garden-action@v2
with:
command: >
test --env ci
--var postgres-database=postgres
--var postgres-password=${{ secrets.PG_PASSWORD }}
garden-auth-token: ${{ secrets.GARDEN_AUTH_TOKEN }}
```