@@ -64,29 +64,28 @@ jobs:
6464# update-binfmts --display qemu-aarch64
6565# update-binfmts --display qemu-arm
6666 - name : " Build Armbian"
67- if : ${{ inputs.board_id != 'raspberrypi' }}
6867 id : build-armbian
6968 continue-on-error : true
7069 run : |
7170 set -ex
7271 export IMG="NextcloudPi_${{ inputs.board_name }}_${VERSION//\//_}.img"
7372 [[ "${{ github.ref_protected }}" == true ]] || export DBG=x
74-
73+
7574 ./build/build-SD-armbian.sh "${{ inputs.board_id }}" "${{ inputs.board_name }}"
76-
75+
7776 artifacts=("armbian/output/images/Armbian"*.img)
7877 mkdir -p output
7978 mv "${artifacts[0]}" "output/$IMG"
8079 echo "artifact_file=${IMG}" >> $GITHUB_OUTPUT
8180 echo "ARTIFACT_FILE=${IMG}" >> $GITHUB_ENV
8281 - name : " Build Armbian (2nd attempt)"
83- if : ${{ inputs.board_id != 'raspberrypi' && steps.build-armbian.outcome == 'failure' }}
82+ if : ${{ steps.build-armbian.outcome == 'failure' }}
8483 id : build-armbian-2nd
8584 run : |
8685 set -ex
8786 echo -e "${LOG_CICD} Cleanup armbian build leftovers..."
8887 sudo rm -rf armbian/ tmp/ output/
89-
88+
9089 export IMG="NextcloudPi_${{ inputs.board_name }}_${VERSION//\//_}.img"
9190 [[ "${{ github.ref_protected }}" == true ]] || export DBG=x
9291
@@ -98,34 +97,11 @@ jobs:
9897 echo "artifact_file=${IMG}" >> $GITHUB_OUTPUT
9998 echo "ARTIFACT_FILE=${IMG}" >> $GITHUB_ENV
10099 - name : " Upload Armbian logs"
101- if : ${{ inputs.board_id != 'raspberrypi' && failure() }}
100+ if : ${{ failure() }}
102101 uses : actions/upload-artifact@v3
103102 with :
104103 name : ${{ github.run_id }}-${{ inputs.board_id }}-logs
105104 path : armbian/output
106- - name : Build RPI SD Image
107- if : ${{ inputs.board_id == 'raspberrypi' }}
108- id : build-rpi
109- run : |
110- set -ex
111- echo -e "${LOG_CICD} Protected? ${{ github.ref_protected }}"
112- export IMG="NextcloudPi_${{ inputs.board_name }}_${VERSION//\//_}.img"
113- [[ "${{ github.ref_protected }}" == true ]] || export DBG=x
114- wget -q https://github.com/multiarch/qemu-user-static/releases/latest/download/qemu-aarch64-static -O ./qemu-aarch64-static
115- ./build/build-SD-rpi.sh
116- mkdir -p output
117- mv "tmp/$IMG" ./output/
118-
119- for i in {1..10}
120- do
121- sudo losetup | grep "${IMG}" || break;
122- [[ "$i" -lt 10 ]] || { echo -e "${LOG_CICD} Timeout while waiting for image to unmount"; exit 1; }
123- sleep 6
124- echo -e "${LOG_CICD} Retrying ($i out of 10)"
125- done
126-
127- echo "artifact_file=${IMG}" >> $GITHUB_OUTPUT
128- echo "ARTIFACT_FILE=${IMG}" >> $GITHUB_ENV
129105 - name : upload image to artifact store
130106 uses : actions/upload-artifact@v3
131107 with :
@@ -135,7 +111,7 @@ jobs:
135111
136112 test :
137113 needs : build
138- runs-on : ubuntu-20 .04
114+ runs-on : ubuntu-22 .04
139115 env :
140116 VERSION : " ${{ inputs.git_ref }}"
141117 ARTIFACT_ID : ${{ needs.build.outputs.artifact_name }}
@@ -151,18 +127,9 @@ jobs:
151127 steps :
152128 - name : Set up QEMU
153129 uses : docker/setup-qemu-action@v3
154- # - name: Set up QEMU
155- # run: |
156- # sudo apt-get update
157- # sudo apt-get install -y binfmt-support
158- # docker run --rm --privileged tonistiigi/binfmt:latest --install all
159- # docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes
160- # sudo systemctl disable apparmor
161- # sudo mkdir -p /etc/binfmt
162- # for conf in qemu-{aarch64,arm}-static.conf
163- # do
164- # sed 's/:F$/:OC/' /usr/lib/binfmt.d/$conf | sudo tee /etc/binfmt/$conf
165- # done
130+ - name : Disable apparmor
131+ run : |
132+ sudo systemctl disable apparmor
166133 - name : Checkout code
167134 uses : actions/checkout@v3
168135 with :
@@ -191,9 +158,9 @@ jobs:
191158 echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/redis-server.service.d/ncp.conf
192159 echo 'PrivateUsers=false' | sudo tee -a raspbian_root/etc/systemd/system/redis-server.service.d/ncp.conf
193160
194- sudo mkdir -p raspbian_root/etc/systemd/system/php8.1 -fpm.service.d
195- echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/php8.1 -fpm.service.d/ncp.conf
196- echo 'ExecStartPre=mkdir -p /var/run/php' | sudo tee -a raspbian_root/etc/systemd/system/php8.1 -fpm.service.d/ncp.conf
161+ sudo mkdir -p raspbian_root/etc/systemd/system/php8.3 -fpm.service.d
162+ echo '[Service]' | sudo tee raspbian_root/etc/systemd/system/php8.3 -fpm.service.d/ncp.conf
163+ echo 'ExecStartPre=mkdir -p /var/run/php' | sudo tee -a raspbian_root/etc/systemd/system/php8.3 -fpm.service.d/ncp.conf
197164 - name : Test image
198165 id : test
199166 run : |
@@ -208,13 +175,13 @@ jobs:
208175 sudo systemd-nspawn --boot -D ./raspbian_root/ -M ncp --hostname=nextcloudpi |& awk "{ print \"${LOG_GUEST} \" \$0 }" &
209176 sleep 60
210177
211- CONTAINER_CMD=(sudo systemd-run --machine=ncp -P --wait)
178+ CONTAINER_CMD=(sudo systemd-run --machine=ncp -P --wait)
212179
213180 success=false
214181 for attempt in {1..30}
215182 do
216183 echo -e "${LOG_CICD} == Wait until container network is available (attempt $attempt/30) =="
217- ip="$("${CONTAINER_CMD[@]}" bash -c '. /usr/local/etc/library.sh > /dev/null; get_ip')"
184+ ip="$("${CONTAINER_CMD[@]}" bash -c '. /usr/local/etc/library.sh > /dev/null; get_ip')"
218185 [[ -n "$ip" ]] && curl -k "https://$ip/activate/" > /dev/null || { sleep 6; continue; }
219186 success=true
220187 break
@@ -249,12 +216,14 @@ jobs:
249216 done
250217
251218 [[ "$success" == "true" ]] || {
252- echo -e "${LOG_CICD} Timeout reached."
253- "${CONTAINER_CMD[@]}" -q systemctl status mysql |& awk "{ print \"${LOG_DIAG} \" \$0 }"
254- "${CONTAINER_CMD[@]}" -q systemctl status redis |& awk "{ print \"${LOG_DIAG} \" \$0 }"
255- "${CONTAINER_CMD[@]}" -q systemctl status 'php*-fpm' |& awk "{ print \"${LOG_DIAG} \" \$0 }"
256- "${CONTAINER_CMD[@]}" -q systemctl status apache2 |& awk "{ print \"${LOG_DIAG} \" \$0 }"
257- "${CONTAINER_CMD[@]}" -q ncp-diag |& awk "{ print \"${LOG_DIAG} \" \$0 }"
219+ echo -e "${LOG_CICD} ERR: Timeout reached."
220+ "${CONTAINER_CMD[@]}" -q systemctl status mysql |& awk "{ print \"${LOG_DIAG} \" \$0 }" ||:
221+ "${CONTAINER_CMD[@]}" -q systemctl status redis-server |& awk "{ print \"${LOG_DIAG} \" \$0 }" ||:
222+ sudo journalctl --file ./raspbian_root/var/log/journal/"$(sudo cat ./raspbian_root/etc/machine-id)"/system.journal --no-pager -eu redis-server ||:
223+ "${CONTAINER_CMD[@]}" -q journalctl --no-pager -eu redis-server
224+ "${CONTAINER_CMD[@]}" -q systemctl status 'php*-fpm' |& awk "{ print \"${LOG_DIAG} \" \$0 }" ||:
225+ "${CONTAINER_CMD[@]}" -q systemctl status apache2 |& awk "{ print \"${LOG_DIAG} \" \$0 }" ||:
226+ "${CONTAINER_CMD[@]}" -q ncp-diag |& awk "{ print \"${LOG_DIAG} \" \$0 }" ||:
258227 exit 1
259228 }
260229
@@ -310,15 +279,24 @@ jobs:
310279 python tests/nextcloud_tests.py --no-gui "$ip" 443 4443 |& awk "{ print \"${LOG_TEST} \" \$0 }"
311280 [[ ${PIPESTATUS[0]} -eq 0 ]] || {
312281 echo -e "${LOG_CICD} Nextcloud test failed!"
282+ echo -e "${LOG_DIAG} /etc/os-release:"
283+ "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /etc/os-release'
284+ echo -e "${LOG_DIAG} /usr/local/etc/ncp.cfg:"
285+ "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'cat /usr/local/etc/ncp.cfg'
286+ cat ./raspbian_root/usr/local/etc/ncp.cfg
287+ echo -e "${LOG_DIAG} /home/ncp-app-bridge config ncp"
288+ sudo ls -l ./raspbian_root/home/www/ncp-app-bridge.sh
289+ "${CONTAINER_CMD[@]}" --pipe --uid=33 ncp /bin/bash -c 'sudo /home/www/ncp-app-bridge.sh config ncp'
313290 echo -e "{$LOG_DIAG} Geckodriver logs:"
314291 tail -n 20 geckodriver.log >&2 |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
315292 echo -e "${LOG_CICD} ================"
316293 echo -e "${LOG_DIAG} ncp.log: "
317- "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
294+ "${CONTAINER_CMD[@]}" --pipe ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
318295 echo "================"
319296 echo "${LOG_DIAG} Nextcloud log: "
320- "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
321- "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
297+ "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
298+ "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
299+ sudo cat ./raspbian_root/opt/ncdata/data/nextcloud.log |& awk "{ print \"${LOG_DIAG} \" \$0 }"
322300 sleep 12
323301 continue
324302 }
0 commit comments