-
Notifications
You must be signed in to change notification settings - Fork 152
8000
name: CI | |
on: | |
push: | |
branches: | |
- "main" | |
jobs: | |
check: | |
runs-on: "ubuntu-latest" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
- name: Lint | |
run: make check && make check-templates | |
- name: Check that 'func.yaml schema' is up-to-date | |
run: make schema-check | |
- name: Check embedded templates content | |
run: go test -run "^\QTestFileSystems\E$/^\Qembedded\E$" ./pkg/filesystem | |
test-unit: | |
strategy: | |
matrix: | |
java: [ 21 ] | |
os: [ "ubuntu-latest", "windows-latest", "macos-latest" ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: git config --global core.autocrlf false | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ matrix.java }} | |
distribution: 'temurin' | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Unit Test | |
run: make test | |
- name: Template Unit Tests | |
run: make test-templates | |
- uses: codecov/codecov-action@v4 | |
with: | |
files: ./coverage.txt | |
flags: unit-tests-${{ matrix.os }} | |
fail_ci_if_error: true | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
test-integration: | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Set Environment Variables | |
run: | | |
echo "KUBECONFIG=${{ github.workspace }}/hack/bin/kubeconfig.yaml" >> "$GITHUB_ENV" | |
echo "PATH=${{ github.workspace }}/hack/bin:$PATH" >> "$GITHUB_ENV" | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
- name: Install Binaries | |
run: ./hack/install-binaries.sh | |
- name: Allocate Cluster | |
run: ./hack/allocate.sh | |
- name: Local Registry | |
run: ./hack/registry.sh | |
- name: Setup testing images | |
run: ./hack/setup-testing-images.sh | |
- name: Integration Tests | |
run: make test-integration | |
- uses: codecov/codecov-action@v4 | |
with: | |
files: ./coverage.txt | |
flags: integration-tests | |
fail_ci_if_error: true | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
e2e-test: | |
strategy: | |
matrix: | |
os: ["ubuntu-latest"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Set Environment Variables | |
run: | | |
echo "KUBECONFIG=${{ github.workspace }}/hack/bin/kubeconfig.yaml" >> "$GITHUB_ENV" | |
echo "PATH=${{ github.workspace }}/hack/bin:$PATH" >> "$GITHUB_ENV" | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
- name: Install Binaries | |
run: ./hack/install-binaries.sh | |
- name: Allocate Cluster | |
run: ./hack/allocate.sh | |
- name: Local Registry | |
run: ./hack/registry.sh | |
- name: E2E Test | |
run: make test-e2e | |
- uses: codecov/codecov-action@v4 | |
with: | |
files: ./coverage.txt | |
flags: e2e-test | |
fail_ci_if_error: true | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
e2e-on-cluster-test: | |
strategy: | |
matrix: | |
os: ["ubuntu-latest"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Set Environment Variables | |
run: | | |
echo "KUBECONFIG=${{ github.workspace }}/hack/bin/kubeconfig.yaml" >> "$GITHUB_ENV" | |
echo "PATH=${{ github.workspace }}/hack/bin:$PATH" >> "$GITHUB_ENV" | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
- uses: imjasonh/setup-ko@v0.6 | |
- name: Install Binaries | |
run: ./hack/install-binaries.sh | |
- name: Allocate Cluster | |
run: ./hack/allocate.sh | |
- name: Setup testing images | |
run: ./hack/setup-testing-images.sh | |
- name: Deploy Tekton | |
run: ./hack/install-tekton.sh | |
- name: Deploy Test Git Server | |
run: ./hack/install-git-server.sh | |
- name: E2E On Cluster Test | |
env: | |
E2E_RUNTIMES: "" | |
run: make test-e2e-on-cluster | |
- uses: codecov/codecov-action@v4 | |
with: | |
files: ./coverage.txt | |
flags: e2e-test-oncluster | |
fail_ci_if_error: true | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
build: | |
needs: [check, test-unit, test-integration, e2e-test, e2e-on-cluster-test] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
# Standard build tasks | |
- name: Build | |
run: make cross-platform | |
# Upload all build artifacts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: OSX Binary (AMD) | |
path: func_darwin_amd64 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: OSX Binary (ARM) | |
path: func_darwin_arm64 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Binary (AMD) | |
path: func_linux_amd64 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Binary (ARM) | |
path: func_linux_arm64 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Binary (PPC64LE) | |
path: func_linux_ppc64le | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Binary (S390X) | |
path: func_linux_s390x | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: Windows Binary | |
path: func_windows_amd64.exe | |
publish-utils-image: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push | |
run: | | |
./hack/fetch-util-img-prerequisites.sh | |
docker buildx create --name multiarch --driver docker-container --use | |
docker buildx build . -f Dockerfile.utils \ | |
--platform=linux/ppc64le,linux/s390x,linux/amd64,linux/arm64 \ | |
--push \ | |
-t "ghcr.io/knative/func-utils:latest" \ | |
--annotation index:org.opencontainers.image.description="Knative Func Utils Image" \ | |
--annotation index:org.opencontainers.image.source="https://github.com/knative/func" \ | |
--annotation index:org.opencontainers.image.vendor="https://github.com/knative/func" \ | |
--annotation index:org.opencontainers.image.url="https://github.com/knative/func/pkgs/container/func-utils" | |
publish-image: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: knative/actions/setup-go@main | |
- uses: imjasonh/setup-ko@v0.6 | |
- run: ko build --platform=linux/ppc64le,linux/s390x,linux/amd64,linux/arm64 -B ./cmd/func |