Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: github action using starshipjs #27

Merged
merged 15 commits into from
Jun 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ jobs:
- uses: ./
id: starship
with:
port-forward: true
name: test-with-values
values: config.yaml

Expand Down Expand Up @@ -130,7 +129,6 @@ jobs:
- uses: ./
id: starship
with:
port-forward: true
name: test-kubeconfig
kubeconfig: ${{ steps.kubeconfig.outputs.content }}
values: config.yaml
Expand All @@ -149,7 +147,7 @@ jobs:
NAMESPACE: ${{ steps.starship.outputs.namespace }}
NAME: ${{ steps.starship.outputs.name }}

test-with-no-portforward:
test-with-no-ports:
runs-on: ubuntu-latest
steps:

Expand All @@ -170,7 +168,6 @@ jobs:
- uses: ./
id: starship
with:
port-forward: false
name: test-no-portforward
values: config.yaml

Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,8 @@ bin-release/
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
# should NOT be excluded as they contain compiler settings and other important
# information for Eclipse / Flash Builder.
**/node_modules/
**/.DS_Store
**/dist
**/yarn-error.log
lerna-debug.log
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ For more information, reference the GitHub Help Documentation for [Creating a wo
For more information on inputs, see the [API Documentation](https://developer.github.com/v3/repos/releases/#input)

- `values`: Required, config for helm chart for starship devnet inputs
- `port-forward`: Optional, toggle to perform local port-forwarding, based on the `values.yaml` (default: `false`)
- `version`: Optional, version of devnet helm chart from starship (default: `0.2.3`)
- `cli-version`: Optional, version of @starship-ci/cli to use (default: `2.4.0`)
- `kubeconfig`: Optional, Kubeconfig for remote cluster, if set, will be used instead of creating local kind cluster
- `version`: Optional, version of devnet chart from starship (default: `0.2.3`)
- `namespace`: Optional, Kubernetes namespace to which helm charts will be deployed. If not found, namespace will be created. (default: `ci-${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}`)
- `repo`: Optional, Helm repo to fetch the chart from (default: https://cosmology-tech.github.io/starship)
- `name`: Optional, Release name for the helm chart deployment (default: `starship-devnet`)
- `namespace`: Optional, Kubernetes namespace to which helm charts will be deployed. If not found, namespace will be created. (default: `ci-${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}`)
- `chart`: Optional, Name of the help chart to use. Recommended: use default (default: `starship/devnet`)

### Outputs
Expand Down
74 changes: 41 additions & 33 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@ inputs:
values:
description: "Values yaml raw data of filename for helm that define the topology for the devnet"
required: true
port-forward:
description: "Flag weather to perform port forwarding as defined in the values file to local ports (default: true)"
version:
description: "Version of devnet chart (default: v0.2.3)"
required: false
default: "v0.2.3"
cli-version:
description: "Version of @starship-ci/cli to use: default: 2.3.0"
required: false
default: "true"
default: "2.4.0"
kubeconfig:
description: "Kubeconfig file for remote cluster, if set, will be used instead of creating kind cluster"
required: false
default: ""
version:
description: "Version of devnet chart (default: 0.1.45)"
required: false
default: "0.2.3"
chart:
description: "Name of the help chart to use. Recommended: use default (default: starship/devnet)"
required: false
Expand All @@ -36,10 +36,6 @@ inputs:
description: "Kubernetes namespace to deploy helm charts on (default: ci-{github.repository}-{github.workflow}-{github.ref} )"
required: false
default: ""
timeout:
description: "Timeout for helm install (default: 10m)"
required: false
default: "10m"

outputs:
namespace:
Expand All @@ -53,12 +49,11 @@ runs:
using: composite
steps:

- name: Install dependencies
run: |
sudo apt-get install -y make sed wget tar jq
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq
sudo chmod +x /usr/bin/yq
shell: bash
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20.x"
cache: "yarn"

- name: Setup helm
uses: azure/setup-helm@v3
Expand Down Expand Up @@ -112,12 +107,25 @@ runs:
env:
INPUT_NAMESPACE: ${{ inputs.namespace }}

- name: Create namespace if nonexistent
run: |
kubectl create namespace ${{ steps.set-namespace.outputs.namespace }} || true
shell: bash

- name: Setup starshipjs client
run: |
yarn global add @starship-ci/cli@${{ inputs.cli-version }}
starship --version
shell: bash

- name: Setup starship helm repo
run: |
helm version
helm repo add starship ${{ inputs.repo }}
helm repo update
helm search repo starship/devnet
starship setup \
--helmName ${{ inputs.name }} \
--helmVersion ${{ inputs.version }} \
--helmFile $GITHUB_WORKSPACE/${{ inputs.name }}-values.yaml \
--helmNamespace ${{ steps.set-namespace.outputs.namespace }} \
--helmChart ${{ inputs.chart }}
shell: bash

- name: Helm install
Expand All @@ -126,7 +134,12 @@ runs:
run: |
helm delete ${{ inputs.name }} --debug --namespace ${{ steps.set-namespace.outputs.namespace }} --wait || true
sleep 5
${{ github.action_path }}/install.sh --config ${{ inputs.values }} --name ${{ inputs.name }} --chart ${{ inputs.chart }} --version ${{ inputs.version }} --namespace ${{ steps.set-namespace.outputs.namespace }} --timeout ${{ inputs.timeout }}
starship start \
--helmName ${{ inputs.name }} \
--helmVersion ${{ inputs.version }} \
--helmFile $GITHUB_WORKSPACE/${{ inputs.name }}-values.yaml \
--helmNamespace ${{ steps.set-namespace.outputs.namespace }} \
--helmChart ${{ inputs.chart }}
shell: bash

- name: Logs
Expand All @@ -152,15 +165,10 @@ runs:
helm delete ${{ inputs.name }} --debug --namespace ${{ steps.set-namespace.outputs.namespace }} --wait || true
sleep 5
kubectl get pods --namespace ${{ steps.set-namespace.outputs.namespace }}
${{ github.action_path }}/install.sh --config ${{ inputs.name }}-values.yaml --name ${{ inputs.name }} --chart ${{ inputs.chart }} --version ${{ inputs.version }} --namespace ${{ steps.set-namespace.outputs.namespace }} --timeout ${{ inputs.timeout }}
shell: bash

- name: Port forward
if: ${{ inputs.port-forward == 'true' }}
run: |
kubectl version
${{ github.action_path }}/port-forward.sh --config=$VALUES_FILE --namespace=$NAMESPACE
starship start \
--helmName ${{ inputs.name }} \
--helmVersion ${{ inputs.version }} \
--helmFile $GITHUB_WORKSPACE/${{ inputs.name }}-values.yaml \
--helmNamespace ${{ steps.set-namespace.outputs.namespace }} \
--helmChart ${{ inputs.chart }}
shell: bash
env:
VALUES_FILE: ${{ inputs.name }}-values.yaml
NAMESPACE: ${{ steps.set-namespace.outputs.namespace }}
99 changes: 0 additions & 99 deletions install.sh

This file was deleted.

8 changes: 8 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "starship-action",
"version": "1.0.0",
"main": "index.js",
"repository": "[email protected]:cosmology-tech/starship-action.git",
"author": "Anmol1696 <[email protected]>",
"license": "MIT"
}
Loading
Loading