diff --git a/.github/workflows/build-extension.yml b/.github/workflows/build-extension.yml index 4164089..9c267a1 100644 --- a/.github/workflows/build-extension.yml +++ b/.github/workflows/build-extension.yml @@ -16,16 +16,23 @@ jobs: build: runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: + os: [ubuntu-latest, ubuntu-24.04-arm] + php: ["8.2", "8.3", "8.4", "8.5"] include: - os: ubuntu-latest arch: amd64 - - os: ubuntu-24.04-arm + - os: ubuntu-24.04-arm arch: arm64 steps: - name: Checkout uses: actions/checkout@v4 - - name: Build and push + + - name: Build run: | - IMAGE=${{ env.REGISTRY }}/${{ github.repository }}:latest - docker build -t ${IMAGE}-${{matrix.arch}} --build-arg=PHP_VERSION=8.4 extension + IMAGE=${{ env.REGISTRY }}/${{ github.repository }}:latest + docker build \ + -t ${IMAGE}-php${{ matrix.php }}-${{ matrix.arch }} \ + --build-arg=PHP_VERSION=${{ matrix.php }} \ + extension\ diff --git a/.github/workflows/release-extension.yml b/.github/workflows/release-extension.yml index 8884817..01132d5 100644 --- a/.github/workflows/release-extension.yml +++ b/.github/workflows/release-extension.yml @@ -42,6 +42,7 @@ jobs: run: | IMAGE=${{ env.REGISTRY }}/${{ github.repository }}-extension:${{ github.ref_name }} cd extension + docker build --no-cache --build-arg=PHP_VERSION=8.5 -t ${IMAGE}-php8.5-${{ matrix.arch }} . docker build --no-cache --build-arg=PHP_VERSION=8.4 -t ${IMAGE}-php8.4-${{ matrix.arch }} . docker build --no-cache --build-arg=PHP_VERSION=8.3 -t ${IMAGE}-php8.3-${{ matrix.arch }} . docker build --no-cache --build-arg=PHP_VERSION=8.2 -t ${IMAGE}-php8.2-${{ matrix.arch }} . @@ -49,10 +50,10 @@ jobs: - name: ☁️ Push run: | IMAGE=${{ env.REGISTRY }}/${{ github.repository }}-extension:${{ github.ref_name }} + docker push ${IMAGE}-php8.5-${{matrix.arch}} docker push ${IMAGE}-php8.4-${{matrix.arch}} docker push ${IMAGE}-php8.3-${{matrix.arch}} docker push ${IMAGE}-php8.2-${{matrix.arch}} - manifest: name: Manifest runs-on: ubuntu-latest @@ -75,6 +76,8 @@ jobs: - name: ☁️ Push run: | IMAGE=${{ env.REGISTRY }}/${{ github.repository }}-extension:${{ github.ref_name }} + docker manifest create ${IMAGE}-php8.5 --amend ${IMAGE}-php8.5-arm64 --amend ${IMAGE}-php8.5-amd64 + docker manifest push ${IMAGE}-php8.5 docker manifest create ${IMAGE}-php8.4 --amend ${IMAGE}-php8.4-arm64 --amend ${IMAGE}-php8.4-amd64 docker manifest push ${IMAGE}-php8.4 docker manifest create ${IMAGE}-php8.3 --amend ${IMAGE}-php8.3-arm64 --amend ${IMAGE}-php8.3-amd64 diff --git a/extension/.devcontainer/Dockerfile b/extension/.devcontainer/Dockerfile index 12a86ab..04cc054 100644 --- a/extension/.devcontainer/Dockerfile +++ b/extension/.devcontainer/Dockerfile @@ -1,11 +1,16 @@ -FROM ghcr.io/skpr/php-cli:8.4-v2-stable +FROM alpine:3.21 USER root +RUN apk add --no-cache curl && \ + curl -sSL https://packages.skpr.io/php-alpine/skpr.rsa.pub -o /etc/apk/keys/skpr.rsa.pub && \ + echo "https://packages.skpr.io/php-alpine/3.21/php8.4" >> /etc/apk/repositories + RUN apk add alpine-sdk \ clang \ clang-dev \ git \ + php8.4 \ php8.4-dev ENV MISE_DATA_DIR="/mise" @@ -19,3 +24,6 @@ RUN curl https://mise.run | sh ENV RUSTFLAGS="-C target-feature=-crt-static" ENV RUST_BACKTRACE=full + +WORKDIR /data + diff --git a/extension/Cargo.lock b/extension/Cargo.lock index e19188a..d4b4029 100644 --- a/extension/Cargo.lock +++ b/extension/Cargo.lock @@ -430,8 +430,7 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "phper" version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632a47a271e31b5bce52924abfdeedbbd1de80972aecacee7abc566c788c9a2b" +source = "git+https://github.com/phper-framework/phper.git?rev=0689edbb59ec09adda90403c173c373949066ec5#0689edbb59ec09adda90403c173c373949066ec5" dependencies = [ "cfg-if", "derive_more", @@ -447,8 +446,7 @@ dependencies = [ [[package]] name = "phper-alloc" version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a188ae2a830b7552466093a9acc24e620a6a8678f0bb00384eac8e05cba66c8" +source = "git+https://github.com/phper-framework/phper.git?rev=0689edbb59ec09adda90403c173c373949066ec5#0689edbb59ec09adda90403c173c373949066ec5" dependencies = [ "phper-build", "phper-sys", @@ -457,8 +455,7 @@ dependencies = [ [[package]] name = "phper-build" version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3158c29309413a44b2bb80c17d0da09b53df071284f0c4687a232f0787f56a38" +source = "git+https://github.com/phper-framework/phper.git?rev=0689edbb59ec09adda90403c173c373949066ec5#0689edbb59ec09adda90403c173c373949066ec5" dependencies = [ "phper-sys", ] @@ -466,8 +463,7 @@ dependencies = [ [[package]] name = "phper-macros" version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dc718c423b154a612117abcc3f0978a8ce9e295d6a80dba6b1b3a7fad3e0ddf" +source = "git+https://github.com/phper-framework/phper.git?rev=0689edbb59ec09adda90403c173c373949066ec5#0689edbb59ec09adda90403c173c373949066ec5" dependencies = [ "proc-macro2", "quote", @@ -477,8 +473,7 @@ dependencies = [ [[package]] name = "phper-sys" version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758c37b62c9aa4e4aaf1a04ffdd7631b886fc7086db651fe3d4c0097bc101428" +source = "git+https://github.com/phper-framework/phper.git?rev=0689edbb59ec09adda90403c173c373949066ec5#0689edbb59ec09adda90403c173c373949066ec5" dependencies = [ "bindgen", "cc", diff --git a/extension/Cargo.toml b/extension/Cargo.toml index f00ff81..73724c7 100644 --- a/extension/Cargo.toml +++ b/extension/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["lib", "cdylib"] [dependencies] anyhow = "1.0.100" coarsetime = "0.1.36" -phper = "0.17.1" +phper = { git = "https://github.com/phper-framework/phper.git", rev = "0689edbb59ec09adda90403c173c373949066ec5" } probe = "0.5.2" once_cell = "1.21.3" nix = "0.30.1" diff --git a/extension/Dockerfile b/extension/Dockerfile index 15a1801..7c1b106 100644 --- a/extension/Dockerfile +++ b/extension/Dockerfile @@ -1,11 +1,14 @@ ARG PHP_VERSION=8.3 -FROM ghcr.io/skpr/php-cli:${PHP_VERSION}-v2-stable AS build - +FROM alpine:3.21 AS build ARG PHP_VERSION=8.3 USER root -RUN apk add alpine-sdk clang clang-dev php${PHP_VERSION}-dev +RUN apk add --no-cache curl && \ + curl -sSL https://packages.skpr.io/php-alpine/skpr.rsa.pub -o /etc/apk/keys/skpr.rsa.pub && \ + echo "https://packages.skpr.io/php-alpine/3.21/php${PHP_VERSION}" >> /etc/apk/repositories + +RUN apk add alpine-sdk clang clang-dev php${PHP_VERSION} php${PHP_VERSION}-dev ENV MISE_DATA_DIR="/mise" ENV MISE_CONFIG_DIR="/mise" @@ -18,6 +21,8 @@ RUN curl https://mise.run | sh ENV RUSTFLAGS="-C target-feature=-crt-static" ENV RUST_BACKTRACE=full +WORKDIR /data + ADD --chown=skpr:skpr . /data RUN mise trust . @@ -25,7 +30,7 @@ RUN mise run lint RUN mise run build RUN mise run validate -FROM ghcr.io/skpr/php-cli:${PHP_VERSION}-v2-stable +FROM scratch COPY compass.ini /etc/php/conf.d/00_compass.ini COPY --from=build /data/target/release/libcompass_extension.so /usr/lib/php/modules/compass.so