Skip to content

Commit ddff427

Browse files
committed
Write a JSON manifest file for pushed artifacts
- Use a different GitHub Actions job for pushing artifacts - Specify a GitHub Actions concurrency group for pushing artifacts jobs - Remove unneeded use of environment variables in workflows
1 parent 055afd0 commit ddff427

7 files changed

Lines changed: 756 additions & 299 deletions

File tree

.github/workflows/android.yml

Lines changed: 101 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ env:
44
LIBRARIES_BRANCH: libraries-OS-COMPILER
55
NCINE_BRANCH: nCine-BRANCH_NAME-OS-COMPILER
66
NCINE_SOURCE_BRANCH: BRANCH_NAME
7-
DEPLOY_MESSAGE:
8-
"Push artifact from GitHub Actions build ${{ github.run_number }} with id ${{ github.run_id }}
7+
DEPLOY_MESSAGE: |
8+
Push artifact from GitHub Actions build ${{ github.run_number }} with id ${{ github.run_id }}
99
10-
- PROJECT_NAME artifact from branch 'BRANCH_NAME' with commit id ${{ github.sha }}"
10+
- PROJECT_NAME artifact from branch 'BRANCH_NAME' with commit id ${{ github.sha }}
1111
1212
on: [push, workflow_dispatch]
1313

1414
jobs:
15-
Android:
15+
Build:
1616
strategy:
1717
fail-fast: false
1818
matrix:
@@ -25,18 +25,19 @@ jobs:
2525
- name: 'Checkout Code'
2626
uses: actions/checkout@v4
2727

