UBI9: JBoss user handling, logging dependency name changes #129
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
name: WildFly CEKit OpenShift Modules - Build WildFly cloud galleon feature-pack and Test WildFly s2i image if the changes introduced in the PR impact it. | |
on: | |
pull_request: | |
branches: [ main ] | |
env: | |
LANG: en_US.UTF-8 | |
S2I_URI: https://github.com/openshift/source-to-image/releases/download/v1.3.1/source-to-image-v1.3.1-a5a77147-linux-amd64.tar.gz | |
FORK_REPO: ${{ github.event.pull_request.head.repo.full_name }} | |
jobs: | |
wfci: | |
name: WildFly-s2i Build and Test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
steps: | |
- id: files | |
uses: jitterbit/get-changed-files@v1 | |
- run: | | |
for changed_file in ${{ steps.files.outputs.all }}; do | |
if [[ "${changed_file}" =~ ^\.github/workflows/test-wildfly-cloud-fp.yml ]] || ( [[ ! "${changed_file}" =~ ^jboss/container/wildfly/s2i/2.0/.* ]] && [[ ! "${changed_file}" =~ ^jboss/container/wildfly/run/.* ]] && [[ "${changed_file}" =~ ^jboss/container/wildfly/.* ]] ); then | |
echo "Change detected in ${changed_file}, will build cloud feature-pack and test images." | |
echo "IMPACT_CLOUD_FP=true" >> "$GITHUB_ENV" | |
exit 0 | |
fi | |
done | |
echo "No change detected that would impact the cloud feature-pack, skipping the job" | |
- name: Update hosts - linux | |
if: matrix.os == 'ubuntu-latest' && env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
cat /etc/hosts | |
sudo bash -c "echo '127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4' > /etc/hosts" | |
sudo bash -c "echo '::1 localhost localhost.localdomain localhost6 localhost6.localdomain6' >> /etc/hosts" | |
sudo sysctl -w fs.file-max=2097152 | |
- uses: actions/checkout@v2 | |
if: env.IMPACT_CLOUD_FP == 'true' | |
with: | |
path: wildfly-cekit-modules | |
- uses: actions/checkout@v2 | |
if: env.IMPACT_CLOUD_FP == 'true' | |
with: | |
repository: wildfly/wildfly-s2i | |
path: wildfly-s2i | |
- uses: actions/checkout@v2 | |
if: env.IMPACT_CLOUD_FP == 'true' | |
with: | |
repository: wildfly-extras/wildfly-cloud-galleon-pack | |
ref: main | |
path: wildfly-cloud-galleon-pack | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v3 | |
if: env.IMPACT_CLOUD_FP == 'true' | |
with: | |
java-version: 21 | |
distribution: 'temurin' | |
cache: 'maven' | |
cache-dependency-path: wildfly-cloud-galleon-pack/pom.xml | |
- uses: n1hility/cancel-previous-runs@v2 | |
if: env.IMPACT_CLOUD_FP == 'true' | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build cloud FP | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
echo Using "${FORK_REPO%%/*}" and "${GITHUB_HEAD_REF##*/}" to build cloud feature-pack | |
mvn clean install --batch-mode --no-transfer-progress -DskipTests -Dwildfly.cekit.modules.fork="${FORK_REPO%%/*}" -Dwildfly.cekit.modules.tag="${GITHUB_HEAD_REF##*/}" | |
cloudVersion=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) | |
echo "CLOUD_FP_VERSION=${cloudVersion}" >> $GITHUB_ENV | |
mkdir -p custom-cloud-image | |
mkdir -p custom-cloud-image/docker/repository/org/wildfly/cloud/wildfly-cloud-galleon-pack/$cloudVersion | |
mkdir -p custom-cloud-image/docker/repository/org/wildfly/cloud/wildfly-preview-cloud-galleon-pack/$cloudVersion | |
cp wildfly-cloud-galleon-pack/target/wildfly-cloud-galleon-pack-$cloudVersion.zip custom-cloud-image/docker/repository/org/wildfly/cloud/wildfly-cloud-galleon-pack/$cloudVersion | |
cp wildfly-preview-cloud-galleon-pack/target/wildfly-preview-cloud-galleon-pack-$cloudVersion.zip custom-cloud-image/docker/repository/org/wildfly/cloud/wildfly-preview-cloud-galleon-pack/$cloudVersion | |
docker_file=custom-cloud-image/docker/Dockerfile | |
cat <<EOF > $docker_file | |
FROM wildfly/wildfly-s2i:latest | |
RUN mkdir -p /tmp/artifacts/m2 | |
COPY --chown=jboss:root repository /tmp/artifacts/m2 | |
EOF | |
working-directory: wildfly-cloud-galleon-pack | |
- name: Verify latest ubi8-minimal | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
docker pull registry.access.redhat.com/ubi8/ubi-minimal | |
docker image ls | grep ubi8 | |
- name: Setup required system packages | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
sudo apt-get update | |
sudo apt-get install krb5-multidev libkrb5-dev | |
- name: Setup Python 3.x | |
if: env.IMPACT_CLOUD_FP == 'true' | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.11.5' | |
- name: Setup virtualenv and install cekit and required packages | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
python --version | |
sudo pip install virtualenv | |
mkdir ~/cekit | |
python3 -m venv ~/cekit | |
. ~/cekit/bin/activate | |
pip install cekit docker docker-squash odcs behave lxml packaging | |
- name: install s2i binary | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
echo ===== Installing s2i from ${{ env.S2I_URL }} ===== | |
mkdir /tmp/s2i/ && cd /tmp/s2i/ | |
wget ${{ env.S2I_URI }} | |
tar xvf source-to-image*.gz | |
sudo mv s2i /usr/bin | |
which s2i | |
s2i version | |
- name: Build image | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
. ~/cekit/bin/activate | |
pushd wildfly-builder-image | |
cekit build --overrides=jdk21-overrides.yaml docker | |
popd | |
docker image ls | |
working-directory: wildfly-s2i | |
- name: Build and test extended image containing custom WildFly cloud feature-pack | |
if: env.IMPACT_CLOUD_FP == 'true' | |
run: | | |
docker build -t wildfly/wildfly-s2i:dev-${{ env.CLOUD_FP_VERSION }} ./custom-cloud-image/docker | |
cp -r ../wildfly-s2i/wildfly-builder-image ./custom-cloud-image | |
cp -r ../wildfly-s2i/wildfly-modules ./custom-cloud-image | |
comment="### PLACEHOLDER FOR CLOUD CUSTOM TESTING ###" | |
replacement="\|MAVEN_ARGS_APPEND\|-Dversion.wildfly.cloud.galleon.pack=${{ env.CLOUD_FP_VERSION }}\|" | |
legacyReplacement="org.wildfly.cloud:wildfly-cloud-galleon-pack:${{ env.CLOUD_FP_VERSION }}\|" | |
legacyPlaceHolder="org.wildfly.cloud:wildfly-cloud-galleon-pack:.*\|" | |
for feature in custom-cloud-image/wildfly-builder-image/tests/features/*.feature; do | |
sed -i "s|$comment|$replacement|" "$feature" | |
sed -i "s|$legacyPlaceHolder|$legacyReplacement|" "$feature" | |
done | |
. ~/cekit/bin/activate | |
pushd custom-cloud-image/ | |
mkdir -p all-tests | |
mv wildfly-builder-image/tests/features/*.feature all-tests | |
for feature in all-tests/*.feature; do | |
cp $feature wildfly-builder-image/tests/features/ | |
pushd wildfly-builder-image | |
fileName=$(basename ${feature}) | |
echo "Testing feature file $fileName" | |
cekit test --image=wildfly/wildfly-s2i:dev-${{ env.CLOUD_FP_VERSION }} behave > test-logs-$fileName.txt 2>&1 | |
rm test-logs-$fileName.txt | |
docker system prune -f | |
popd | |
rm wildfly-builder-image/tests/features/*.feature | |
done | |
popd | |
working-directory: wildfly-cloud-galleon-pack | |
- name: Advertise Failing Behave Scenarios | |
if: failure() | |
run: | | |
pushd wildfly-builder-image | |
logFile=$(find . -type f -iname "test-logs-*.txt") | |
if [ -f "${logFile}" ]; then | |
# Remove tar noise | |
grep -v "tar.go:" ${logFile} > tmpFile && mv tmpFile ${logFile} | |
# Display failing scenario | |
grep -A10000 "Failing scenarios" ${logFile} | |
else | |
echo "No failure in behave tests" | |
fi | |
popd | |
- name: List containers | |
if: failure() | |
run: | | |
echo === RUNNING CONTAINERS === | |
docker container ls | |
echo === RUNNING PROCESSES === | |
top -b -n1 | |
echo === DISK USAGE === | |
df -h | |
- name: Upload Test Reports on Failure | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: wildfly-s2i-test-logs | |
path: | | |
wildfly-builder-image/test-logs-*.txt | |
/tmp/*.wfs2i.log |