Test starting an ngrok agent in CI #1773
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
merge_group: | |
types: [checks_requested] | |
env: | |
GO_VERSION: '1.23' | |
DOCKER_BUILDX_PLATFORMS: linux/amd64,linux/arm64 | |
jobs: | |
e2e-TESTING: | |
runs-on: ubuntu-latest | |
needs: | |
- changes | |
- kubebuilder-diff | |
# Only run one e2e test at a time to avoid stomping on each other | |
concurrency: | |
group: e2e | |
cancel-in-progress: false | |
timeout-minutes: 20 | |
# Only run the e2e tests if on the main branch or in a merge queue and | |
# files have changed that require e2e tests | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "./.github/actions/build-and-test" | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-e2e: true | |
go-version: ${{ env.GO_VERSION }} | |
ngrok-api-key: ${{ secrets.NGROK_CI_API_KEY }} | |
ngrok-authtoken: ${{ secrets.NGROK_CI_AUTHTOKEN }} | |
changes: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
pull-requests: read | |
outputs: | |
charts: ${{ steps.changes.outputs.charts }} | |
chartyaml: ${{ steps.changes.outputs.chartyaml }} | |
go: ${{ steps.changes.outputs.go }} | |
tag: ${{ steps.changes.outputs.tag }} | |
tests: ${{ steps.changes.outputs.tests }} | |
make: ${{ steps.changes.outputs.make }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "./.github/actions/changes" | |
id: changes | |
# 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-and-test: | |
runs-on: ubuntu-latest | |
needs: | |
- changes | |
- kubebuilder-diff | |
if: | | |
(github.event_name == 'push' && github.ref_name == 'main') | |
|| | |
( | |
(needs.changes.outputs.go == 'true') || | |
(needs.changes.outputs.charts == 'true') || | |
(needs.changes.outputs.chartyaml == 'true') || | |
(needs.changes.outputs.tests == 'true') || | |
(needs.changes.outputs.make == 'true') | |
) | |
permissions: | |
contents: read | |
pull-requests: read | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "./.github/actions/build-and-test" | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
# this workflow is for incoming PRs, so we want to skip e2e tests | |
# and deploy the demo mode because our api keys are not available | |
# on contributor's forks | |
run-e2e: false | |
go-version: ${{ env.GO_VERSION }} | |
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 | |
e2e: | |
runs-on: ubuntu-latest | |
needs: | |
- changes | |
- kubebuilder-diff | |
# Only run one e2e test at a time to avoid stomping on each other | |
concurrency: | |
group: e2e | |
cancel-in-progress: false | |
timeout-minutes: 20 | |
# Only run the e2e tests if on the main branch or in a merge queue and | |
# files have changed that require e2e tests | |
if: | | |
(github.repository == 'ngrok/ngrok-operator') && | |
( | |
(github.event_name == 'push' && github.ref_name == 'main') || | |
(github.event_name == 'merge_group') | |
) && | |
( | |
(needs.changes.outputs.go == 'true') || | |
(needs.changes.outputs.charts == 'true') || | |
(needs.changes.outputs.chartyaml == 'true') || | |
(needs.changes.outputs.tests == 'true') || | |
(needs.changes.outputs.make == 'true') | |
) | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: "./.github/actions/build-and-test" | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-e2e: true | |
go-version: ${{ env.GO_VERSION }} | |
ngrok-api-key: ${{ secrets.NGROK_CI_API_KEY }} | |
ngrok-authtoken: ${{ secrets.NGROK_CI_AUTHTOKEN }} |