Skip to content

Make bearing a clockwise map rotation #7

Make bearing a clockwise map rotation

Make bearing a clockwise map rotation #7

Workflow file for this run

name: Build
# 単体ビルドの検証。
#
# ## なぜ要るのか
#
# このモジュールは android-sdk の集約ビルドと、自分だけの単体ビルドの
# 2 通りで組まれる。開発は集約ビルドで行うため、**単体ビルド側の設定が
# 静かに腐る。** 実際 1.3.0 のリリースでは、publish ワークフローを回して
# 初めて次のような不備がまとめて露見した:
#
# - gradlew / settings.gradle.kts が無くて ./gradlew が叩けない
# - version catalog に依存の定義が無い(集約側の catalog にはある)
# - coroutines が推移的に古い版になり 3 引数 resume が通らない
# - ベンダ SDK の版が集約ビルドと食い違う
#
# publish のときにしか単体ビルドしないと、リリース当日に気づくことになる。
# ここで PR ごとに回して、変更した時点で分かるようにする。
on:
pull_request:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: 'gradle'
- name: Fetch HERE SDK mock artifact
env:
GPR_USER: ${{ github.actor }}
GPR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p libs
target_path="libs/heresdk-explore-mock-4.23.2.0.210004.jar"
curl --fail --show-error --silent --location \
-u "$GPR_USER:$GPR_TOKEN" \
-o "$target_path" \
"https://raw.githubusercontent.com/MapConductor/here-sdk-mocks/main/heresdk-explore-mock-4.23.2.0.210004.jar"
if [ ! -s "$target_path" ]; then
echo "Failed to download HERE SDK mock artifact"
exit 1
fi
- name: Build core and compose locally
env:
HEAD_REF: ${{ github.head_ref }}
run: |
# コア側に PR と同名のブランチがあるなら、そちらを組む。
#
# ここを default ブランチ固定にしていると、**コアの未マージな変更に追随する
# PR は永久に赤いまま**になる。実際 CameraBearing をコアへ足したとき、
# プロバイダ側の PR が 10 本まとめて Unresolved reference で落ちた。
# コアが先にマージされるまで待つ、という運用は取り込み順の事故を呼ぶので、
# 同名ブランチがあれば拾う形にしてある(無ければ従来どおり default)。
clone_matching() {
repo="$1"; dir="$2"
url="https://github.com/MapConductor/$repo.git"
if [ -n "$HEAD_REF" ] && git ls-remote --exit-code --heads "$url" "$HEAD_REF" >/dev/null 2>&1; then
echo "$repo: matching branch $HEAD_REF"
git clone --depth 1 --branch "$HEAD_REF" "$url" "$dir"
else
echo "$repo: default branch"
git clone --depth 1 "$url" "$dir"
fi
}
clone_matching android-sdk-core _core
cd _core
./gradlew --no-daemon publishToMavenLocal
cd ..
mkdir -p "$HOME/.gradle/init.d"
cat > "$HOME/.gradle/init.d/use-local-maven.init.gradle" << 'EOF'
gradle.settingsEvaluated { settings ->
settings.dependencyResolutionManagement.repositories {
mavenLocal()
}
}
EOF
clone_matching android-sdk-compose _compose
cd _compose
./gradlew --no-daemon publishToMavenLocal
cd ..
# apiCheck は集約ビルド(android-sdk)の gradle/api-surface.gradle.kts が
# 提供するタスクで、単体ビルドには存在しない。ここでは組み立てだけを見る。
- name: Assemble
run: ./gradlew --no-daemon -PskipSampleApp=true assembleRelease