Skip to content

Commit 0f0aed7

Browse files
committed
ci: use actions library
1 parent 04971a4 commit 0f0aed7

File tree

3 files changed

+98
-299
lines changed

3 files changed

+98
-299
lines changed
Lines changed: 23 additions & 239 deletions
Original file line numberDiff line numberDiff line change
@@ -1,248 +1,32 @@
11
name: Deploy on Ubuntu
22
description: "Deploy on Ubuntu"
33
inputs:
4+
snapshot-repo-url:
5+
description: "The URL of the maven repository"
6+
required: false
7+
release-repo-url:
8+
description: "The URL of the maven repository"
9+
required: false
10+
repo-username:
11+
description: "The username for the maven repository"
12+
required: false
13+
repo-password:
14+
description: "The password for the maven repository"
15+
required: false
416
gradle-cache-encryption-key:
5-
description: 'The encryption key for the Gradle cache.'
17+
description: "The encryption key for the gradle cache"
618
required: false
7-
tests:
8-
description: 'Run tests'
9-
default: 'false'
10-
publish:
11-
description: 'Publish the release'
12-
default: 'true'
13-
disable-cache:
14-
description: 'Disable cache'
15-
default: 'false'
1619
runs:
1720
using: composite
1821
steps:
19-
- name: Install environment
20-
shell: bash
21-
env:
22-
GITHUB_EVENT_HEAD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
23-
run: |
24-
export SUDO=$(which sudo)
25-
echo "SUDO=$SUDO" >> $GITHUB_ENV
26-
if [[ -z "$SUDO" ]]; then
27-
echo "Fixing HOME to /root (was '$HOME')"
28-
export HOME=/root
29-
echo "HOME=$HOME" >> $GITHUB_ENV
30-
fi
31-
cd $HOME
32-
33-
# Free disk space by removing some unused system components
34-
$SUDO rm -rf /usr/local/lib/android
35-
$SUDO rm -rf /usr/share/dotnet
36-
37-
# Allocate a swapfile on Linux as it's not enabled by default. Needed for pytorch and mkl.
38-
$SUDO fallocate -l 4GB /swapfile
39-
$SUDO chmod 600 /swapfile
40-
$SUDO mkswap /swapfile
41-
$SUDO swapon /swapfile
42-
43-
mkdir -p .ccache
44-
echo "max_size = 2.0G" > .ccache/ccache.conf
45-
echo "hash_dir = false" >> .ccache/ccache.conf
46-
echo "sloppiness = file_macro,include_file_ctime,include_file_mtime,pch_defines,time_macros" >> .ccache/ccache.conf
47-
48-
export ARCH=amd64
49-
export PREFIX=x86_64-linux-gnu
50-
if [[ "$CI_DEPLOY_PLATFORM" == "linux-arm" ]]; then
51-
export ARCH=armhf
52-
export PREFIX=arm-linux-gnueabihf
53-
export USERLAND_BUILDME="buildme"
54-
elif [[ "$CI_DEPLOY_PLATFORM" == "linux-arm64" ]]; then
55-
export ARCH=arm64
56-
export ARCH_CUDA=sbsa
57-
export PREFIX=aarch64-linux-gnu
58-
export CUDA=cuda-repo-rhel8-12-3-local-12.3.2_545.23.08-1.aarch64.rpm
59-
export CUDNN=8.9.7.29-1.cuda12.2.aarch64
60-
export NCCL=2.19.3-1+cuda12.3.aarch64
61-
export NVCOMP=nvcomp_3.0.5_SBSA_12.x
62-
export USERLAND_BUILDME="buildme --aarch64"
63-
elif [[ "$CI_DEPLOY_PLATFORM" == "linux-ppc64le" ]]; then
64-
export ARCH=ppc64el
65-
export ARCH_CUDA=ppc64le
66-
export PREFIX=powerpc64le-linux-gnu
67-
export CUDA=cuda-repo-rhel8-12-3-local-12.3.2_545.23.08-1.ppc64le.rpm
68-
export CUDNN=8.9.7.29-1.cuda12.2.ppc64le
69-
export NCCL=2.19.3-1+cuda12.3.ppc64le
70-
elif [[ "$CI_DEPLOY_PLATFORM" == "linux-x86" ]]; then
71-
export ARCH=i386
72-
export PREFIX=i686-linux-gnu
73-
elif [[ "$CI_DEPLOY_PLATFORM" == "linux-x86_64" ]]; then
74-
export ARCH=amd64
75-
export ARCH_CUDA=x86_64
76-
export PREFIX=x86_64-linux-gnu
77-
export CUDA=cuda-repo-rhel8-12-3-local-12.3.2_545.23.08-1.x86_64.rpm
78-
export CUDNN=8.9.7.29-1.cuda12.2.x86_64
79-
export NCCL=2.19.3-1+cuda12.3.x86_64
80-
export NVCOMP=nvcomp_3.0.5_x86_64_12.x
81-
fi
82-
echo "ARCH=$ARCH" >> $GITHUB_ENV
83-
echo "PREFIX=$PREFIX" >> $GITHUB_ENV
84-
85-
$SUDO dpkg --list
86-
87-
$SUDO apt-get update
88-
$SUDO apt-get -y install gnupg
89-
source /etc/os-release
90-
export CODENAME=$UBUNTU_CODENAME
91-
92-
if [[ ! "$ARCH" == "amd64" ]]; then
93-
# https://github.com/actions/runner-images/issues/675
94-
$SUDO gem install apt-spy2
95-
$SUDO apt-spy2 check
96-
$SUDO apt-spy2 fix --commit
97-
$SUDO sed -i 's/azure\.//' /etc/apt/apt-mirrors.txt /etc/apt/sources.list
98-
$SUDO cat /etc/apt/apt-mirrors.txt /etc/apt/sources.list
99-
$SUDO apt-get update
100-
101-
# https://github.com/actions/runner-images/issues/4589
102-
$SUDO apt-add-repository -y ppa:ondrej/php
103-
$SUDO apt-get -y install ppa-purge
104-
$SUDO ppa-purge -y ppa:ondrej/php
105-
fi
106-
107-
if [[ "$ARCH" == "i386" ]]; then
108-
$SUDO dpkg --add-architecture $ARCH
109-
TOOLCHAIN="gcc-$PREFIX g++-$PREFIX gfortran-$PREFIX"
110-
elif [[ ! "$ARCH" == "amd64" ]]; then
111-
echo "Adding $ARCH architecture"
112-
$SUDO dpkg --add-architecture $ARCH
113-
$SUDO sed -i 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
114-
$SUDO sed -i 's/deb mirror/deb [arch=amd64] mirror/g' /etc/apt/sources.list
115-
$SUDO echo deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports $CODENAME main restricted universe multiverse | $SUDO tee -a /etc/apt/sources.list
116-
$SUDO echo deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports $CODENAME-updates main restricted universe multiverse | $SUDO tee -a /etc/apt/sources.list
117-
$SUDO echo deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports $CODENAME-backports main restricted universe multiverse | $SUDO tee -a /etc/apt/sources.list
118-
$SUDO echo deb [arch=$ARCH] http://ports.ubuntu.com/ubuntu-ports $CODENAME-security main restricted universe multiverse | $SUDO tee -a /etc/apt/sources.list
119-
TOOLCHAIN="gcc-$PREFIX g++-$PREFIX gfortran-$PREFIX linux-libc-dev-$ARCH-cross binutils-multiarch"
120-
fi
121-
echo "sources.list:"
122-
cat /etc/apt/sources.list
123-
for f in /etc/apt/sources.list.d/*.list; do echo "$f:"; cat $f; done
124-
$SUDO apt-get update
125-
$SUDO apt-get -y install gcc-multilib g++-multilib gfortran-multilib python3 python2.7 python3-minimal python2.7-minimal rpm libasound2-dev:$ARCH freeglut3-dev:$ARCH libfontconfig-dev:$ARCH libgtk2.0-dev:$ARCH libusb-dev:$ARCH libusb-1.0-0-dev:$ARCH libffi-dev:$ARCH libbz2-dev:$ARCH zlib1g-dev:$ARCH libxcb1-dev:$ARCH libpulse-dev:$ARCH libdrm-dev:$ARCH libva-dev:$ARCH
126-
$SUDO apt-get -y install pkgconf ccache clang $TOOLCHAIN openjdk-8-jdk ant python2 python3-pip swig git file wget unzip tar bzip2 gzip patch autoconf-archive autogen automake cmake make libtool bison flex perl nasm ragel curl libcurl4-openssl-dev libssl-dev libffi-dev libbz2-dev zlib1g-dev rapidjson-dev
127-
128-
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
129-
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
130-
ln -sf $JAVA_HOME /usr/lib/jvm/default-java
131-
find /usr/lib/jvm/default-java/
132-
133-
# install vulkan sdk
134-
echo Installing Vulkan-SDK
135-
if [[ "$CODENAME" == "jammy" ]]; then
136-
curl -s https://packages.lunarg.com/lunarg-signing-key-pub.asc | $SUDO tee /etc/apt/trusted.gpg.d/lunarg.asc >/dev/null
137-
$SUDO curl -s -o /etc/apt/sources.list.d/lunarg-vulkan-1.3.280-jammy.list https://packages.lunarg.com/vulkan/1.3.280/lunarg-vulkan-1.3.280-jammy.list
138-
$SUDO sed -i 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list.d/lunarg-vulkan-1.3.280-jammy.list
139-
$SUDO sed -i 's/deb-src http/deb-src [arch=amd64] http/g' /etc/apt/sources.list.d/lunarg-vulkan-1.3.280-jammy.list
140-
else
141-
curl -s https://packages.lunarg.com/lunarg-signing-key-pub.asc | $SUDO apt-key add -
142-
$SUDO curl -s -o /etc/apt/sources.list.d/lunarg-vulkan-1.3.280-focal.list https://packages.lunarg.com/vulkan/1.3.280/lunarg-vulkan-1.3.280-focal.list
143-
$SUDO sed -i 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list.d/lunarg-vulkan-1.3.280-focal.list
144-
$SUDO sed -i 's/deb-src http/deb-src [arch=amd64] http/g' /etc/apt/sources.list.d/lunarg-vulkan-1.3.280-focal.list
145-
fi
146-
$SUDO apt-get update && $SUDO apt-get install -y libvulkan1 libvulkan-dev vulkan-sdk
147-
148-
if [[ -n ${USERLAND_BUILDME:-} ]]; then
149-
curl -LOJ https://github.com/raspberrypi/userland/archive/master.tar.gz
150-
tar -xzf userland-master.tar.gz
151-
pushd userland-master
152-
bash $USERLAND_BUILDME
153-
popd
154-
export USERLAND_PATH=$(pwd)/userland-master/
155-
echo "USERLAND_PATH=$USERLAND_PATH" >> $GITHUB_ENV
156-
fi
157-
158-
if [[ $CI_DEPLOY_PLATFORM == android-* ]]; then
159-
curl -LO https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
160-
unzip -qq android-ndk-r21e-linux-x86_64.zip
161-
ln -sf android-ndk-r21e android-ndk
162-
export MAVEN_OPTIONS="-Djavacpp.platform.root=$(pwd)/android-ndk/ -Djava.library.path="
163-
else
164-
export MAVEN_OPTIONS="-Djavacpp.platform.compiler=$PREFIX-g++ -Djava.library.path=/usr/$PREFIX/lib/:/usr/lib/$PREFIX/:$USERLAND_PATH/build/lib/"
165-
fi
166-
167-
if [[ -n ${ARCH_CUDA:-} ]] && [[ -n ${CI_DEPLOY_NEED_CUDA:-} ]]; then
168-
echo Installing CUDA, cuDNN, nvCOMP, etc
169-
curl -LO https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/$CUDA
170-
curl -LO https://developer.download.nvidia.com/compute/cuda/repos/rhel8/$ARCH_CUDA/libcudnn8-$CUDNN.rpm
171-
curl -LO https://developer.download.nvidia.com/compute/cuda/repos/rhel8/$ARCH_CUDA/libcudnn8-devel-$CUDNN.rpm
172-
curl -LO https://developer.download.nvidia.com/compute/cuda/repos/rhel8/$ARCH_CUDA/libnccl-$NCCL.rpm
173-
curl -LO https://developer.download.nvidia.com/compute/cuda/repos/rhel8/$ARCH_CUDA/libnccl-devel-$NCCL.rpm
174-
175-
$SUDO rpm -i --force --ignorearch --nodeps $CUDA libcudnn*.rpm libnccl*.rpm
176-
rm -f *.rpm *.tgz *.txz *.tar.*
177-
pushd /var/cuda-repo-rhel8-12-3-local/; $SUDO rpm -i --force --ignorearch --nodeps cuda*.rpm libc*.rpm libn*.rpm; $SUDO rm *.rpm; popd
178-
$SUDO ln -sf /usr/local/cuda/lib64/ /usr/local/cuda/lib
179-
$SUDO ln -sf /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/libcuda.so
180-
$SUDO ln -sf /usr/local/cuda/lib64/stubs/libnvidia-ml.so /usr/local/cuda/lib64/libnvidia-ml.so
181-
$SUDO mv /usr/include/cudnn* /usr/include/nccl* /usr/local/cuda/include/
182-
$SUDO mv /usr/lib64/libcudnn* /usr/lib64/libnccl* /usr/local/cuda/lib64/
183-
184-
if [[ -n ${NVCOMP:-} ]]; then
185-
curl -LO https://developer.download.nvidia.com/compute/nvcomp/3.0.5/local_installers/$NVCOMP.tgz
186-
$SUDO tar -xvf $NVCOMP.tgz -C /usr/local/cuda/lib64/ --strip-components=1 lib/ || $SUDO tar -xvf $NVCOMP.tgz -C /usr/local/cuda/lib64/ --strip-components=2 nvcomp-3.0.5-ctk-12.2/lib/
187-
$SUDO tar -xvf $NVCOMP.tgz -C /usr/local/cuda/include/ --strip-components=1 include/ || $SUDO tar -xvf $NVCOMP.tgz -C /usr/local/cuda/include/ --strip-components=2 nvcomp-3.0.5-ctk-12.2/include/
188-
rm -f $NVCOMP.tgz
189-
fi
190-
191-
# Work around issues with CUDA 10.2/11.x
192-
$SUDO mv /usr/include/cublas* /usr/include/nvblas* /usr/local/cuda/include/ || true
193-
$SUDO mv /usr/lib64/libcublas* /usr/lib64/libnvblas* /usr/local/cuda/lib64/ || true
194-
for f in /usr/local/cuda/include/*_v8.h; do $SUDO ln -sf $f ${f:0:${#f}-5}.h; done
195-
for f in /usr/local/cuda/lib64/libcudnn*so.8.*; do $SUDO ln -sf $f ${f:0:${#f}-4}; $SUDO ln -sf $f ${f:0:${#f}-6}; done
196-
for f in /usr/local/cuda/lib64/*.so.10; do $SUDO ln -s $f $f.2; done
197-
for f in /usr/local/cuda/lib64/*.so.10; do $SUDO ln -s $f ${f:0:${#f}-1}1; done
198-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.1
199-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.2
200-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.3
201-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.4
202-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.5
203-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.6
204-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.7
205-
$SUDO ln -s libcudart.so.11.0 /usr/local/cuda/lib64/libcudart.so.11.8
206-
$SUDO cp /usr/local/cuda/lib64/stubs/libcuda.so /usr/lib64/libcuda.so
207-
$SUDO cp /usr/local/cuda/lib64/stubs/libcuda.so /usr/lib64/libcuda.so.1
208-
$SUDO cp /usr/local/cuda/lib64/stubs/libnvidia-ml.so /usr/lib64/libnvidia-ml.so
209-
$SUDO cp /usr/local/cuda/lib64/stubs/libnvidia-ml.so /usr/lib64/libnvidia-ml.so.1
210-
$SUDO sed -i s/cublas_v2.h/cublas_api.h/g /usr/local/cuda/include/cublasXt.h /usr/local/cuda/include/cusolverDn.h /usr/local/cuda/include/cusolverSp.h
211-
$SUDO sed -i /block_merge_sort.cuh/d /usr/local/cuda/include/cub/cub.cuh
212-
$SUDO sed -i /device_merge_sort.cuh/d /usr/local/cuda/include/cub/cub.cuh
213-
$SUDO sed -i /device_segmented_sort.cuh/d /usr/local/cuda/include/cub/cub.cuh
214-
$SUDO sed -i /warp_merge_sort.cuh/d /usr/local/cuda/include/cub/cub.cuh
215-
216-
# Remove downloaded archives and unused libraries to avoid running out of disk space
217-
$SUDO rm -f $(find /usr/local/cuda/ -name '*.a' -and -not -name libcudart_static.a -and -not -name libcudadevrt.a -and -not -name libnvcomp_device.a)
218-
fi
219-
220-
- name: Set up JDK 11
221-
uses: actions/setup-java@v4
222-
with:
223-
distribution: 'temurin'
224-
java-version: '11'
225-
- name: Setup Gradle
226-
uses: gradle/actions/setup-gradle@v3
22+
- uses: silenium-dev/actions/jni-natives/ubuntu@main
22723
with:
228-
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
229-
gradle-home-cache-cleanup: ${{ inputs.disable-cache == 'true' && 'false' || 'true' }}
230-
build-scan-publish: true
231-
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
232-
build-scan-terms-of-use-agree: "yes"
233-
add-job-summary-as-pr-comment: on-failure
234-
cache-disabled: ${{ inputs.disable-cache }}
235-
236-
- name: Publish release
237-
shell: bash
238-
if: "github.event_name == 'release'"
239-
run: ./gradlew clean ${{ inputs.publish == 'true' && 'publish' || 'assemble' }} ${{ inputs.tests == 'true' && 'check' || '-x check -x test' }} -Pdeploy.kotlin=false -Pdeploy.native=true -Pdeploy.platform=${{ github.job }} -Pffmpeg.gpl=${{ matrix.gpl }} -Pdeploy.version=${{ github.event.release.tag_name }} --console=plain --info --configure-on-demand --parallel --build-cache --configuration-cache
240-
241-
- name: Set outputs
242-
id: vars
243-
shell: bash
244-
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
245-
- name: Publish snapshot
246-
shell: bash
247-
if: "github.event_name != 'release'"
248-
run: ./gradlew clean ${{ inputs.publish == 'true' && 'publish' || 'assemble' }} ${{ inputs.tests == 'true' && 'check' || '-x check -x test' }} -Pdeploy.kotlin=false -Pdeploy.native=true -Pdeploy.platform=${{ github.job }} -Pffmpeg.gpl=${{ matrix.gpl }} -Pdeploy.version=${{ steps.vars.outputs.sha_short }}-dev --console=plain --info --configure-on-demand --parallel --build-cache --configuration-cache
24+
gradle-cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
25+
snapshot-repo-url: ${{ inputs.snapshot-repo-url }}
26+
release-repo-url: ${{ inputs.release-repo-url }}
27+
repo-username: ${{ secrets.REPOSILITE_USERNAME }}
28+
repo-password: ${{ secrets.REPOSILITE_PASSWORD }}
29+
tests: false
30+
java-version: 11
31+
platform: ${{ github.job }}
32+
extra-gradle-args: "-Pffmpeg.gpl=${{ matrix.gpl }}"

0 commit comments

Comments
 (0)