Skip to content

Updated verbatim replacement script. #805

Updated verbatim replacement script.

Updated verbatim replacement script. #805

Workflow file for this run

# This is a definition file for GitHub CI.
name: GitHub CI
on:
push:
branches: [ master ]
workflow_dispatch:
jobs:
static_checks_debian_stable_x86_64:
runs-on: ubuntu-latest
container:
image: debian:stable
timeout-minutes: 60
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R . /dcma
- name: install_dependencies
run: |
export DEBIAN_FRONTEND="noninteractive"
apt-get update --yes
apt-get install --yes --no-install-recommends coreutils binutils findutils grep sed
- name: check_for_common_nonthreadsafe_nonreentrant_functions
run: |
./scripts/perform_static_checks.sh
build_cross_mxe_x86_64:
runs-on: ubuntu-latest
container:
image: "hdclark/dcma_build_base_mxe:latest"
timeout-minutes: 120
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R ./docker/builders/mxe /scratch
cp -R . /dcma
./scripts/enable_swapfile.sh
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
./docker/builders/mxe/implementation_mxe.sh
rsync -avP /out/ ./Windows/
strip ./Windows/usr/bin/*exe
strip ./Windows/usr/lib/*a
( cd ./Windows/usr/bin/ && mv opengl32.dll opengl32_disabled.dll ) || true
git config --global --add safe.directory '*' || true
- name: test
run: |
export DEBIAN_FRONTEND='noninteractive'
sed -i -e 's@stable@bullseye@g' /etc/apt/sources.list
apt-get update --yes
apt-get install --yes --no-install-recommends git ca-certificates rsync mesa-utils
dpkg --add-architecture i386
apt-get update --yes
apt-get install --yes wine32 wine64
mkdir -pv wine-conf-dir
chown "$(id -u)":"$(id -g)" wine-conf-dir
export WINEPREFIX="$(pwd)/wine-conf-dir/.wine-prefix"
find ./Windows/usr/bin/ -type f -exec chmod 777 '{}' \;
rsync -a ./Windows/ /opt/
echo '#!/bin/bash' > /usr/bin/dicomautomaton_dispatcher
echo 'exec wine /opt/usr/bin/dicomautomaton_dispatcher.exe "$@"' >> /usr/bin/dicomautomaton_dispatcher
chmod 777 /usr/bin/dicomautomaton_dispatcher
dicomautomaton_dispatcher -h
./integration_tests/Run.sh -v
- name: create_zip
run: |
export short_sha="$(git rev-parse --short HEAD || printf 'unknown')"
export DEBIAN_FRONTEND="noninteractive"
apt-get update --yes
apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf zip
rm -rf ci_artifacts
mkdir -pv ci_artifacts
( cd ./Windows/ && zip -r ../ci_artifacts/DICOMautomaton-latest-x86_64.zip . )
cp ci_artifacts/DICOMautomaton-latest-x86_64.zip "ci_artifacts/DICOMautomaton-${short_sha}-x86_64.zip"
find ci_artifacts/ -iname '*.zip' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-exes"
if-no-files-found: error
path: |
ci_artifacts/DICOMautomaton-latest-x86_64.zip
ci_artifacts/DICOMautomaton-latest-x86_64.zip.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done
build_debian_buster_x86_64:
runs-on: ubuntu-latest
container:
image: debian:buster
timeout-minutes: 120
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R ./docker/builders/ci /scratch
cp -R . /dcma
./scripts/enable_swapfile.sh
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
./docker/builders/ci/implementation_ci_debian_buster.sh
git config --global --add safe.directory '*' || true
- name: test
run: |
./integration_tests/Run.sh -v
- name: create_appimage
run: |
./scripts/extract_system_appimage.sh
export DEBIAN_FRONTEND="noninteractive"
apt-get update --yes
apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf
rm -rf ci_artifacts
mkdir -pv ci_artifacts
cp DICOMautomaton*AppImage DICOMautomaton-latest-x86_64.AppImage
mv DICOMautomaton*AppImage ci_artifacts/
find ci_artifacts/ -iname '*AppImage' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-AppImage"
if-no-files-found: error
path: |
ci_artifacts/DICOMautomaton-latest-x86_64.AppImage
ci_artifacts/DICOMautomaton-latest-x86_64.AppImage.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done
build_debian_buster_aarch64:
runs-on: ubuntu-latest
container:
image: debian:buster
timeout-minutes: 360
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R ./docker/builders/ci /scratch
cp -R . /dcma
./scripts/enable_swapfile.sh
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
./docker/build_bases/debian_buster/create_foreign_chroot.sh -d /debian_buster_aarch64 -s /run_in_chroot.sh -a arm64
cp -R /scratch /debian_buster_aarch64/scratch
cp -R /dcma /debian_buster_aarch64/dcma
/run_in_chroot.sh 'cd /dcma && ./docker/builders/ci/implementation_ci_debian_buster.sh'
- name: test
run: |
/run_in_chroot.sh 'cd /dcma && ./integration_tests/Run.sh -v'
- name: create_appimage
run: |
/run_in_chroot.sh 'cd /dcma && ./scripts/extract_system_appimage.sh'
export DEBIAN_FRONTEND="noninteractive"
apt-get update --yes
apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf
rm -rf ci_artifacts
mkdir -pv ci_artifacts
cp /debian_buster_aarch64/dcma/DICOMautomaton*AppImage ci_artifacts/DICOMautomaton-latest-aarch64.AppImage
mv /debian_buster_aarch64/dcma/DICOMautomaton*AppImage ci_artifacts/
find ci_artifacts/ -iname '*AppImage' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-AppImage"
if-no-files-found: error
path: |
ci_artifacts/DICOMautomaton-latest-aarch64.AppImage
ci_artifacts/DICOMautomaton-latest-aarch64.AppImage.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done
build_debian_buster_armhf:
runs-on: ubuntu-latest
container:
image: debian:buster
timeout-minutes: 360
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R ./docker/builders/ci /scratch
cp -R . /dcma
./scripts/enable_swapfile.sh
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
./docker/build_bases/debian_buster/create_foreign_chroot.sh -d /debian_buster_armhf -s /run_in_chroot.sh -a armhf
cp -R /scratch /debian_buster_armhf/scratch
cp -R /dcma /debian_buster_armhf/dcma
/run_in_chroot.sh 'cd /dcma && ./docker/builders/ci/implementation_ci_debian_buster.sh'
- name: test
run: |
/run_in_chroot.sh 'cd /dcma && ./integration_tests/Run.sh -v'
- name: create_appimage
run: |
/run_in_chroot.sh 'cd /dcma && ./scripts/extract_system_appimage.sh'
export DEBIAN_FRONTEND="noninteractive"
apt-get update --yes
apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf
rm -rf ci_artifacts
mkdir -pv ci_artifacts
cp /debian_buster_armhf/dcma/DICOMautomaton*AppImage ci_artifacts/DICOMautomaton-latest-armhf.AppImage
mv /debian_buster_armhf/dcma/DICOMautomaton*AppImage ci_artifacts/
find ci_artifacts/ -iname '*AppImage' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-AppImage"
if-no-files-found: error
path: |
ci_artifacts/DICOMautomaton-latest-armhf.AppImage
ci_artifacts/DICOMautomaton-latest-armhf.AppImage.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done
build_static_alpine_armv7:
runs-on: ubuntu-latest
timeout-minutes: 360
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R . ~/dcma
export DEBIAN_FRONTEND="noninteractive"
sudo apt-get update --yes
sudo apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf qemu binfmt-support qemu-user-static
sudo ./docker/build_bases/alpine/setup_host.sh
sudo ./scripts/enable_swapfile.sh
- name: authenticate_with_dockerhub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
mkdir -pv ~/binaries/{bin,include,lib,share}
cd ~/dcma/
sudo docker run \
--privileged \
--network=host \
--platform=linux/arm/v7 \
-v ~/dcma:/dcma:rw \
-v ~/binaries:/usr/local:rw \
-v ~/dcma/docker/build_bases/alpine:/build_base:rw \
-v ~/dcma/docker/builders/alpine:/scratch:rw \
'hdclark/dicomautomaton_alpine_armv7' \
'/dcma/docker/builders/alpine/implementation_alpine.sh'
sudo chown --recursive $USER:$USER ~/binaries
- name: test
run: |
find ~/binaries/ -type f -execdir chmod 777 '{}' \;
sudo cp ~/binaries/bin/dicomautomaton_dispatcher /usr/bin/
cd ~/dcma && ./integration_tests/Run.sh -v
- name: gather_files
run: |
mkdir -pv ~/ci_artifacts/
cp ~/binaries/bin/dicomautomaton_dispatcher ~/ci_artifacts/DICOMautomaton-${GITHUB_SHA::8}-armv7.static
cp ~/binaries/bin/dicomautomaton_dispatcher ~/ci_artifacts/DICOMautomaton-latest-armv7.static
find ~/ci_artifacts/ -type f -iname '*static' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-static"
if-no-files-found: error
path: |
~/ci_artifacts/DICOMautomaton-latest-armv7.static
~/ci_artifacts/DICOMautomaton-latest-armv7.static.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ~/ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done
build_static_alpine_x86_64:
runs-on: ubuntu-latest
timeout-minutes: 360
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R . ~/dcma
export DEBIAN_FRONTEND="noninteractive"
sudo apt-get update --yes
sudo apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf qemu binfmt-support qemu-user-static
sudo ./docker/build_bases/alpine/setup_host.sh
sudo ./scripts/enable_swapfile.sh
- name: authenticate_with_dockerhub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
mkdir -pv ~/binaries/{bin,include,lib,share}
cd ~/dcma/
sudo docker run \
--privileged \
--network=host \
--platform=linux/amd64 \
-v ~/dcma:/dcma:rw \
-v ~/binaries:/usr/local:rw \
-v ~/dcma/docker/build_bases/alpine:/build_base:rw \
-v ~/dcma/docker/builders/alpine:/scratch:rw \
'hdclark/dicomautomaton_alpine_x86_64' \
'/dcma/docker/builders/alpine/implementation_alpine.sh'
sudo chown --recursive $USER:$USER ~/binaries
- name: test
run: |
find ~/binaries/ -type f -execdir chmod 777 '{}' \;
sudo cp ~/binaries/bin/dicomautomaton_dispatcher /usr/bin/
cd ~/dcma && ./integration_tests/Run.sh -v
- name: gather_files
run: |
mkdir -pv ~/ci_artifacts/
cp ~/binaries/bin/dicomautomaton_dispatcher ~/ci_artifacts/DICOMautomaton-${GITHUB_SHA::8}-x86_64.static
cp ~/binaries/bin/dicomautomaton_dispatcher ~/ci_artifacts/DICOMautomaton-latest-x86_64.static
find ~/ci_artifacts/ -type f -iname '*static' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-static"
if-no-files-found: error
path: |
~/ci_artifacts/DICOMautomaton-latest-x86_64.static
~/ci_artifacts/DICOMautomaton-latest-x86_64.static.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ~/ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done
build_static_alpine_aarch64:
runs-on: ubuntu-latest
timeout-minutes: 360
steps:
- uses: actions/checkout@v1
- name: prep
run: |
cp -R . ~/dcma
export DEBIAN_FRONTEND="noninteractive"
sudo apt-get update --yes
sudo apt-get install --yes --no-install-recommends coreutils binutils findutils rsync openssh-client patchelf qemu binfmt-support qemu-user-static
sudo ./docker/build_bases/alpine/setup_host.sh
sudo ./scripts/enable_swapfile.sh
- name: authenticate_with_dockerhub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: build
run: |
( ( while true ; do sleep 225 ; printf '\n\n' ; df -h ; printf '\n\n' ; free || true ; printf '\n\n' ; done ) &)
mkdir -pv ~/binaries/{bin,include,lib,share}
cd ~/dcma/
sudo docker run \
--privileged \
--network=host \
--platform=linux/arm64 \
-v ~/dcma:/dcma:rw \
-v ~/binaries:/usr/local:rw \
-v ~/dcma/docker/build_bases/alpine:/build_base:rw \
-v ~/dcma/docker/builders/alpine:/scratch:rw \
'hdclark/dicomautomaton_alpine_aarch64' \
'/dcma/docker/builders/alpine/implementation_alpine.sh'
sudo chown --recursive $USER:$USER ~/binaries
- name: test
run: |
find ~/binaries/ -type f -execdir chmod 777 '{}' \;
sudo cp ~/binaries/bin/dicomautomaton_dispatcher /usr/bin/
cd ~/dcma && ./integration_tests/Run.sh -v
- name: gather_files
run: |
mkdir -pv ~/ci_artifacts/
cp ~/binaries/bin/dicomautomaton_dispatcher ~/ci_artifacts/DICOMautomaton-${GITHUB_SHA::8}-aarch64.static
cp ~/binaries/bin/dicomautomaton_dispatcher ~/ci_artifacts/DICOMautomaton-latest-aarch64.static
find ~/ci_artifacts/ -type f -iname '*static' -print -execdir bash -c 'sha256sum "$@" > "$@".sha256sum' bash '{}' \;
- name: deploy_to_github
uses: actions/upload-artifact@v3
with:
name: "DICOMautomaton-static"
if-no-files-found: error
path: |
~/ci_artifacts/DICOMautomaton-latest-aarch64.static
~/ci_artifacts/DICOMautomaton-latest-aarch64.static.sha256sum
- name: deploy_to_halclark_ca
run: |
echo "${{secrets.HALCLARKCA_DEPLOY_KEY}}" > deploy_key
chmod 600 deploy_key
for i in `seq 1 20` ; do sleep 5 ; rsync -avP -e 'ssh -v -i deploy_key -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -o StrictHostKeyChecking=no' ~/ci_artifacts/ root@halclark.ca:/var/www/html/ci/ && break ; done