Commit Graph

7 Commits

  • ci: publish codex-app-server release artifacts (#19447)
    ## Why
    The VS Code extension and desktop app do not need the full TUI binary,
    and `codex-app-server` is materially smaller than standalone `codex`. We
    still want to publish it as an official release artifact, but building
    it by tacking another `--bin` onto the existing release `cargo build`
    invocations would lengthen those jobs.
    
    This change keeps `codex-app-server` on its own release bundle so it can
    build in parallel with the existing `codex` and helper bundles.
    
    ## What changed
    - Made `.github/workflows/rust-release.yml` bundle-aware so each macOS
    and Linux MUSL target now builds either the existing `primary` bundle
    (`codex` and `codex-responses-api-proxy`) or a standalone `app-server`
    bundle (`codex-app-server`).
    - Preserved the historical artifact names for the primary macOS/Linux
    bundles so `scripts/stage_npm_packages.py` and
    `codex-cli/scripts/install_native_deps.py` continue to find release
    assets under the paths they already expect, while giving the new
    app-server artifacts distinct names.
    - Added a matching `app-server` bundle to
    `.github/workflows/rust-release-windows.yml`, and updated the final
    Windows packaging job to download, sign, stage, and archive
    `codex-app-server.exe` alongside the existing release binaries.
    - Generalized the shared signing actions in
    `.github/actions/linux-code-sign/action.yml`,
    `.github/actions/macos-code-sign/action.yml`, and
    `.github/actions/windows-code-sign/action.yml` so each workflow row
    declares its binaries once and reuses that list for build, signing, and
    staging.
    - Added `codex-app-server` to `.github/dotslash-config.json` so releases
    also publish a generated DotSlash manifest for the standalone app-server
    binary.
    - Kept the macOS DMG focused on the existing `primary` bundle;
    `codex-app-server` ships as the regular standalone archives and DotSlash
    manifest.
    
    ## Verification
    - Parsed the modified workflow and action YAML files locally with
    `python3` + `yaml.safe_load(...)`.
    - Parsed `.github/dotslash-config.json` locally with `python3` +
    `json.loads(...)`.
    - Reviewed the resulting release matrices, artifact names, and packaging
    paths to confirm that `codex-app-server` is built separately on macOS,
    Linux MUSL, and Windows, while the existing npm staging and Windows
    `codex` zip bundling contracts remain intact.
  • ci: add macOS keychain entitlements (#19167)
    ## Summary
    
    - add macOS application and team identifiers to the release signing
    entitlements
    - add a Codex keychain access group for release-signed macOS binaries
    - keep the existing JIT entitlement unchanged
    
    ## Why
    
    Codex release binaries are signed with the OpenAI Developer ID team, but
    the current entitlements plist only grants JIT. macOS Keychain and
    Secure Enclave operations that create persistent keys can require the
    process to carry an application identifier and keychain access group.
    Adding these entitlements gives release-signed binaries a stable
    Keychain namespace for Codex-owned device keys.
    
    ## Validation
    
    - `plutil -lint
    .github/actions/macos-code-sign/codex.entitlements.plist`
  • Add JIT entitlement for macosx (#15409)
    Without this entitlement, hardened mac os release binaries are unable to
    allocate the executable memory for the JIT compiled JS.
    
    Tested with local signing.  Without entitlement I reproduce the error:
    ```
    #
    # Fatal process out of memory: Failed to reserve virtual memory for CodeRange
    #
    ==== C stack trace ===============================
    
        0   codex                               0x00000001075d1acc codex + 85760716
        1   codex                               0x00000001075d6a64 codex + 85781092
        2   codex                               0x00000001075c7100 codex + 85717248
        3   codex                               0x0000000107637394 codex + 86176660
        4   codex                               0x0000000107823cfc codex + 88194300
        5   codex                               0x000000010777c438 codex + 87508024
        6   codex                               0x000000010777d130 codex + 87511344
        7   codex                               0x0000000107c87a54 codex + 92797524
        8   codex                               0x0000000107641188 codex + 86217096
        9   codex                               0x00000001076412d8 codex + 86217432
        10  codex                               0x0000000107553908 codex + 85244168
        11  codex                               0x000000010465f124 codex + 36008228
        12  codex                               0x000000010466a0d0 codex + 36053200
        13  codex                               0x000000010466ce78 codex + 36064888
        14  codex                               0x000000010734edb0 codex + 83127728
        15  libsystem_pthread.dylib             0x00000001810d3c08 _pthread_start + 136
        16  libsystem_pthread.dylib             0x00000001810ceba8 thread_start + 8
    zsh: trace trap  target/release/codex exec --enable code_mode_only --enable code_mode --
    ```
    
    With the entitlement the exec succeeds.
  • fix: tighten up shell arg quoting in GitHub workflows (#14864)
    Inspired by the work done over in
    https://github.com/openai/codex-action/pull/74, this tightens up our use
    of GitHub expressions as shell/environment variables.
  • [release] Add a dmg target for MacOS (#8207)
    Add a dmg target that bundles the codex and codex responses api proxy
    binaries for MacOS. this target is signed and notarized.
    
    Verified by triggering a build here:
    https://github.com/openai/codex/actions/runs/20318136302/job/58367155205.
    Downloaded the artifact and verified that the dmg is signed and
    notarized, and the codex binary contained works as expected.
  • chore: mac codesign refactor (#8085)
    ### Summary
    Similar to our linux and windows codesign, moving mac codesign logic
    into its own files.