Skip to content

Commit

Permalink
testing on push
Browse files Browse the repository at this point in the history
  • Loading branch information
mwangggg committed Sep 18, 2023
1 parent 694a3e5 commit 4f92b08
Show file tree
Hide file tree
Showing 3 changed files with 185 additions and 12 deletions.
11 changes: 0 additions & 11 deletions .github/workflows/build-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,8 @@ env:
OPENSUSE_UNOFFICIAL_LIBCONTAINERS_SOURCE_URL: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/xUbuntu_22.04"

jobs:
check-before-build:
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'cryostatio' }}
steps:
- name: Fail if safe-to-test label NOT applied
if: ${{ github.event_name == 'pull_request_target' && !contains(github.event.pull_request.labels.*.name, 'safe-to-test') }}
run: exit 1

build-operator:
runs-on: ubuntu-latest
needs: [check-before-build]
steps:
- uses: actions/checkout@v2
- name: Install podman v4
Expand Down Expand Up @@ -73,7 +64,6 @@ jobs:

build-bundle:
runs-on: ubuntu-latest
needs: [check-before-build]
steps:
- uses: actions/checkout@v2
- name: Build bundle image
Expand Down Expand Up @@ -104,7 +94,6 @@ jobs:

build-scorecard:
runs-on: ubuntu-latest
needs: [check-before-build]
steps:
- uses: actions/checkout@v2
- name: Get scorecard image tag
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: test-CI
name: test-CI-on-PR-command

concurrency:
group: ci-${{ github.run_id }}
Expand Down
184 changes: 184 additions & 0 deletions .github/workflows/test-ci-push.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: test-CI-on-push

concurrency:
group: ci-${{ github.run_id }}
cancel-in-progress: true

on:
push:
branches:
- main
- v[0-9]+
- v[0-9]+.[0-9]+
- cryostat-v[0-9]+.[0-9]+

env:
CI_USER: cryostat+bot
CI_REGISTRY: quay.io/cryostat
CI_OPERATOR_IMG: quay.io/cryostat/cryostat-operator
CI_BUNDLE_IMG: quay.io/cryostat/cryostat-operator-bundle
CI_SCORECARD_IMG: quay.io/cryostat/cryostat-operator-scorecard
CI_PLATFORMS: linux/amd64,linux/arm64
REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
REF: ${{ github.event.pull_request.head.ref }}
OPENSUSE_UNOFFICIAL_LIBCONTAINERS_KEY_URL: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/xUbuntu_22.04/Release.key"
OPENSUSE_UNOFFICIAL_LIBCONTAINERS_SOURCE_URL: "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/xUbuntu_22.04"

jobs:
check-before-test:
runs-on: ubuntu-latest
permissions:
pull-requests: write
if: github.repository_owner == 'cryostatio'
steps:
- name: Fail if needs-triage label applied
if: ${{ contains(github.event.issue.labels.*.name, 'needs-triage') }}
run: exit 1
- name: Fail if safe-to-test label is not applied
if: ${{ !contains(github.event.issue.labels.*.name, 'safe-to-test') }}
run: exit 1

get-test-image-tag:
runs-on: ubuntu-latest
needs: [check-before-test]
outputs:
tag: ${{ steps.compute-tag.outputs.tag }}
steps:
- name: Compute test image tag
id: compute-tag
run: |
prefix="ci"
if [ -n "${{ github.event.number }}" ]; then
prefix="pr-${{ github.event.number }}"
fi
echo "tag=${prefix}-$GITHUB_SHA" >> $GITHUB_OUTPUT

clean-up-test-images:
runs-on: ubuntu-latest
needs: [get-test-image-tag, scorecard-test]
strategy:
matrix:
image: [cryostat-operator, cryostat-operator-bundle, cryostat-operator-scorecard]
steps:
- uses: r26d/[email protected]
with:
owner: ${{ github.repository_owner }}
name: ${{ matrix.image }}
token: ${{ secrets.GITHUB_TOKEN }}
ignore-missing-package: true
tag-regex: ${{ needs.get-test-image-tag.outputs.tag }}
tagged-keep-latest: 0

