CI Manual #9
This file contains hidden or 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 Manual | |
on: | |
workflow_dispatch: | |
inputs: | |
branch: | |
description: "Branch to build image from" | |
required: true | |
default: "master" | |
release_name: | |
description: "A overridden tag name for the release for e.g. v10.0.0-beta.1-hot-fix" | |
required: false | |
type: string | |
permissions: | |
contents: read | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:10.8 | |
env: | |
TZ: UTC | |
ports: | |
- 5432 | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 | |
postgres-ent: | |
image: postgres:10.8 | |
env: | |
TZ: UTC | |
ports: | |
- 5432 | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 | |
mysql: | |
image: mysql:5.7 | |
env: | |
MYSQL_ROOT_PASSWORD: root | |
MYSQL_DATABASE: dex | |
ports: | |
- 3306 | |
options: --health-cmd "mysql -proot -e \"show databases;\"" --health-interval 10s --health-timeout 5s --health-retries 5 | |
mysql-ent: | |
image: mysql:5.7 | |
env: | |
MYSQL_ROOT_PASSWORD: root | |
MYSQL_DATABASE: dex | |
ports: | |
- 3306 | |
options: --health-cmd "mysql -proot -e \"show databases;\"" --health-interval 10s --health-timeout 5s --health-retries 5 | |
etcd: | |
image: gcr.io/etcd-development/etcd:v3.5.0 | |
ports: | |
- 2379 | |
env: | |
ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379 | |
ETCD_ADVERTISE_CLIENT_URLS: http://0.0.0.0:2379 | |
options: --health-cmd "ETCDCTL_API=3 etcdctl --endpoints http://localhost:2379 endpoint health" --health-interval 10s --health-timeout 5s --health-retries 5 | |
keystone: | |
image: openio/openstack-keystone:rocky | |
ports: | |
- 5000 | |
- 35357 | |
options: --health-cmd "curl --fail http://localhost:5000/v3" --health-interval 10s --health-timeout 5s --health-retries 5 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
ref: ${{ github.event.inputs.branch }} # Checkout the selected branch | |
- name: Set up Go | |
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 | |
with: | |
go-version: "1.24" | |
- name: Download tool dependencies | |
run: make deps | |
- name: Verify | |
run: make verify | |
- name: Start services | |
run: docker compose -f docker-compose.test.yaml up -d | |
- name: Create kind cluster | |
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0 | |
with: | |
version: "v0.17.0" | |
node_image: "kindest/node:v1.25.3@sha256:cd248d1438192f7814fbca8fede13cfe5b9918746dfa12583976158a834fd5c5" | |
- name: Test | |
run: make testall | |
env: | |
DEX_MYSQL_DATABASE: dex | |
DEX_MYSQL_USER: root | |
DEX_MYSQL_PASSWORD: root | |
DEX_MYSQL_HOST: 127.0.0.1 | |
DEX_MYSQL_PORT: ${{ job.services.mysql.ports[3306] }} | |
DEX_MYSQL_ENT_DATABASE: dex | |
DEX_MYSQL_ENT_USER: root | |
DEX_MYSQL_ENT_PASSWORD: root | |
DEX_MYSQL_ENT_HOST: 127.0.0.1 | |
DEX_MYSQL_ENT_PORT: ${{ job.services.mysql-ent.ports[3306] }} | |
DEX_POSTGRES_DATABASE: postgres | |
DEX_POSTGRES_USER: postgres | |
DEX_POSTGRES_PASSWORD: postgres | |
DEX_POSTGRES_HOST: localhost | |
DEX_POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} | |
DEX_POSTGRES_ENT_DATABASE: postgres | |
DEX_POSTGRES_ENT_USER: postgres | |
DEX_POSTGRES_ENT_PASSWORD: postgres | |
DEX_POSTGRES_ENT_HOST: localhost | |
DEX_POSTGRES_ENT_PORT: ${{ job.services.postgres-ent.ports[5432] }} | |
DEX_ETCD_ENDPOINTS: http://localhost:${{ job.services.etcd.ports[2379] }} | |
DEX_LDAP_HOST: localhost | |
DEX_LDAP_PORT: 3890 | |
DEX_LDAP_TLS_PORT: 6360 | |
DEX_KEYSTONE_URL: http://localhost:${{ job.services.keystone.ports[5000] }} | |
DEX_KEYSTONE_ADMIN_URL: http://localhost:${{ job.services.keystone.ports[35357] }} | |
DEX_KEYSTONE_ADMIN_USER: demo | |
DEX_KEYSTONE_ADMIN_PASS: DEMO_PASS | |
DEX_KUBERNETES_CONFIG_PATH: ~/.kube/config | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
ref: ${{ github.event.inputs.branch }} # Ensure correct branch is checked out | |
- name: Set up Go | |
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 | |
with: | |
go-version: "1.24" | |
- name: Download golangci-lint | |
run: make bin/golangci-lint | |
- name: Lint | |
run: make lint | |
artifacts: | |
name: Artifacts | |
uses: ./.github/workflows/artifacts.yaml | |
with: | |
branch: ${{ github.event.inputs.branch }} # Pass branch input to artifacts.yaml | |
publish: true | |
release_name: ${{ github.event.inputs.release_name }} # Pass release_name to artifacts.yaml | |
secrets: | |
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
permissions: | |
attestations: write | |
contents: read | |
packages: write | |
id-token: write | |
security-events: write | |