Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
18a2a71
Modernize Crossplane conformance tests to v1.17 and remove provider c…
jbw976 Sep 28, 2024
c9cf91e
build: update build and CI to use modern versions and processes
jbw976 Oct 9, 2024
4d6ff88
build: add go.cachedir target to makefile
jbw976 Oct 9, 2024
e34f343
build: adopt same linters as crossplane and fix all linting issues
jbw976 Oct 10, 2024
41f26cd
build: update xpkg-action version and usage
jbw976 Oct 11, 2024
c7439cc
build: use stable channel for xpkg-action
jbw976 Oct 12, 2024
055f8fc
build: rename crossplane tests directory to just tests
jbw976 Oct 12, 2024
4ac8565
build: add codeql and trivy scans
jbw976 Oct 14, 2024
2ef0973
build: use specific cache for codeql
jbw976 Oct 14, 2024
a43c53c
test: add conformance tests for Functions
jbw976 Oct 15, 2024
a8ea8e8
test: use t.Helper() for test helper functions
jbw976 Oct 15, 2024
d987f76
build: update build submodule to latest
jbw976 Oct 28, 2024
bac733b
update XRD/XR tests to be v2 compatible
jbw976 Jul 17, 2025
bcf9d89
Test Operations functionality
jbw976 Jul 22, 2025
17341f8
test all v2 Crossplane CRDs
jbw976 Jul 23, 2025
e5ece80
Usage conformance test verification (namespaced, cluster, and legacy)
jbw976 Jul 24, 2025
19ca7e1
chore(deps): bump to apiextensions/v2
jbw976 Jul 26, 2025
837e979
test: WatchOperation conformance test
jbw976 Jul 27, 2025
dd8c5aa
test: CronOperation conformance test
jbw976 Jul 27, 2025
b60c2a3
chore(deps): bump crossplane and crossplane-runtime to v2 modules
jbw976 Aug 1, 2025
feef199
test: compose a secret also in TestCompositeResourceNamespace
jbw976 Aug 1, 2025
5e3f0e2
test: Verify Provider installs an activated MRD
jbw976 Aug 6, 2025
79ee7fc
chore(deps): bump crossplane and crossplane-runtime to v2.0.0-rc.1
jbw976 Aug 6, 2025
689a5cf
Make namespace creation and clean up more reliable across multiple tests
jbw976 Aug 25, 2025
a8c2347
chore(deps): bump crossplane dependencies to v2 releases
jbw976 Aug 25, 2025
c6f9ce6
build: download crossplane CLI to build test config package
jbw976 Aug 26, 2025
5d58c6c
build: bump go to 1.24.5, golangci to v2.2.2, docker buildx to v0.23.0
jbw976 Aug 28, 2025
0d92149
lint: linter fixes
jbw976 Aug 29, 2025
475a02c
test: add verification that modern XRDs do not create claim CRDs
jbw976 Sep 6, 2025
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
4 changes: 2 additions & 2 deletions .github/workflows/backport.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ jobs:
# The main gotchas with this action are that it _only_ supports merge commits,
# and that PRs _must_ be labelled before they're merged to trigger a backport.
open-pr:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
if: github.event.pull_request.merged
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
fetch-depth: 0

Expand Down
170 changes: 116 additions & 54 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ on:

env:
# Common versions
GO_VERSION: "1.16"
GOLANGCI_VERSION: "v1.31"
DOCKER_BUILDX_VERSION: "v0.4.2"
GO_VERSION: '1.24.5'
GOLANGCI_VERSION: 'v2.2.2'
DOCKER_BUILDX_VERSION: 'v0.23.0'

# Common users. We can't run a step 'if secrets.AWS_USR != ""' but we can run
# a step 'if env.AWS_USR' != ""', so we copy these to succinctly test whether
Expand All @@ -22,150 +22,219 @@ env:

jobs:
detect-noop:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
outputs:
noop: ${{ steps.noop.outputs.should_skip }}
steps:
- name: Detect No-op Changes
id: noop
uses: fkirc/skip-duplicate-actions@v2.1.0
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
paths_ignore: '["**.md", "**.png", "**.jpg"]'
do_not_skip: '["workflow_dispatch", "schedule", "push"]'
concurrent_skipping: false

