proj ci #621
Workflow file for this run
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
name: proj ci | |
on: | |
push: | |
branches: | |
- main | |
- staging | |
- trying | |
pull_request: | |
merge_group: | |
env: | |
LIBPROJ_VERSION: 9.4.0 | |
RUST_MSRV: "1.70" | |
RUST_LATEST: "1.77" | |
jobs: | |
# work around GHA env strictness | |
compute: | |
runs-on: ubuntu-latest | |
outputs: | |
RUST_MSRV: ${{ env.RUST_MSRV }} | |
RUST_LATEST: ${{ env.RUST_LATEST }} | |
LIBPROJ_VERSION: ${{ env.LIBPROJ_VERSION }} | |
steps: | |
- name: Compute outputs | |
run: | | |
echo "RUST_MSRV=${{ env.RUST_MSRV }}" >> $GITHUB_OUTPUT | |
echo "RUST_LATEST=${{ env.RUST_LATEST }}" >> $GITHUB_OUTPUT | |
echo "LIBPROJ_VERSION=${{ env.LIBPROJ_VERSION }}" >> $GITHUB_OUTPUT | |
# The `ci-result` job doesn't actually test anything - it just aggregates the | |
# overall build status, otherwise the merge queue would need an entry | |
# for each individual job produced by the job-matrix. | |
# | |
# Ref: https://github.com/rust-lang/crater/blob/9ab6f9697c901c4a44025cf0a39b73ad5b37d198/.github/workflows/bors.yml#L125-L149 | |
# | |
# ALL THE SUBSEQUENT JOBS NEED THEIR key ADDED TO THE `needs` SECTION OF THIS JOB! | |
ci-success: | |
name: ci result | |
runs-on: ubuntu-latest | |
if: ${{ success() }} | |
needs: | |
- proj-ubuntu | |
- proj-sys-ubuntu | |
- proj-macos | |
- proj-sys-macos | |
steps: | |
- name: Mark the job as a success | |
run: exit 0 | |
ci-failure: | |
name: ci result | |
runs-on: ubuntu-latest | |
if: ${{ failure() }} | |
needs: | |
- proj-ubuntu | |
- proj-sys-ubuntu | |
- proj-macos | |
- proj-sys-macos | |
steps: | |
- name: Mark the job as a failure | |
run: exit 1 | |
proj-ubuntu: | |
name: proj ubuntu | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
needs: compute | |
strategy: | |
fail-fast: false | |
matrix: | |
container_image: | |
# Minimum supported rust (MSRV) | |
- ghcr.io/georust/proj-ci:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_MSRV }} | |
# Latest stable rust | |
- ghcr.io/georust/proj-ci:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_LATEST }} | |
features: | |
- "" | |
- "--features network" | |
- "--features bundled_proj" | |
- "--no-default-features" | |
- "--features \"network bundled_proj\"" | |
- "--features \"network geo-types\"" | |
- "--features \"bundled_proj geo-types\"" | |
- "--features \"network bundled_proj geo-types\"" | |
container: | |
image: ${{ matrix.container_image }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- run: cargo build ${{ matrix.features }} | |
- run: cargo test ${{ matrix.features }} | |
proj-macos: | |
name: proj macos | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
features: ["", "--features network"] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- run: cargo build ${{ matrix.features }} | |
- run: cargo test ${{ matrix.features }} | |
proj-sys-ubuntu: | |
name: proj-sys ubuntu | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
needs: compute | |
defaults: | |
run: | |
working-directory: proj-sys | |
container: ${{ matrix.container }} | |
strategy: | |
matrix: | |
include: | |
# Minimum supported rust (MSRV) | |
- container: | |
image: ghcr.io/georust/proj-ci:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_MSRV }} | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 0 | |
features: "" | |
- container: | |
image: ghcr.io/georust/proj-ci:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_MSRV }} | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 1 | |
features: "--features bundled_proj" | |
- container: | |
image: ghcr.io/georust/proj-ci-without-system-proj:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_MSRV }} | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 1 | |
features: "" | |
# Latest stable rust | |
- container: | |
image: ghcr.io/georust/proj-ci:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_LATEST }} | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 0 | |
features: "" | |
- container: | |
image: ghcr.io/georust/proj-ci:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_LATEST }} | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 1 | |
features: "--features bundled_proj" | |
- container: | |
image: ghcr.io/georust/proj-ci-without-system-proj:proj-${{ needs.compute.outputs.LIBPROJ_VERSION }}-rust-${{ needs.compute.outputs.RUST_LATEST }} | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 1 | |
features: "" | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- run: cargo build ${{ matrix.features }} | |
- run: cargo test ${{ matrix.features }} | |
proj-sys-macos: | |
name: proj-sys macos | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: macos-latest | |
env: | |
_PROJ_SYS_TEST_EXPECT_BUILD_FROM_SRC: 0 | |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: TRUE | |
defaults: | |
run: | |
working-directory: proj-sys | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
# At some point around Feb. 2023, the GH macos CI runner no longer had | |
# pkg-config installed by default, so we need to install it manually. | |
# | |
# This PR (merged a couple days ago) adds pkg-config back to the macos | |
# build: https://github.com/actions/runner-images/pull/7125 | |
# | |
# but it seems like it hasn't been deployed yet. At some point we should | |
# be able to delete this step if CI passes. | |
- run: brew update | |
- run: brew install pkg-config | |
- run: brew install proj | |
- run: cargo test |