28-
- name: 'Unshallow Git Repository for Versioning'
28+
- name: 'Install Build Dependencies'
2929
run: |
30-
git fetch --unshallow || true
30+
sudo apt-get update
31+
sudo apt-get install -y libgl1-mesa-dev libopengl-dev libegl1-mesa-dev libglvnd-dev libxext-dev libxrandr-dev libwayland-dev
3132
3233
- name: 'Download nCine-libraries, nCine Artifacts, and project data'
3334
run: |
34-
export OS=linux
35-
export CC=gcc
36-
export BRANCH_NAME=$(git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
35+
OS=linux
36+
CC=gcc
37+
BRANCH_NAME=$(git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
3738
38-
export LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/OS/'"$OS"'/'`
39-
export LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/COMPILER/'"$CC"'/'`
39+
LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/OS/'"$OS"'/'`
40+
LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/COMPILER/'"$CC"'/'`
4041
4142
cd ..
4243
git clone https://github.com/nCine/nCine-libraries-artifacts.git
@@ -48,10 +49,10 @@ jobs:
4849
cd ..
4950
rm -rf nCine-libraries-artifacts
5051
51-
export NCINE_SOURCE_BRANCH=`echo $NCINE_SOURCE_BRANCH | sed 's/BRANCH_NAME/'"$BRANCH_NAME"'/'`
52-
export NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/BRANCH_NAME/'"$NCINE_SOURCE_BRANCH"'/'`
53-
export NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/OS/'"$OS"'/'`
54-
export NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/COMPILER/'"$CC"'/'`
52+
NCINE_SOURCE_BRANCH=`echo $NCINE_SOURCE_BRANCH | sed 's/BRANCH_NAME/'"$BRANCH_NAME"'/'`
53+
NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/BRANCH_NAME/'"$NCINE_SOURCE_BRANCH"'/'`
54+
NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/OS/'"$OS"'/'`
55+
NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/COMPILER/'"$CC"'/'`
5556
git clone https://github.com/nCine/nCine-artifacts.git
5657
cd nCine-artifacts
5758
git checkout $NCINE_BRANCH
@@ -67,41 +68,115 @@ jobs:
6768
6869
- name: 'CMake Configuration'
6970
run: |
70-
export PROJECT_NAME=${GITHUB_REPOSITORY##*/}
71-
71+
PROJECT_NAME=${GITHUB_REPOSITORY##*/}
7272
cmake -B ../$PROJECT_NAME-build-${{ matrix.BuildType }} -D CMAKE_BUILD_TYPE=${{ matrix.BuildType }} -D NCPROJECT_NDK_ARCHITECTURES=${{ matrix.ARCH }} -D NCPROJECT_BUILD_ANDROID=ON -D NCPROJECT_ASSEMBLE_APK=ON -D nCine_DIR=$(pwd)/../nCine/lib/cmake/nCine
7373
7474
- name: 'Gradle Assemble'
7575
run: |
76+
PROJECT_NAME=${GITHUB_REPOSITORY##*/}
7677
export JAVA_HOME=$JAVA_HOME_17_X64
77-
export PROJECT_NAME=${GITHUB_REPOSITORY##*/}
7878
export MAKEFLAGS="-j $(getconf _NPROCESSORS_ONLN)"
7979
8080
cd ../$PROJECT_NAME-build-${{ matrix.BuildType }}/android
8181
gradle assemble${{ matrix.BuildType }} --parallel
8282
83+
- name: 'Prepare GitHub Actions Artifact'
84+
run: |
85+
PROJECT_NAME=${GITHUB_REPOSITORY##*/}
86+
cd ../$PROJECT_NAME-build-${{ matrix.BuildType }}/android/app/build/outputs/apk
87+
88+
APK_PATH=$(find . -type f -name '*.apk' | head -n 1)
89+
APK_NAME=$(basename "$APK_PATH")
90+
91+
# Generate a JSON manifest file
92+
MANIFEST="manifest.json"
93+
94+
SIZE=$(stat -c %s "$APK_PATH")
95+
MTIME=$(stat -c %y "$APK_PATH")
96+
MTIME_ISO=$(date -u -d "$MTIME" +"%Y-%m-%dT%H:%M:%SZ")
97+
SHA256=$(sha256sum "$APK_PATH" | awk '{print $1}')
98+
99+
cat > "$MANIFEST" <<EOF
100+
{
101+
"filename": "$APK_NAME",
102+
"size": $SIZE,
103+
"timestamp": "$MTIME_ISO",
104+
"sha256": "$SHA256",
105+
"git_revision": "$GITHUB_SHA"
106+
}
107+
EOF
108+
109+
ARTIFACTS_DIR="$GITHUB_WORKSPACE/$PROJECT_NAME-job-artifacts"
110+
mkdir -p $ARTIFACTS_DIR
111+
cp -p $APK_PATH $ARTIFACTS_DIR
112+
cp -p $MANIFEST $ARTIFACTS_DIR
113+
114+
echo "Contents of the $PROJECT_NAME-job-artifacts directory:"
115+
ls -l $ARTIFACTS_DIR
116+
echo "Contents of the manifest file:"
117+
cat $MANIFEST
118+
119+
- name: 'Upload GitHub Actions Artifact'
120+
uses: actions/upload-artifact@v4
121+
with:
122+
name: ${{ github.event.repository.name }}-job-artifacts-${{ matrix.ARCH }}-${{ matrix.BuildType }}
123+
path: ${{ github.event.repository.name }}-job-artifacts/*
124+
125+
Artifacts:
126+
needs: Build
127+
strategy:
128+
fail-fast: false
129+
matrix:
130+
ARCH: [armeabi-v7a, arm64-v8a, x86_64]
131+
BuildType: [Debug, Release]
132+
133+
runs-on: 'ubuntu-24.04'
134+
concurrency:
135+
group: artifacts-android-${{ matrix.ARCH }}-${{ matrix.BuildType }}
136+
cancel-in-progress: false
137+
138+
steps:
139+
- name: 'Checkout Code'
140+
uses: actions/checkout@v4
141+
142+
- name: 'Unshallow Git Repository for Versioning'
143+
run: |
144+
git fetch --unshallow || true
145+
146+
- name: 'Download GitHub Actions Artifact'
147+
uses: actions/download-artifact@v4
148+
with:
149+
name: ${{ github.event.repository.name }}-job-artifacts-${{ matrix.ARCH }}-${{ matrix.BuildType }}
150+
path: ${{ github.event.repository.name }}-job-artifacts
151+
83152
- name: 'Push Artifacts'
84153
env:
85154
PUBLIC_REPO_TOKEN: ${{ secrets.PUBLIC_REPO_TOKEN }}
86155
run: |
87156
git config --global user.email "actions@github.com"
88157
git config --global user.name "GitHub Actions"
89158
90-
export PROJECT_NAME=${GITHUB_REPOSITORY##*/}
91-
export BRANCH_NAME=$(git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
92-
export DEPLOY_MESSAGE=`sed 's/PROJECT_NAME/'"$PROJECT_NAME"'/' <<< "$DEPLOY_MESSAGE"`
93-
export DEPLOY_MESSAGE=`sed 's/BRANCH_NAME/'"$BRANCH_NAME"'/' <<< "$DEPLOY_MESSAGE"`
159+
PROJECT_NAME=${GITHUB_REPOSITORY##*/}
160+
BRANCH_NAME=$(git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
161+
DEPLOY_MESSAGE=`sed 's/PROJECT_NAME/'"$PROJECT_NAME"'/' <<< "$DEPLOY_MESSAGE"`
162+
DEPLOY_MESSAGE=`sed 's/BRANCH_NAME/'"$BRANCH_NAME"'/' <<< "$DEPLOY_MESSAGE"`
163+
164+
cd $PROJECT_NAME-job-artifacts
165+
MANIFEST=$(ls manifest*.json)
166+
APK_FILE=$(jq -r '.filename' "$MANIFEST")
94167
95168
cd ..
96-
export DEPLOY_BRANCH=$PROJECT_NAME-$BRANCH_NAME-android-${{ matrix.ARCH }}-${{ matrix.BuildType }}
169+
DEPLOY_BRANCH=$PROJECT_NAME-$BRANCH_NAME-android-${{ matrix.ARCH }}-${{ matrix.BuildType }}
97170
git clone https://$PUBLIC_REPO_TOKEN@github.com/$GITHUB_REPOSITORY-artifacts.git >/dev/null 2>&1
98-
cd $PROJECT_NAME-artifacts
99171
172+
cd $PROJECT_NAME-artifacts
100173
git checkout $DEPLOY_BRANCH || git checkout --orphan $DEPLOY_BRANCH
101174
git reset
102175
git clean -f
103176
git rm * || true
104-
mv -f ../$PROJECT_NAME-build-${{ matrix.BuildType }}/android/app/build/outputs/apk/*/*.apk .
105-
git add *.apk
177+
mv -f ../$PROJECT_NAME-job-artifacts/$MANIFEST .
178+
mv -f ../$PROJECT_NAME-job-artifacts/$APK_FILE .
179+
180+
git add $MANIFEST $APK_FILE
106181
git commit --amend -m "$DEPLOY_MESSAGE" || git commit -m "$DEPLOY_MESSAGE"
107182
git push --force || git push --set-upstream origin $DEPLOY_BRANCH

.github/workflows/codeql-analysis.yml

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@ env:
88
on: [push, workflow_dispatch]
99

1010
jobs:
11-
analyze:
12-
name: 'Analyze'
13-
runs-on: 'ubuntu-24.04'
14-
11+
Analyze:
1512
strategy:
1613
fail-fast: false
1714

15+
runs-on: 'ubuntu-24.04'
16+
1817
steps:
19-
- name: 'Checkout Repository'
18+
- name: 'Checkout Code'
2019
uses: actions/checkout@v4
2120

2221
- name: 'Initialize CodeQL'
@@ -25,13 +24,17 @@ jobs:
2524
languages: 'cpp'
2625

2726
- run: |
27+
# Install Build Dependencies on Linux
28+
sudo apt-get update
29+
sudo apt-get install -y libgl1-mesa-dev libopengl-dev libegl1-mesa-dev libglvnd-dev libxext-dev libxrandr-dev libwayland-dev
30+
2831
# Download nCine-libraries, nCine Artifacts, and project data
29-
export OS=linux
30-
export CC=gcc
31-
export BRANCH_NAME=$(git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
32+
OS=linux
33+
CC=gcc
34+
BRANCH_NAME=$(git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
3235
33-
export LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/OS/'"$OS"'/'`
34-
export LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/COMPILER/'"$CC"'/'`
36+
LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/OS/'"$OS"'/'`
37+
LIBRARIES_BRANCH=`echo $LIBRARIES_BRANCH | sed 's/COMPILER/'"$CC"'/'`
3538
3639
cd ..
3740
git clone https://github.com/nCine/nCine-libraries-artifacts.git
@@ -43,10 +46,10 @@ jobs:
4346
cd ..
4447
rm -rf nCine-libraries-artifacts
4548
46-
export NCINE_SOURCE_BRANCH=`echo $NCINE_SOURCE_BRANCH | sed 's/BRANCH_NAME/'"$BRANCH_NAME"'/'`
47-
export NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/BRANCH_NAME/'"$NCINE_SOURCE_BRANCH"'/'`
48-
export NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/OS/'"$OS"'/'`
49-
export NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/COMPILER/'"$CC"'/'`
49+
NCINE_SOURCE_BRANCH=`echo $NCINE_SOURCE_BRANCH | sed 's/BRANCH_NAME/'"$BRANCH_NAME"'/'`
50+
NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/BRANCH_NAME/'"$NCINE_SOURCE_BRANCH"'/'`
51+
NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/OS/'"$OS"'/'`
52+
NCINE_BRANCH=`echo $NCINE_BRANCH | sed 's/COMPILER/'"$CC"'/'`
5053
git clone https://github.com/nCine/nCine-artifacts.git
5154
cd nCine-artifacts
5255
git checkout $NCINE_BRANCH
@@ -61,14 +64,12 @@ jobs:
6164
git clone https://github.com/$GITHUB_REPOSITORY-data.git
6265
6366
# CMake Configuration and Make
64-
export PROJECT_NAME=${GITHUB_REPOSITORY##*/}
65-
export NCINE_DIRECTORY=$(pwd)/nCine/lib/cmake/nCine
66-
export BuildType=Debug
67+
PROJECT_NAME=${GITHUB_REPOSITORY##*/}
68+
NCINE_DIRECTORY=$(pwd)/nCine/lib/cmake/nCine
69+
BuildType=Debug
6770
6871
cd $PROJECT_NAME
69-
cmake -B ../$PROJECT_NAME-build-$BuildType -D CMAKE_BUILD_TYPE=$BuildType -D nCine_DIR=$NCINE_DIRECTORY
70-
71-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/../nCine-external/lib
72+
cmake -B ../$PROJECT_NAME-build-$BuildType -D CMAKE_BUILD_TYPE=$BuildType -D nCine_DIR=$NCINE_DIRECTORY -D CMAKE_PREFIX_PATH=$(pwd)/../nCine-external
7273
make -j $(getconf _NPROCESSORS_ONLN) -C ../$PROJECT_NAME-build-$BuildType
7374
7475
- name: 'Perform CodeQL Analysis'

0 commit comments

Comments
 (0)