-
Notifications
You must be signed in to change notification settings - Fork 29
144 lines (144 loc) · 6.73 KB
/
test-wildfly-cloud-fp.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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}" =~ ^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
- 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 -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.x'
- 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=jdk11-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/wildfly-builder-image
cekit test --image=wildfly/wildfly-s2i:dev-${{ env.CLOUD_FP_VERSION }} behave
popd
working-directory: wildfly-cloud-galleon-pack
- name: List containers
if: failure()
run: |
echo === RUNNING CONTAINERS ===
docker container ls
echo === RUNNING PROCESSES ===
top -b -n1
echo === DISK USAGE ===
df -h