controller-test:
runs-on: ubuntu-latest
needs: [check-before-test]
steps:
- uses: actions/checkout@v2
with:
repository: ${{ env.REPOSITORY }}
ref: ${{ env.REF }}
- uses: actions/setup-go@v2
with:
go-version: '1.20.*'
- uses: actions/cache@v2
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run controller tests
run: make test-envtest

scorecard-test:
runs-on: ubuntu-latest
needs: [get-test-image-tag]
permissions:
packages: write
env:
TAG: ${{ needs.get-test-image-tag.outputs.tag }}
steps:
- uses: actions/checkout@v2
with:
repository: ${{ env.REPOSITORY }}
ref: ${{ env.REF }}
- uses: jpkrohling/[email protected]
with:
operator-sdk-version: v1.28.0
- name: Install podman v4
run: |
echo "deb $OPENSUSE_UNOFFICIAL_LIBCONTAINERS_SOURCE_URL/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:unstable.list
curl -fsSL $OPENSUSE_UNOFFICIAL_LIBCONTAINERS_KEY_URL | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_kubic_libcontainers_unstable.gpg
sudo apt update
sudo apt install podman
- name: Build scorecard image for test
run: |
CUSTOM_SCORECARD_IMG=ghcr.io/${{ github.repository_owner }}/cryostat-operator-scorecard:${{ env.TAG }} \
PLATFORMS=linux/amd64 \
MANIFEST_PUSH=false \
make scorecard-build
- name: Push scorecard image to ghcr.io for test
id: push-scorecard-to-ghcr
uses: redhat-actions/push-to-registry@v2
with:
image: cryostat-operator-scorecard
tags: ${{ env.TAG }}
registry: ghcr.io/${{ github.repository_owner }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build operator image for test
run: |
OPERATOR_IMG=ghcr.io/${{ github.repository_owner }}/cryostat-operator:${{ env.TAG }} \
SKIP_TESTS=true \
make oci-build
- name: Push operator image to ghcr.io for test
id: push-operator-to-ghcr
uses: redhat-actions/push-to-registry@v2
with:
image: cryostat-operator
tags: ${{ env.TAG }}
registry: ghcr.io/${{ github.repository_owner }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build bundle image for test
run: |
yq -i '.spec.template.spec.imagePullSecrets = [{"name": "registry-key"}]' config/manager/manager.yaml
OPERATOR_IMG=${{ steps.push-operator-to-ghcr.outputs.registry-path }} \
BUNDLE_IMG=ghcr.io/${{ github.repository_owner }}/cryostat-operator-bundle:${{ env.TAG }} \
make bundle bundle-build
- name: Push bundle image to ghcr.io for test
id: push-bundle-to-ghcr
uses: redhat-actions/push-to-registry@v2
with:
image: cryostat-operator-bundle
tags: ${{ env.TAG }}
registry: ghcr.io/${{ github.repository_owner }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Kind cluster
run: |
kind create cluster --config=".github/kind-config.yaml" -n ci-${{ github.run_id }}
# Enabling Ingress
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
kubectl rollout status -w deployment/ingress-nginx-controller -n ingress-nginx --timeout 5m
- name: Install Operator Lifecycle Manager
run: curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.24.0/install.sh | bash -s v0.24.0
- name: Install Cert Manager
run: make cert_manager
- uses: redhat-actions/podman-login@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
auth_file_path: $HOME/.docker/config.json
- name: Run scorecard tests
run: |
SCORECARD_REGISTRY_SERVER="ghcr.io" \
SCORECARD_REGISTRY_USERNAME="${{ github.repository_owner }}" \
SCORECARD_REGISTRY_PASSWORD="${{ secrets.GITHUB_TOKEN }}" \
BUNDLE_IMG="${{ steps.push-bundle-to-ghcr.outputs.registry-path }}" \
make test-scorecard
- name: Clean up Kind cluster
run: kind delete cluster -n ci-${{ github.run_id }}

0 comments on commit 4f92b08

Please sign in to comment.