Skip to content

Test starting an ngrok agent in CI #1463

Test starting an ngrok agent in CI

Test starting an ngrok agent in CI #1463

Workflow file for this run

name: CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
GO_VERSION: '1.23'
DOCKER_BUILDX_PLATFORMS: linux/amd64,linux/arm64
jobs:
changes:
runs-on: ubuntu-latest
outputs:
charts: ${{ steps.filter.outputs.charts }}
chartyaml: ${{ steps.filter.outputs.chartyaml }}
go: ${{ steps.filter.outputs.go }}
tag: ${{ steps.filter.outputs.tag }}
permissions:
contents: read
pull-requests: read
steps:
- name: Checkout repo
uses: actions/checkout@v3
- id: filter
uses: dorny/[email protected]
with:
filters: |
chartyaml:
- 'helm/ngrok-operator/Chart.yaml'
charts:
- 'helm/ngrok-operator/**'
- 'scripts/e2e.sh'
go:
- '**.go'
- 'go.mod'
- 'go.sum'
- 'cmd/**'
- 'internal/**'
- 'pkg/**'
- 'Dockerfile'
- 'scripts/e2e.sh'
- 'VERSION'
tag:
- 'VERSION'
# Make sure that Kubebuilder autogenerated files are up to date.
kubebuilder-diff:
name: Kubebuilder Diff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: ${{ env.GO_VERSION }}
- name: Generate manifests
run: make manifests
- name: Fail if there are uncommited manifest changes
run: |
git diff --exit-code
git diff --cached --exit-code
build-images:
name: Build Images
needs:
- changes
- kubebuilder-diff
if: needs.changes.outputs.go == 'true'
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- id: buildx-setup
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
platforms: ${{ env.DOCKER_BUILDX_PLATFORMS }}
- name: Build
uses: docker/build-push-action@v3
with:
context: .
platforms: ${{ steps.buildx-setup.outputs.platforms }}
push: false
tags: ngrok/ngrok-operator:latest
go-mod-tidy:
name: Go Mod Tidy Check
runs-on: ubuntu-latest
needs:
- changes
if: |
(needs.changes.outputs.go == 'true')
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: ${{ env.GO_VERSION }}
- run: go mod tidy
- run: git diff --exit-code go.mod
- run: git diff --exit-code go.sum
build:
runs-on: ubuntu-latest
# needs:
# - changes
# - kubebuilder-diff
# if: |
# (needs.changes.outputs.go == 'true') ||
# (needs.changes.outputs.charts == 'true')
steps:
- uses: actions/checkout@v3
- uses: debianmaster/actions-k3s@master
id: k3s
with:
version: 'latest'
- run: |
kubectl get nodes
kubectl get pods -A
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: ${{ env.GO_VERSION }}
- name: Build
run: make build
- name: Lint
run: make lint
- name: Setup Envtest
run: make envtest
- name: Test
run: make test
- name: Build the Docker image
run: make docker-build
- name: Deploy controller to local cluster
run: make deploy NGROK_API_KEY={{ secrets.NGROK_CI_API_KEY }} NGROK_AUTHTOKEN={{ secrets.NGROK_CI_AUTHTOKEN }}
- name: Start an ngrok agent
uses: addnab/docker-run-action@v3
timeout-minutes: 5
with:
image: ngrok/ngrok:latest
options: --entrypoint /bin/bash
run: |
# auth
export NGROK_API_KEY={{ secrets.NGROK_CI_API_KEY }}
export NGROK_AUTHTOKEN={{ secrets.NGROK_CI_AUTHTOKEN }}
# example assets
mkdir -p /tmp/assets
echo "Hello from ngrok-operator" > /tmp/assets/hello_world.txt
# start an agent
ngrok https file:///tmp/assets/ &
- name: Check if controller is up
run: |
kubectl get nodes
kubectl get pods -A
helm:
runs-on: ubuntu-latest
timeout-minutes: 15
needs: [changes]
if: needs.changes.outputs.charts == 'true'
steps:
- uses: actions/checkout@v3
- uses: azure/setup-helm@v3
with:
version: v3.10.0
- name: Lint Helm Chart
run: make helm-lint
- name: Helm Unit Tests
run: make helm-test