forked from vcmi/vcmi
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add markdown validation in Github workflow
- Loading branch information
1 parent
d4b2ec5
commit afda738
Showing
2 changed files
with
295 additions
and
368 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,374 +14,6 @@ env: | |
BUILD_TYPE: Release | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
include: | ||
- platform: linux-qt6 | ||
os: ubuntu-24.04 | ||
test: 0 | ||
before_install: linux_qt6.sh | ||
preset: linux-clang-test | ||
- platform: linux | ||
os: ubuntu-24.04 | ||
test: 1 | ||
before_install: linux_qt5.sh | ||
preset: linux-gcc-test | ||
- platform: linux | ||
os: ubuntu-20.04 | ||
test: 0 | ||
before_install: linux_qt5.sh | ||
preset: linux-gcc-debug | ||
- platform: mac-intel | ||
os: macos-13 | ||
test: 0 | ||
pack: 1 | ||
upload: 1 | ||
pack_type: Release | ||
extension: dmg | ||
before_install: macos.sh | ||
preset: macos-conan-ninja-release | ||
conan_profile: macos-intel | ||
conan_prebuilts: dependencies-mac-intel | ||
conan_options: --options with_apple_system_libs=True | ||
artifact_platform: intel | ||
- platform: mac-arm | ||
os: macos-13 | ||
test: 0 | ||
pack: 1 | ||
upload: 1 | ||
pack_type: Release | ||
extension: dmg | ||
before_install: macos.sh | ||
preset: macos-arm-conan-ninja-release | ||
conan_profile: macos-arm | ||
conan_prebuilts: dependencies-mac-arm | ||
conan_options: --options with_apple_system_libs=True | ||
artifact_platform: arm | ||
- platform: ios | ||
os: macos-13 | ||
test: 0 | ||
pack: 1 | ||
upload: 1 | ||
pack_type: Release | ||
extension: ipa | ||
before_install: macos.sh | ||
preset: ios-release-conan-ccache | ||
conan_profile: ios-arm64 | ||
conan_prebuilts: dependencies-ios | ||
conan_options: --options with_apple_system_libs=True | ||
- platform: msvc-x64 | ||
os: windows-latest | ||
test: 0 | ||
pack: 1 | ||
upload: 1 | ||
pack_type: RelWithDebInfo | ||
extension: exe | ||
before_install: msvc.sh | ||
preset: windows-msvc-release | ||
- platform: msvc-x86 | ||
os: windows-latest | ||
test: 0 | ||
pack: 1 | ||
pack_type: RelWithDebInfo | ||
extension: exe | ||
before_install: msvc.sh | ||
preset: windows-msvc-release-x86 | ||
- platform: mingw_x86_64 | ||
os: ubuntu-24.04 | ||
test: 0 | ||
pack: 1 | ||
pack_type: Release | ||
extension: exe | ||
cmake_args: -G Ninja | ||
before_install: mingw.sh | ||
preset: windows-mingw-conan-linux | ||
conan_profile: mingw64-linux.jinja | ||
conan_prebuilts: dependencies-mingw-x86-64 | ||
- platform: mingw_x86 | ||
os: ubuntu-24.04 | ||
test: 0 | ||
pack: 1 | ||
pack_type: Release | ||
extension: exe | ||
cmake_args: -G Ninja | ||
before_install: mingw.sh | ||
preset: windows-mingw-conan-linux | ||
conan_profile: mingw32-linux.jinja | ||
conan_prebuilts: dependencies-mingw-x86 | ||
- platform: android-32 | ||
os: ubuntu-24.04 | ||
upload: 1 | ||
extension: apk | ||
preset: android-conan-ninja-release | ||
before_install: android.sh | ||
conan_profile: android-32-ndk | ||
conan_prebuilts: dependencies-android-armeabi-v7a | ||
artifact_platform: armeabi-v7a | ||
- platform: android-64 | ||
os: ubuntu-24.04 | ||
upload: 1 | ||
extension: apk | ||
preset: android-conan-ninja-release | ||
before_install: android.sh | ||
conan_profile: android-64-ndk | ||
conan_prebuilts: dependencies-android-arm64-v8a | ||
artifact_platform: arm64-v8a | ||
runs-on: ${{ matrix.os }} | ||
defaults: | ||
run: | ||
shell: bash | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Prepare CI | ||
if: "${{ matrix.before_install != '' }}" | ||
run: source '${{github.workspace}}/CI/before_install/${{matrix.before_install}}' | ||
env: | ||
VCMI_BUILD_PLATFORM: x64 | ||
|
||
- name: Install Conan Dependencies | ||
if: "${{ matrix.conan_prebuilts != '' }}" | ||
run: source '${{github.workspace}}/CI/install_conan_dependencies.sh' '${{matrix.conan_prebuilts}}' | ||
|
||
- name: Install vcpkg Dependencies | ||
if: ${{ startsWith(matrix.platform, 'msvc') }} | ||
run: source '${{github.workspace}}/CI/install_vcpkg_dependencies.sh' '${{matrix.platform}}' | ||
|
||
# ensure the ccache for each PR is separate so they don't interfere with each other | ||
# fall back to ccache of the vcmi/vcmi repo if no PR-specific ccache is found | ||
- name: ccache for PRs | ||
uses: hendrikmuhs/[email protected] | ||
if: ${{ github.event.number != '' }} | ||
with: | ||
key: ${{ matrix.preset }}-PR-${{ github.event.number }} | ||
restore-keys: | | ||
${{ matrix.preset }}-PR-${{ github.event.number }} | ||
${{ matrix.preset }}-no-PR | ||
# actual cache takes up less space, at most ~1 GB | ||
max-size: "5G" | ||
verbose: 2 | ||
|
||
- name: ccache for everything but PRs | ||
uses: hendrikmuhs/[email protected] | ||
if: ${{ (github.repository == 'vcmi/vcmi' && github.event.number == '' && (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/beta' || github.ref == 'refs/heads/master')) || github.repository != 'vcmi/vcmi' }} | ||
with: | ||
key: ${{ matrix.preset }}-no-PR | ||
restore-keys: | | ||
${{ matrix.preset }}-no-PR | ||
# actual cache takes up less space, at most ~1 GB | ||
max-size: "5G" | ||
verbose: 2 | ||
|
||
- name: Prepare Heroes 3 data | ||
env: | ||
HEROES_3_DATA_PASSWORD: ${{ secrets.HEROES_3_DATA_PASSWORD }} | ||
if: ${{ env.HEROES_3_DATA_PASSWORD != '' && matrix.test == 1 }} | ||
run: | | ||
if [[ ${{github.repository_owner}} == vcmi ]] | ||
then | ||
data_url="https://github.com/vcmi-mods/vcmi-test-data/releases/download/v1.0/h3_assets.zip" | ||
else | ||
data_url="https://github.com/${{github.repository_owner}}/vcmi-test-data/releases/download/v1.0/h3_assets.zip" | ||
fi | ||
wget --progress=dot:giga "$data_url" -O h3_assets.zip | ||
7za x h3_assets.zip -p$HEROES_3_DATA_PASSWORD | ||
mkdir -p ~/.local/share/vcmi/ | ||
mv h3_assets/* ~/.local/share/vcmi/ | ||
- name: Install Conan | ||
if: "${{ matrix.conan_profile != '' }}" | ||
run: pipx install 'conan<2.0' | ||
|
||
- name: Install Conan profile | ||
if: "${{ matrix.conan_profile != '' }}" | ||
run: | | ||
conan profile new default --detect | ||
conan install . \ | ||
--install-folder=conan-generated \ | ||
--no-imports \ | ||
--build=never \ | ||
--profile:build=default \ | ||
--profile:host=CI/conan/${{ matrix.conan_profile }} \ | ||
${{ matrix.conan_options }} | ||
env: | ||
GENERATE_ONLY_BUILT_CONFIG: 1 | ||
|
||
# Workaround for gradle not discovering SDK that was installed via conan | ||
- name: Find Android NDK | ||
if: ${{ startsWith(matrix.platform, 'android') }} | ||
run: sudo ln -s -T /home/runner/.conan/data/android-ndk/r25c/_/_/package/4db1be536558d833e52e862fd84d64d75c2b3656/bin /usr/local/lib/android/sdk/ndk/25.2.9519653 | ||
|
||
- name: Install Java | ||
uses: actions/setup-java@v4 | ||
if: ${{ startsWith(matrix.platform, 'android') }} | ||
with: | ||
distribution: 'temurin' | ||
java-version: '11' | ||
|
||
# a hack to build ID for x64 build in order for Google Play to allow upload of both 32 and 64 bit builds | ||
- name: Bump Android x64 build ID | ||
if: ${{ matrix.platform == 'android-64' }} | ||
run: perl -i -pe 's/versionCode (\d+)/$x=$1+1; "versionCode $x"/e' android/vcmi-app/build.gradle | ||
|
||
- name: Build Number | ||
run: | | ||
source '${{github.workspace}}/CI/get_package_name.sh' | ||
if [ '${{ matrix.artifact_platform }}' ]; then | ||
VCMI_PACKAGE_FILE_NAME+="-${{ matrix.artifact_platform }}" | ||
fi | ||
echo VCMI_PACKAGE_FILE_NAME="$VCMI_PACKAGE_FILE_NAME" >> $GITHUB_ENV | ||
echo VCMI_PACKAGE_NAME_SUFFIX="$VCMI_PACKAGE_NAME_SUFFIX" >> $GITHUB_ENV | ||
echo VCMI_PACKAGE_GOLDMASTER="$VCMI_PACKAGE_GOLDMASTER" >> $GITHUB_ENV | ||
env: | ||
PULL_REQUEST: ${{ github.event.pull_request.number }} | ||
|
||
- name: Configure | ||
run: | | ||
if [[ ${{matrix.preset}} == linux-gcc-test ]] | ||
then | ||
cmake -DENABLE_CCACHE:BOOL=ON -DCMAKE_C_COMPILER=gcc-14 -DCMAKE_CXX_COMPILER=g++-14 --preset ${{ matrix.preset }} | ||
elif [[ (${{matrix.preset}} == android-conan-ninja-release) && (${{github.ref}} != 'refs/heads/master') ]] | ||
then | ||
cmake -DENABLE_CCACHE:BOOL=ON -DANDROID_GRADLE_PROPERTIES="applicationIdSuffix=.daily;signingConfig=dailySigning;applicationLabel=VCMI daily" --preset ${{ matrix.preset }} | ||
elif [[ ${{startsWith(matrix.platform, 'msvc') }} ]] | ||
then | ||
cmake --preset ${{ matrix.preset }} | ||
else | ||
cmake -DENABLE_CCACHE:BOOL=ON --preset ${{ matrix.preset }} | ||
fi | ||
- name: Build | ||
run: | | ||
cmake --build --preset ${{matrix.preset}} | ||
env: | ||
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }} | ||
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} | ||
|
||
- name: Test | ||
env: | ||
HEROES_3_DATA_PASSWORD: ${{ secrets.HEROES_3_DATA_PASSWORD }} | ||
if: ${{ env.HEROES_3_DATA_PASSWORD != '' && matrix.test == 1 }} | ||
run: | | ||
ctest --preset ${{matrix.preset}} | ||
- name: Kill XProtect to work around CPack issue on macOS | ||
if: ${{ startsWith(matrix.platform, 'mac') }} | ||
run: | | ||
# Cf. https://github.com/actions/runner-images/issues/7522#issuecomment-1556766641 | ||
echo Killing...; sudo pkill -9 XProtect >/dev/null || true; | ||
echo "Waiting..."; counter=0; while pgrep XProtect && ((counter < 20)); do sleep 3; ((counter++)); done | ||
pgrep XProtect || true | ||
- name: Pack | ||
id: cpack | ||
if: ${{ matrix.pack == 1 }} | ||
run: | | ||
cd '${{github.workspace}}/out/build/${{matrix.preset}}' | ||
# Workaround for CPack bug on macOS 13 | ||
counter=0 | ||
until cpack -C ${{matrix.pack_type}} || ((counter > 20)); do | ||
sleep 3 | ||
((counter++)) | ||
done | ||
rm -rf _CPack_Packages | ||
- name: Artifacts | ||
if: ${{ matrix.pack == 1 }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }} | ||
compression-level: 0 | ||
path: | | ||
${{github.workspace}}/out/build/${{matrix.preset}}/${{ env.VCMI_PACKAGE_FILE_NAME }}.${{ matrix.extension }} | ||
- name: Find Android package | ||
if: ${{ startsWith(matrix.platform, 'android') }} | ||
run: | | ||
builtApkPath="$(ls ${{ github.workspace }}/out/build/${{ matrix.preset }}/android-build/vcmi-app/build/outputs/apk/release/*.${{ matrix.extension }})" | ||
builtAabPath="$(ls ${{ github.workspace }}/out/build/${{ matrix.preset }}/android-build/vcmi-app/build/outputs/bundle/release/*.aab)" | ||
ANDROID_APK_PATH="${{ github.workspace }}/$VCMI_PACKAGE_FILE_NAME.${{ matrix.extension }}" | ||
ANDROID_AAB_PATH="${{ github.workspace }}/$VCMI_PACKAGE_FILE_NAME.aab" | ||
mv "$builtApkPath" "$ANDROID_APK_PATH" | ||
mv "$builtAabPath" "$ANDROID_AAB_PATH" | ||
echo "ANDROID_APK_PATH=$ANDROID_APK_PATH" >> $GITHUB_ENV | ||
echo "ANDROID_AAB_PATH=$ANDROID_AAB_PATH" >> $GITHUB_ENV | ||
- name: Upload android apk artifacts | ||
if: ${{ startsWith(matrix.platform, 'android') }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }} | ||
compression-level: 0 | ||
path: | | ||
${{ env.ANDROID_APK_PATH }} | ||
- name: Upload Android aab artifacts | ||
if: ${{ startsWith(matrix.platform, 'android') && github.ref == 'refs/heads/master' }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }} - aab | ||
compression-level: 0 | ||
path: | | ||
${{ env.ANDROID_AAB_PATH }} | ||
- name: Upload debug symbols | ||
if: ${{ startsWith(matrix.platform, 'msvc') }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} - ${{ matrix.platform }} - symbols | ||
compression-level: 9 | ||
path: | | ||
${{github.workspace}}/**/*.pdb | ||
- name: Upload build | ||
if: ${{ (matrix.upload == 1) && (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/beta' || github.ref == 'refs/heads/master') }} | ||
continue-on-error: true | ||
run: | | ||
if [ -z '${{ env.ANDROID_APK_PATH }}' ] ; then | ||
cd '${{github.workspace}}/out/build/${{matrix.preset}}' | ||
fi | ||
source '${{github.workspace}}/CI/upload_package.sh' | ||
env: | ||
DEPLOY_RSA: ${{ secrets.DEPLOY_RSA }} | ||
PACKAGE_EXTENSION: ${{ matrix.extension }} | ||
|
||
deploy-src: | ||
if: always() && github.ref == 'refs/heads/master' | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Build Number | ||
run: | | ||
source '${{github.workspace}}/CI/get_package_name.sh' | ||
echo VCMI_PACKAGE_FILE_NAME="$VCMI_PACKAGE_FILE_NAME" >> $GITHUB_ENV | ||
- name: Create source code archive (including submodules) | ||
run: | | ||
git archive HEAD -o "release.tar" --worktree-attributes -v | ||
git submodule update --init --recursive | ||
git submodule --quiet foreach 'cd "$toplevel"; tar -rvf "release.tar" "$sm_path"' | ||
gzip release.tar | ||
- name: Upload source code archive | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ${{ env.VCMI_PACKAGE_FILE_NAME }} | ||
path: | | ||
./release.tar.gz | ||
validate-code: | ||
if: always() | ||
runs-on: ubuntu-24.04 | ||
|
@@ -402,3 +34,13 @@ jobs: | |
run: | | ||
sudo apt install python3-jstyleson | ||
python3 CI/validate_json.py | ||
- name: Validate Markdown | ||
uses: DavidAnson/markdownlint-cli2-action@v18 | ||
with: | ||
config: 'CI/example.markdownlint-cli2.jsonc' | ||
fix: true | ||
globs: '**/*.md' | ||
|
||
- name Commit Changes | ||
uses: stefanzweifel/git-auto-commit-action@v5 |
Oops, something went wrong.