Skip to content

Commit 6371578

Browse files
committed
Use GitHub Actions to test and generate PR builds
1 parent 1bdec4f commit 6371578

File tree

1 file changed

+174
-0
lines changed

1 file changed

+174
-0
lines changed

.github/workflows/build.yml

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
name: Build
2+
3+
on:
4+
push:
5+
branches:
6+
- '**'
7+
pull_request:
8+
workflow_dispatch:
9+
10+
env:
11+
LJT_VERSION: 3.1.3
12+
LJT_GPG_KEY: https://raw.githubusercontent.com/libjpeg-turbo/repo/main/LJT-GPG-KEY
13+
14+
jobs:
15+
linux:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Set global environment variables
19+
run: |
20+
echo "BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}" >$GITHUB_ENV
21+
echo "LJT_URL=https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LJT_VERSION" >>$GITHUB_ENV
22+
- name: Check out code
23+
uses: actions/checkout@v4
24+
- name: Set up build
25+
run: |
26+
mkdir -p $HOME/src/tjj.nightly
27+
docker pull dcommander/buildljt:$BRANCH
28+
git clone --depth=1 https://github.com/libjpeg-turbo/buildscripts.git -b turbojpeg-java $HOME/src/buildscripts
29+
mkdir $HOME/libjpeg-turbo-rpm
30+
pushd $HOME/libjpeg-turbo-rpm
31+
wget --no-check-certificate $LJT_URL/libjpeg-turbo-official-$LJT_VERSION.x86_64.rpm $LJT_URL/libjpeg-turbo-official-$LJT_VERSION.i386.rpm $LJT_URL/libjpeg-turbo-official-$LJT_VERSION.aarch64.rpm
32+
popd
33+
mkdir $HOME/rpmkeys
34+
wget --no-check-certificate "$LJT_GPG_KEY" -O $HOME/rpmkeys/LJT-GPG-KEY
35+
- name: Configure GPG signing
36+
if: ${{github.event_name != 'pull_request'}}
37+
run: |
38+
sudo apt install -y gnupg1
39+
printf "${{secrets.GPG_KEY}}" | base64 --decode | gpg1 --batch --import -
40+
chmod 600 $HOME/.gnupg/gpg.conf
41+
echo "GPG_KEY_NAME=\"${{secrets.GPG_KEY_NAME}}\"" >$HOME/src/buildscripts/gpgsign
42+
echo "GPG_KEY_ID=${{secrets.GPG_KEY_ID}}" >>$HOME/src/buildscripts/gpgsign
43+
echo "GPG_KEY_PASS=${{secrets.GPG_KEY_PASS}}" >>$HOME/src/buildscripts/gpgsign
44+
- name: Build
45+
run: |
46+
docker run -v $HOME/src/tjj.nightly:/root/src/tjj.nightly -v $HOME/src/buildscripts:/root/src/buildscripts -v $GITHUB_WORKSPACE:/root/src/turbojpeg-java -v $HOME/.gnupg:/root/.gnupg -v $HOME/libjpeg-turbo-rpm:/rpms -v $HOME/rpmkeys:/rpmkeys -t dcommander/buildljt:$BRANCH bash -c "rpm --import /rpmkeys/LJT-GPG-KEY && rpm -K /rpms/*.rpm && rpm -i /rpms/*86*.rpm && mkdir /opt/arm64 && pushd /opt/arm64 && rpm2cpio /rpms/*aarch64*.rpm | cpio -id && popd && ~/src/buildscripts/buildtjj -d /root/src/turbojpeg-java -v"
47+
sudo chown -R runner:runner $HOME/src/tjj.nightly
48+
mv $HOME/src/tjj.nightly/latest/log-${{github.job}}.txt $HOME/src/tjj.nightly/latest/files/
49+
- name: Configure AWS
50+
if: ${{github.event_name != 'pull_request'}}
51+
uses: aws-actions/configure-aws-credentials@v4
52+
with:
53+
aws-access-key-id: ${{secrets.AWS_ACCESS_KEY_ID}}
54+
aws-secret-access-key: ${{secrets.AWS_SECRET_ACCESS_KEY}}
55+
aws-region: ${{secrets.AWS_REGION}}
56+
- name: Deploy
57+
if: ${{github.event_name != 'pull_request'}}
58+
run: |
59+
aws s3 sync --acl public-read --delete $HOME/src/tjj.nightly/latest/files/ s3://turbojpeg-java-pr/${{env.BRANCH}}/${{github.job}}/
60+
macos:
61+
runs-on: macos-15
62+
steps:
63+
- name: Set global environment variables
64+
run: |
65+
echo "BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}" >$GITHUB_ENV
66+
echo "LJT_URL=https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LJT_VERSION" >>$GITHUB_ENV
67+
- name: Check out code
68+
uses: actions/checkout@v4
69+
- name: Set up build
70+
run: |
71+
brew install yasm md5sha1sum
72+
sudo xcode-select -s /Applications/Xcode_16.4.app
73+
mkdir -p $HOME/src/tjj.nightly
74+
git clone --depth=1 https://github.com/libjpeg-turbo/buildscripts.git -b turbojpeg-java $HOME/src/buildscripts
75+
mkdir $HOME/libjpeg-turbo-dmg
76+
pushd $HOME/libjpeg-turbo-dmg
77+
wget --no-check-certificate $LJT_URL/libjpeg-turbo-$LJT_VERSION.dmg
78+
hdid libjpeg-turbo-$LJT_VERSION.dmg
79+
sudo installer -pkg /Volumes/libjpeg-turbo-$LJT_VERSION/libjpeg-turbo.pkg -target /
80+
hdiutil detach /Volumes/libjpeg-turbo-$LJT_VERSION
81+
rm *.dmg
82+
popd
83+
rmdir $HOME/libjpeg-turbo-dmg
84+
- name: Configure GPG signing
85+
if: ${{github.event_name != 'pull_request'}}
86+
run: |
87+
printf "${{secrets.GPG_KEY}}" | base64 --decode | gpg --batch --import -
88+
echo "GPG_KEY_NAME=\"${{secrets.GPG_KEY_NAME}}\"" >$HOME/src/buildscripts/gpgsign
89+
echo "GPG_KEY_ID=${{secrets.GPG_KEY_ID}}" >>$HOME/src/buildscripts/gpgsign
90+
echo "GPG_KEY_PASS=${{secrets.GPG_KEY_PASS}}" >>$HOME/src/buildscripts/gpgsign
91+
- name: Build
92+
run: |
93+
$HOME/src/buildscripts/buildtjj -d $GITHUB_WORKSPACE -v
94+
mv $HOME/src/tjj.nightly/latest/log-${{github.job}}.txt $HOME/src/tjj.nightly/latest/files/
95+
- name: Configure AWS
96+
if: ${{github.event_name != 'pull_request'}}
97+
uses: aws-actions/configure-aws-credentials@v4
98+
with:
99+
aws-access-key-id: ${{secrets.AWS_ACCESS_KEY_ID}}
100+
aws-secret-access-key: ${{secrets.AWS_SECRET_ACCESS_KEY}}
101+
aws-region: ${{secrets.AWS_REGION}}
102+
- name: Deploy
103+
if: ${{github.event_name != 'pull_request'}}
104+
run: |
105+
aws s3 sync --acl public-read --delete $HOME/src/tjj.nightly/latest/files/ s3://turbojpeg-java-pr/${{env.BRANCH}}/${{github.job}}/
106+
windows:
107+
runs-on: windows-2025
108+
steps:
109+
- name: Set global environment variables
110+
shell: bash
111+
run: |
112+
echo "BRANCH=${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}" >$GITHUB_ENV
113+
echo "LJT_URL=https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LJT_VERSION" >>$GITHUB_ENV
114+
- name: Check out code
115+
uses: actions/checkout@v4
116+
- name: Set up build
117+
shell: bash
118+
run: |
119+
set -x
120+
mkdir -p c:/installers
121+
if [ ! -f c:/installers/libjpeg-turbo-$LJT_VERSION-vc-x64.exe ]; then
122+
curl -fSL -o c:/installers/libjpeg-turbo-$LJT_VERSION-vc-x64.exe $LJT_URL/libjpeg-turbo-$LJT_VERSION-vc-x64.exe
123+
fi
124+
c:/installers/libjpeg-turbo-$LJT_VERSION-vc-x64.exe //S
125+
if [ ! -f c:/installers/libjpeg-turbo-$LJT_VERSION-vc-x86.exe ]; then
126+
curl -fSL -o c:/installers/libjpeg-turbo-$LJT_VERSION-vc-x86.exe $LJT_URL/libjpeg-turbo-$LJT_VERSION-vc-x86.exe
127+
fi
128+
c:/installers/libjpeg-turbo-$LJT_VERSION-vc-x86.exe //S
129+
if [ ! -f c:/installers/OpenJDK8U-jdk_x86-32_windows_hotspot_8u452b09.zip ]; then
130+
curl -fSL -o c:/installers/OpenJDK8U-jdk_x86-32_windows_hotspot_8u452b09.zip https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u452-b09/OpenJDK8U-jdk_x86-32_windows_hotspot_8u452b09.zip
131+
fi
132+
7z x c:/installers/OpenJDK8U-jdk_x86-32_windows_hotspot_8u452b09.zip -o$ProgramData/Oracle > c:/installers/openjdk-x86.install.log
133+
mv $ProgramData/Oracle/jdk8u452-b09 $ProgramData/Oracle/Java32
134+
mkdir $ProgramData/Oracle/Java
135+
ln -fs "$(cygpath "$JAVA_HOME_8_X64")" $ProgramData/Oracle/Java/javapath
136+
git clone --depth=1 https://github.com/nathan818fr/vcvars-bash.git c:/vcvars-bash
137+
git clone --depth=1 https://github.com/libjpeg-turbo/buildscripts.git -b turbojpeg-java c:/buildscripts
138+
c:/msys64/usr/bin/pacman --noconfirm -S zip
139+
- name: Configure GPG signing
140+
if: ${{github.event_name != 'pull_request'}}
141+
shell: bash
142+
run: |
143+
printf "${{secrets.GPG_KEY}}" | base64 --decode | gpg --batch --import -
144+
echo "GPG_KEY_NAME=\"${{secrets.GPG_KEY_NAME}}\"" >c:/buildscripts/gpgsign
145+
echo "GPG_KEY_ID=${{secrets.GPG_KEY_ID}}" >>c:/buildscripts/gpgsign
146+
echo "GPG_KEY_PASS=${{secrets.GPG_KEY_PASS}}" >>c:/buildscripts/gpgsign
147+
- name: Cache installers
148+
uses: actions/cache@v4
149+
with:
150+
path: c:/installers
151+
key: installers-${{github.job}}-${{env.BRANCH}}
152+
- name: Build
153+
shell: bash
154+
run: |
155+
export VSINSTALLDIR='C:\Program Files\Microsoft Visual Studio\2022\Enterprise\'
156+
eval "$(c:/vcvars-bash/vcvarsall.sh amd64)"
157+
export PATH=$PATH:/c/msys64/usr/bin
158+
echo INCLUDE=$INCLUDE
159+
echo LIB=$LIB
160+
echo PATH=$PATH
161+
c:/buildscripts/buildtjj -d $GITHUB_WORKSPACE -b /c/tjj.nightly -v
162+
mv /c/tjj.nightly/log-${{github.job}}.txt /c/tjj.nightly/files/
163+
- name: Configure AWS
164+
if: ${{github.event_name != 'pull_request'}}
165+
uses: aws-actions/configure-aws-credentials@v4
166+
with:
167+
aws-access-key-id: ${{secrets.AWS_ACCESS_KEY_ID}}
168+
aws-secret-access-key: ${{secrets.AWS_SECRET_ACCESS_KEY}}
169+
aws-region: ${{secrets.AWS_REGION}}
170+
- name: Deploy
171+
if: ${{github.event_name != 'pull_request'}}
172+
shell: bash
173+
run: |
174+
aws s3 sync --acl public-read --delete c:/tjj.nightly/files s3://turbojpeg-java-pr/${{env.BRANCH}}/${{github.job}}/

0 commit comments

Comments
 (0)