-
Notifications
You must be signed in to change notification settings - Fork 98
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[issue-1343] - Improve GitHub workflow for CI checks
- Loading branch information
Showing
2 changed files
with
89 additions
and
121 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,28 +8,53 @@ on: | |
branches: | ||
- main | ||
paths-ignore: | ||
- 'doc/**' | ||
- '.circleci/**' | ||
env: | ||
DOCKER_HOST: 'unix:///var/run/docker.sock' | ||
- 'docs/**' | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-20.04 | ||
docker-it: | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 90 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
java: ['11'] | ||
steps: | ||
- name: Checkout arquillian-cube | ||
uses: actions/checkout@v4 | ||
- name: Cache .m2 registry | ||
uses: actions/cache@v4 | ||
with: | ||
path: ~/.m2/repository | ||
key: docker-it-cache-e2e-${{ github.sha }}-${{ github.run_id }} | ||
- name: Set up JDK ${{ matrix.java }} | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: ${{ matrix.java }} | ||
distribution: 'temurin' | ||
- name: Maven pre-fetch dependencies ${{ matrix.java }} | ||
run: | | ||
./mvnw clean install -q -U -DskipTests | ||
- name: Build and run integration tests for Docker target (${{ matrix.java }}) | ||
run: | | ||
./mvnw verify -B -Dfailsafe.groups=org.arquillian.cube.docker.impl.requirement.RequiresDocker -Dcontainerless.skip.tests=true | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: docker-it-surefire-reports-jdk-${{ matrix.java }} | ||
path: | | ||
'${{ github.workspace }}/**/surefire-reports/*.*' | ||
'${{ github.workspace }}/**/*.log' | ||
k8s-it: | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 90 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
java: ['11'] | ||
target: ['docker', 'kubernetes', 'openshift'] | ||
env: | ||
# failsafe.groups configuration depends on the env setup. | ||
FAILSAFE_GROUPS: '' | ||
steps: | ||
- name: Checkout arquillian-cube | ||
uses: actions/checkout@v4 | ||
- name: Setup Minikube | ||
if: ${{ matrix.target == 'kubernetes' }} | ||
uses: manusa/[email protected] | ||
with: | ||
driver: docker | ||
|
@@ -39,35 +64,69 @@ jobs: | |
github token: ${{ secrets.GITHUB_TOKEN }} | ||
start args: "--memory='4gb' --cpus='2'" | ||
- name: Enable minikube registry | ||
if: ${{ matrix.target == 'kubernetes' }} | ||
run: | | ||
minikube addons enable registry | ||
kubectl port-forward --namespace kube-system service/registry 5000:80 & | ||
- name: Cache .m2 registry | ||
uses: actions/cache@v4 | ||
with: | ||
path: ~/.m2/repository | ||
key: k8s-it-cache-e2e-${{ github.sha }}-${{ github.run_id }} | ||
- name: Set up JDK ${{ matrix.java }} | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: ${{ matrix.java }} | ||
distribution: 'temurin' | ||
- name: Maven pre-fetch dependencies ${{ matrix.java }} | ||
run: | | ||
./mvnw clean install -q -U -DskipTests | ||
- name: Build and run integration tests for Kubernetes target (${{ matrix.java }}) | ||
run: | | ||
./mvnw verify -B -Dfailsafe.groups=org.arquillian.cube.kubernetes.impl.requirement.RequiresKubernetes -Dcontainerless.skip.tests=true | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: k8s-it-surefire-reports-jdk-${{ matrix.java }} | ||
path: | | ||
'${{ github.workspace }}/**/surefire-reports/*.*' | ||
'${{ github.workspace }}/**/*.log' | ||
- name: Stop minikube | ||
run: | | ||
minikube stop | ||
openshift-it: | ||
runs-on: ubuntu-20.04 | ||
timeout-minutes: 90 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
java: ['11'] | ||
steps: | ||
- name: Checkout arquillian-cube | ||
uses: actions/checkout@v4 | ||
- name: Setup OpenShift | ||
if: ${{ matrix.target == 'openshift' }} | ||
uses: manusa/[email protected] | ||
with: | ||
oc version: 'v3.10.0' | ||
github token: ${{ secrets.GITHUB_TOKEN }} | ||
# - name: Setup OLM on OpenShift v3.z | ||
# if: ${{ matrix.target == 'openshift' }} | ||
# run: | | ||
# set -x | ||
# # operator-sdk must be installed manually on OpenShift v3 | ||
# oc version | ||
# oc create -f https://github.com/operator-framework/operator-lifecycle-manager/tree/master/deploy/upstream/manifests/0.6.0/ | ||
# # OR... | ||
# export ARCH=$(case $(uname -m) in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo -n $(uname -m) ;; esac) | ||
# export OS=$(uname | awk '{print tolower($0)}') | ||
# export OPERATOR_SDK_DL_URL=https://github.com/operator-framework/operator-sdk/releases/download/v1.37.0 | ||
# curl -LO ${OPERATOR_SDK_DL_URL}/operator-sdk_${OS}_${ARCH} | ||
# chmod +x operator-sdk_${OS}_${ARCH} && sudo mv operator-sdk_${OS}_${ARCH} /usr/local/bin/operator-sdk | ||
# operator-sdk olm install | ||
# TODO - there are issues when installing OLM on OpenShift v3, and we're aiming at having CI running on OpenShift 4, actually... | ||
# - name: Setup OLM on OpenShift v3.z | ||
# run: | | ||
# set -x | ||
# # operator-sdk must be installed manually on OpenShift v3 | ||
# oc version | ||
# oc create -f https://github.com/operator-framework/operator-lifecycle-manager/tree/master/deploy/upstream/manifests/0.6.0/ | ||
# # OR... | ||
# export ARCH=$(case $(uname -m) in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo -n $(uname -m) ;; esac) | ||
# export OS=$(uname | awk '{print tolower($0)}') | ||
# export OPERATOR_SDK_DL_URL=https://github.com/operator-framework/operator-sdk/releases/download/v1.37.0 | ||
# curl -LO ${OPERATOR_SDK_DL_URL}/operator-sdk_${OS}_${ARCH} | ||
# chmod +x operator-sdk_${OS}_${ARCH} && sudo mv operator-sdk_${OS}_${ARCH} /usr/local/bin/operator-sdk | ||
# operator-sdk olm install | ||
- name: Cache .m2 registry | ||
uses: actions/cache@v4 | ||
with: | ||
path: ~/.m2/repository | ||
key: cache-e2e-${{ github.sha }}-${{ github.run_id }} | ||
key: openshift-it-cache-e2e-${{ github.sha }}-${{ github.run_id }} | ||
- name: Set up JDK ${{ matrix.java }} | ||
uses: actions/setup-java@v4 | ||
with: | ||
|
@@ -76,26 +135,12 @@ jobs: | |
- name: Maven pre-fetch dependencies ${{ matrix.java }} | ||
run: | | ||
./mvnw clean install -q -U -DskipTests | ||
- name: Build and run integration tests for Docker target (${{ matrix.java }}) | ||
if: ${{ matrix.target == 'docker' }} | ||
run: | | ||
./mvnw verify -Dfailsafe.groups=org.arquillian.cube.docker.impl.requirement.RequiresDocker -Dcontainerless.skip.tests=true | ||
- name: Build and run integration tests for Kubernetes target (${{ matrix.java }}) | ||
if: ${{ matrix.target == 'kubernetes' }} | ||
run: | | ||
./mvnw verify -Dfailsafe.groups=org.arquillian.cube.kubernetes.impl.requirement.RequiresKubernetes -Dcontainerless.skip.tests=true | ||
- name: Build and run integration tests for OpenShift target (${{ matrix.java }}) | ||
if: ${{ matrix.target == 'openshift' }} | ||
run: | | ||
./mvnw verify -pl openshift -amd -Dfailsafe.groups=org.arquillian.cube.openshift.impl.requirement.RequiresOpenshift -Dfailsafe.excludedGroups=org.arquillian.cube.openshift.impl.requirement.RequiresOpenshift4 -Dcontainerless.skip.tests=true | ||
./mvnw verify -B -Dfailsafe.groups=org.arquillian.cube.openshift.impl.requirement.RequiresOpenshift -Dfailsafe.excludedGroups=org.arquillian.cube.openshift.impl.requirement.RequiresOpenshift4 -Dcontainerless.skip.tests=true | ||
- uses: actions/upload-artifact@v4 | ||
if: failure() | ||
with: | ||
name: surefire-reports-jdk-${{ matrix.java }} | ||
name: openshift-it-surefire-reports-jdk-${{ matrix.java }} | ||
path: | | ||
'${{ github.workspace }}/**/surefire-reports/*.*' | ||
'${{ github.workspace }}/**/*.log' | ||
- name: Stop minikube | ||
if: ${{ matrix.target == 'kubernetes' }} | ||
run: | | ||
minikube stop |