fix(apns): proper handling of the wrong CA in APNS certificate (#343) #802
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: ci | |
on: | |
pull_request: | |
paths-ignore: | |
- ".github/**" | |
- "spec/**" | |
- "terraform/**" | |
- "*.md" | |
- "LICENSE" | |
push: | |
branches: | |
- "main" | |
paths-ignore: | |
- ".github/**" | |
- "spec/**" | |
- "terraform/**" | |
- "*.md" | |
- "LICENSE" | |
workflow_call: | |
concurrency: | |
# Support push/pr as event types with different behaviors each: | |
# 1. push: queue up builds | |
# 2. pr: only allow one run per PR | |
group: ${{ github.workflow }}-${{ github.event.type }}${{ github.event.pull_request.number }} | |
# If there is already a workflow running for the same pull request, cancel it | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
jobs: | |
tasks: | |
name: "[${{ matrix.os }}/rust-${{matrix.cargo.rustc}}] ${{ matrix.cargo.name }}" | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres | |
env: | |
POSTGRES_HOST_AUTH_METHOD: trust | |
ports: | |
- 5432:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
postgres-tenant: | |
image: postgres | |
env: | |
POSTGRES_HOST_AUTH_METHOD: trust | |
ports: | |
- 5433:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
cargo: | |
- name: "Clippy default features" | |
cmd: clippy | |
args: --tests -- -D warnings | |
cache: {} | |
rustc: stable | |
- name: "Clippy multitenant feature, no analytics feature" | |
cmd: clippy | |
args: --features=multitenant --tests -- -D warnings | |
cache: {} | |
rustc: stable | |
- name: "Clippy all features" | |
cmd: clippy | |
args: --all-features --all-targets -- -D warnings | |
cache: {} | |
rustc: stable | |
- name: "Formatting" | |
cmd: fmt | |
args: -- --check | |
cache: {} | |
rustc: nightly | |
- name: "Unit Tests" | |
cmd: test | |
args: --features multitenant,analytics,geoblock,functional_tests,apns_tests,fcm_tests,fcmv1_tests | |
cache: { sharedKey: "tests" } | |
rustc: stable | |
- name: "Single-tenant functional tests" | |
cmd: test | |
args: --features functional_tests | |
cache: { sharedKey: "tests" } | |
rustc: stable | |
include: | |
- os: ubuntu-latest | |
sccache-path: /home/runner/.cache/sccache | |
env: | |
RUST_BACKTRACE: full | |
RUSTC_WRAPPER: sccache | |
SCCACHE_CACHE_SIZE: 1G | |
SCCACHE_DIR: ${{ matrix.sccache-path }} | |
# Unit test environment variables dependencies | |
DATABASE_URL: postgres://postgres:root@localhost:5432/postgres | |
TENANT_DATABASE_URL: postgres://postgres:root@localhost:5433/postgres | |
RELAY_PUBLIC_KEY: ${{ secrets.RELAY_PUBLIC_KEY }} | |
JWT_SECRET: ${{ secrets.JWT_SECRET }} | |
steps: | |
# Checkout code | |
- name: "Git checkout" | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
token: ${{ secrets.RELEASE_PAT }} | |
# Install sccache | |
- name: "Install sccache" | |
if: matrix.os == 'ubuntu-latest' | |
env: | |
SCCACHE_URL: https://github.com/mozilla/sccache/releases/download | |
SCCACHE_VERSION: v0.2.15 | |
run: | | |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl | |
curl -sSL "$SCCACHE_URL/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz | |
install -vDm 755 "$SCCACHE_FILE/sccache" "$HOME/.local/bin/sccache" | |
echo "$HOME/.local/bin" >> "$GITHUB_PATH" | |
# Install Rust toolchain | |
- name: "Install Rust ${{ matrix.rust }}" | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.cargo.rustc }} | |
profile: minimal | |
override: true | |
components: rustfmt, clippy | |
# Rebuild cache | |
- name: Cache cargo registry | |
uses: Swatinem/rust-cache@3bb3a9a087029c7bc392586cdc88cb6f66b9c6ef | |
with: ${{ matrix.cargo.cache }} | |
continue-on-error: false | |
- name: Cache sccache | |
uses: actions/cache@v2 | |
continue-on-error: false | |
with: | |
path: ${{ matrix.sccache-path }} | |
key: ${{ runner.os }}-sccache-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-sccache- | |
# Run job | |
- name: "Start sccache server" | |
run: | | |
sccache --stop-server || true | |
sccache --start-server | |
- name: Install lld and llvm | |
run: sudo apt-get install -y lld llvm | |
# TODO: Remove once https://crates.io/crates/opentelemetry-otlp is updated | |
# and no longer has a build requirement of `protoc``. | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Task ${{ matrix.cargo.name }}" | |
uses: actions-rs/cargo@v1 | |
with: | |
command: ${{ matrix.cargo.cmd }} | |
args: ${{ matrix.cargo.args }} | |
env: | |
ECHO_TEST_FCM_KEY: ${{ secrets.ECHO_TEST_FCM_KEY }} | |
ECHO_TEST_FCM_V1_CREDENTIALS: ${{ secrets.ECHO_TEST_FCM_V1_CREDENTIALS }} | |
ECHO_TEST_APNS_P8_KEY_ID: ${{ secrets.ECHO_TEST_APNS_P8_KEY_ID }} | |
ECHO_TEST_APNS_P8_TEAM_ID: ${{ secrets.ECHO_TEST_APNS_P8_TEAM_ID }} | |
ECHO_TEST_APNS_P8_PEM: ${{ secrets.ECHO_TEST_APNS_P8_PEM }} | |
- name: "Print sccache stats" | |
run: sccache --show-stats | |
- name: "Stop sccache server" | |
run: sccache --stop-server || true |