lint:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
needs: detect-noop
if: needs.detect-noop.outputs.noop != 'true'

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
submodules: true

- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5
with:
go-version: ${{ env.GO_VERSION }}

- name: Find the Go Build Cache
id: go
run: echo "::set-output name=cache::$(go env GOCACHE)"
run: echo "::set-output name=cache::$(make go.cachedir)"

- name: Cache the Go Build Cache
uses: actions/cache@v2
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: ${{ steps.go.outputs.cache }}
key: ${{ runner.os }}-build-lint-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-build-lint-

- name: Cache Go Dependencies
uses: actions/cache@v2
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: .work/pkg
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-pkg-

- name: Vendor Dependencies
run: make vendor vendor.check
- name: Download Go Modules
run: make modules.download modules.check

# This action uses its own setup-go, which always seems to use the latest
# stable version of Go. We could run 'make lint' to ensure our desired Go
# version, but we prefer this action because it leaves 'annotations' (i.e.
# it comments on PRs to point out linter violations).
# We could run 'make lint' to ensure our desired Go version, but we prefer
# this action because it leaves 'annotations' (i.e. it comments on PRs to
# point out linter violations).
- name: Lint
uses: golangci/golangci-lint-action@v2
uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6
with:
version: ${{ env.GOLANGCI_VERSION }}
skip-cache: true # We do our own caching.

check-diff:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
needs: detect-noop
if: needs.detect-noop.outputs.noop != 'true'

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
submodules: true

- name: Setup Go
uses: actions/setup-go@v2
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5
with:
go-version: ${{ env.GO_VERSION }}

- name: Find the Go Build Cache
id: go
run: echo "::set-output name=cache::$(go env GOCACHE)"
run: echo "::set-output name=cache::$(make go.cachedir)"

- name: Cache the Go Build Cache
uses: actions/cache@v2
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: ${{ steps.go.outputs.cache }}
key: ${{ runner.os }}-build-check-diff-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-build-check-diff-

- name: Cache Go Dependencies
uses: actions/cache@v2
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: .work/pkg
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-pkg-

- name: Vendor Dependencies
run: make vendor vendor.check
- name: Download Go Modules
run: make modules.download modules.check

- name: Check Diff
run: make check-diff

codeql:
runs-on: ubuntu-24.04
needs: detect-noop
if: needs.detect-noop.outputs.noop != 'true'

steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
submodules: true

- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5
with:
go-version: ${{ env.GO_VERSION }}

- name: Find the Go Build Cache
id: go
run: echo "::set-output name=cache::$(make go.cachedir)"

- name: Cache the Go Build Cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: ${{ steps.go.outputs.cache }}
key: ${{ runner.os }}-build-codeql-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-build-codeql-

- name: Cache Go Dependencies
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: .work/pkg
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-pkg-

- name: Download Go Modules
run: make modules.download modules.check

- name: Initialize CodeQL
uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3
with:
languages: go

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3

trivy-scan-fs:
runs-on: ubuntu-24.04
needs: detect-noop
if: needs.detect-noop.outputs.noop != 'true'
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
submodules: true

- name: Run Trivy vulnerability scanner in fs mode
uses: aquasecurity/trivy-action@6e7b7d1fd3e4fef0c5fa8cce1229c54b2c9bd0d8 # 0.24.0
with:
scan-type: 'fs'
ignore-unfixed: true
scan-ref: '.'
exit-code: '1'
severity: 'CRITICAL,HIGH'

publish-artifacts:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
needs: detect-noop
if: needs.detect-noop.outputs.noop != 'true'

steps:
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v3
with:
platforms: all

- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v3
with:
version: ${{ env.DOCKER_BUILDX_VERSION }}
install: true

- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
submodules: true

- name: Fetch History
run: git fetch --prune --unshallow

- name: Setup Go
uses: actions/setup-go@v2
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5
with:
go-version: ${{ env.GO_VERSION }}

- name: Find the Go Build Cache
id: go
run: echo "::set-output name=cache::$(go env GOCACHE)"
run: echo "::set-output name=cache::$(make go.cachedir)"

- name: Cache the Go Build Cache
uses: actions/cache@v2
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: ${{ steps.go.outputs.cache }}
key: ${{ runner.os }}-build-publish-artifacts-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-build-publish-artifacts-

- name: Cache Go Dependencies
uses: actions/cache@v2
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4
with:
path: .work/pkg
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-pkg-

- name: Vendor Dependencies
run: make vendor vendor.check
- name: Download Go Modules
run: make modules.download modules.check

- name: Build Artifacts
run: make -j2 build.all
Expand All @@ -175,13 +244,13 @@ jobs:
BUILD_ARGS: "--load"

- name: Publish Artifacts to GitHub
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: output
path: _output/**

- name: Login to Docker
uses: docker/login-action@v1
uses: docker/login-action@v3
if: env.DOCKER_USR != ''
with:
username: ${{ secrets.DOCKER_USR }}
Expand All @@ -194,8 +263,6 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_USR }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PSW }}
GIT_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCS_GIT_USR: ${{ secrets.UPBOUND_BOT_GITHUB_USR }}
DOCS_GIT_PSW: ${{ secrets.UPBOUND_BOT_GITHUB_PSW }}

- name: Promote Artifacts in S3 and Docker Hub
if: github.ref == 'refs/heads/master' && env.AWS_USR != '' && env.DOCKER_USR != ''
Expand All @@ -207,45 +274,40 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PSW }}

publish-test-configuration:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
needs: detect-noop
if: needs.detect-noop.outputs.noop != 'true'

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
submodules: true
fetch-depth: 0

# The tagger step uses the same logic in the build submodule to generate package tag
# https://github.com/upbound/build/blob/4f64913157a952dbe77cd9e05457d9abe695a1d4/makelib/common.mk#L193
# https://github.com/crossplane/build/blob/4f64913157a952dbe77cd9e05457d9abe695a1d4/makelib/common.mk#L193
- name: Set Tag
run: echo "::set-output name=VERSION_TAG::$(git describe --dirty --always --tags | sed 's/-/./2' | sed 's/-/./2' )"
id: tagger

- name: Login to Docker
uses: docker/login-action@v1
uses: docker/login-action@v3
if: env.DOCKER_USR != ''
with:
username: ${{ secrets.DOCKER_USR }}
password: ${{ secrets.DOCKER_PSW }}

- name: Setup the Crossplane CLI
run: "curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh"

- name: Build
uses: crossplane-contrib/xpkg-action@v0.2.0
with:
channel: master
version: current
command: build configuration -f testdata/configuration --name=conformance.xpkg
run: ./crossplane xpkg build -f testdata/configuration -o conformance.xpkg

- name: Push
uses: crossplane-contrib/xpkg-action@v0.2.0
if: env.DOCKER_USR != ''
with:
command: push configuration -f testdata/configuration/conformance.xpkg crossplane/conformance-testdata-configuration:${{ steps.tagger.outputs.VERSION_TAG }}
run: ./crossplane xpkg push -f conformance.xpkg index.docker.io/crossplane/conformance-testdata-configuration:${{ steps.tagger.outputs.VERSION_TAG }}

- name: Push Latest
uses: crossplane-contrib/xpkg-action@v0.2.0
if: env.DOCKER_USR != ''
with:
command: push configuration -f testdata/configuration/conformance.xpkg crossplane/conformance-testdata-configuration
run: ./crossplane xpkg push -f conformance.xpkg index.docker.io/crossplane/conformance-testdata-configuration
6 changes: 3 additions & 3 deletions .github/workflows/commands.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on: issue_comment

jobs:
points:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
if: startsWith(github.event.comment.body, '/points')

steps:
Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
# NOTE(negz): See also backport.yml, which is the variant that triggers on PR
# merge rather than on comment.
backport:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
if: github.event.issue.pull_request && startsWith(github.event.comment.body, '/backport')
steps:
- name: Extract Command
Expand All @@ -80,7 +80,7 @@ jobs:
permission-level: write

- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
fetch-depth: 0

Expand Down
Loading
Loading