diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..cbcd6b3ec --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +commafeed-client \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c563ce47e..34c5bf6de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,7 @@ on: [ push ] env: JAVA_VERSION: 21 + DOCKER_BUILD_SUMMARY: false jobs: build-linux: @@ -53,7 +54,7 @@ jobs: # Docker - name: Login to Container Registry uses: docker/login-action@v3 - if: ${{ github.ref_type == 'tag' || github.ref_name == 'master' }} + if: ${{ github.ref_type == 'tag' || github.ref_name == 'master' || github.ref_name == 'quarkus' }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -63,32 +64,42 @@ jobs: uses: docker/build-push-action@v6 if: ${{ github.ref_type == 'tag' }} with: - context: commafeed-server - file: src/main/docker/Dockerfile.native + context: . + file: commafeed-server/src/main/docker/Dockerfile.native push: true + provenance: false platforms: linux/amd64 tags: | - athou/commafeed:latest-native - athou/commafeed:${{ github.ref_name }}-native + athou/commafeed:latest-${{ matrix.database }}-native + athou/commafeed:${{ github.ref_name }}-${{ matrix.database }}-native - name: Docker build and push tag - jvm uses: docker/build-push-action@v6 if: ${{ github.ref_type == 'tag' }} with: - context: commafeed-server - file: src/main/docker/Dockerfile.jvm + context: . + file: commafeed-server/src/main/docker/Dockerfile.jvm push: true + provenance: false platforms: linux/arm64/v8 tags: | - athou/commafeed:latest-jvm - athou/commafeed:${{ github.ref_name }}-jvm + athou/commafeed:latest-${{ matrix.database }}-jvm + athou/commafeed:${{ github.ref_name }}-${{ matrix.database }}-jvm + + - name: Docker merge latest manifests + uses: Noelware/docker-manifest-action@0.4.2 + if: ${{ github.ref_type == 'tag' }} + with: + inputs: athou/commafeed:latest-${{ matrix.database }} + images: athou/commafeed:latest-${{ matrix.database }}-native,athou/commafeed:latest-${{ matrix.database }}-jvm + push: true - name: Docker merge tag manifests uses: Noelware/docker-manifest-action@0.4.2 if: ${{ github.ref_type == 'tag' }} with: - inputs: athou/commafeed:latest - images: athou/commafeed:latest-native,athou/commafeed:latest-jvm + inputs: athou/commafeed:${{ github.ref_name }}-${{ matrix.database }} + images: athou/commafeed:${{ github.ref_name }}-${{ matrix.database }}-native,athou/commafeed:${{ github.ref_name }}-${{ matrix.database }}-jvm push: true ## master @@ -96,30 +107,64 @@ jobs: uses: docker/build-push-action@v6 if: ${{ github.ref_name == 'master' }} with: - context: commafeed-server - file: src/main/docker/Dockerfile.native + context: . + file: commafeed-server/src/main/docker/Dockerfile.native push: true + provenance: false platforms: linux/amd64 - tags: athou/commafeed:master-native + tags: athou/commafeed:master-${{ matrix.database }}-native - name: Docker build and push master - jvm uses: docker/build-push-action@v6 if: ${{ github.ref_name == 'master' }} with: - context: commafeed-server - file: src/main/docker/Dockerfile.jvm + context: . + file: commafeed-server/src/main/docker/Dockerfile.jvm push: true + provenance: false platforms: linux/arm64/v8 - tags: athou/commafeed:master-jvm + tags: athou/commafeed:master-${{ matrix.database }}-jvm - name: Docker merge master manifests uses: Noelware/docker-manifest-action@0.4.2 if: ${{ github.ref_name == 'master' }} with: - inputs: athou/commafeed:master - images: athou/commafeed:master-native,athou/commafeed:master-jvm + inputs: athou/commafeed:master-${{ matrix.database }} + images: athou/commafeed:master-${{ matrix.database }}-native,athou/commafeed:master-${{ matrix.database }}-jvm + push: true + + ## quarkus branch - remove when merged into master, also remove the condition in the login step + - name: Docker build and push quarkus - native + uses: docker/build-push-action@v6 + if: ${{ github.ref_name == 'quarkus' }} + with: + context: . + file: commafeed-server/src/main/docker/Dockerfile.native + push: true + provenance: false + platforms: linux/amd64 + tags: athou/commafeed:quarkus-${{ matrix.database }}-native + + - name: Docker build and push quarkus - jvm + uses: docker/build-push-action@v6 + if: ${{ github.ref_name == 'quarkus' }} + with: + context: . + file: commafeed-server/src/main/docker/Dockerfile.jvm + push: true + provenance: false + platforms: linux/arm64/v8 + tags: athou/commafeed:quarkus-${{ matrix.database }}-jvm + + - name: Docker merge quarkus manifests + uses: Noelware/docker-manifest-action@0.4.2 + if: ${{ github.ref_name == 'quarkus' }} + with: + inputs: athou/commafeed:quarkus-${{ matrix.database }} + images: athou/commafeed:quarkus-${{ matrix.database }}-native,athou/commafeed:quarkus-${{ matrix.database }}-jvm push: true + build-windows: runs-on: windows-latest strategy: diff --git a/commafeed-client/pom.xml b/commafeed-client/pom.xml index c55058fbf..753ee1ecf 100644 --- a/commafeed-client/pom.xml +++ b/commafeed-client/pom.xml @@ -6,7 +6,7 @@ com.commafeed commafeed - 4.6.0 + 5.0.0-beta commafeed-client CommaFeed Client diff --git a/commafeed-server/pom.xml b/commafeed-server/pom.xml index fbd54e207..95b2c2558 100644 --- a/commafeed-server/pom.xml +++ b/commafeed-server/pom.xml @@ -6,7 +6,7 @@ com.commafeed commafeed - 4.6.0 + 5.0.0-beta commafeed-server CommaFeed Server @@ -229,7 +229,7 @@ com.commafeed commafeed-client - 4.6.0 + 5.0.0-beta diff --git a/commafeed-server/src/main/java/com/commafeed/security/mechanism/CookieMaxAgeFormAuthenticationMechanism.java b/commafeed-server/src/main/java/com/commafeed/security/mechanism/CookieMaxAgeFormAuthenticationMechanism.java index 974457728..c5ffa5819 100644 --- a/commafeed-server/src/main/java/com/commafeed/security/mechanism/CookieMaxAgeFormAuthenticationMechanism.java +++ b/commafeed-server/src/main/java/com/commafeed/security/mechanism/CookieMaxAgeFormAuthenticationMechanism.java @@ -2,26 +2,20 @@ import java.security.SecureRandom; import java.util.Base64; -import java.util.Set; -import io.quarkus.security.identity.IdentityProviderManager; -import io.quarkus.security.identity.SecurityIdentity; -import io.quarkus.security.identity.request.AuthenticationRequest; import io.quarkus.vertx.http.runtime.FormAuthConfig; import io.quarkus.vertx.http.runtime.FormAuthRuntimeConfig; import io.quarkus.vertx.http.runtime.HttpBuildTimeConfig; import io.quarkus.vertx.http.runtime.HttpConfiguration; -import io.quarkus.vertx.http.runtime.security.ChallengeData; import io.quarkus.vertx.http.runtime.security.FormAuthenticationMechanism; import io.quarkus.vertx.http.runtime.security.HttpAuthenticationMechanism; -import io.quarkus.vertx.http.runtime.security.HttpCredentialTransport; import io.quarkus.vertx.http.runtime.security.PersistentLoginManager; -import io.smallrye.mutiny.Uni; import io.vertx.core.http.Cookie; import io.vertx.core.http.impl.ServerCookie; import io.vertx.ext.web.RoutingContext; import jakarta.annotation.Priority; import jakarta.inject.Singleton; +import lombok.experimental.Delegate; import lombok.extern.slf4j.Slf4j; /** @@ -37,6 +31,7 @@ public class CookieMaxAgeFormAuthenticationMechanism implements HttpAuthenticati // the temp encryption key, persistent across dev mode restarts static volatile String encryptionKey; + @Delegate private final FormAuthenticationMechanism delegate; public CookieMaxAgeFormAuthenticationMechanism(HttpConfiguration httpConfiguration, HttpBuildTimeConfig buildTimeConfig) { @@ -86,26 +81,6 @@ public void save(String value, RoutingContext context, String cookieName, Restor landingPage, redirectAfterLogin, locationCookie, cookieSameSite, cookiePath, loginManager); } - @Override - public Uni authenticate(RoutingContext context, IdentityProviderManager identityProviderManager) { - return delegate.authenticate(context, identityProviderManager); - } - - @Override - public Uni getChallenge(RoutingContext context) { - return delegate.getChallenge(context); - } - - @Override - public Set> getCredentialTypes() { - return delegate.getCredentialTypes(); - } - - @Override - public Uni getCredentialTransport(RoutingContext context) { - return delegate.getCredentialTransport(context); - } - private static String startWithSlash(String page) { if (page == null) { return null; diff --git a/pom.xml b/pom.xml index da9fb825c..7d321f301 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.commafeed commafeed - 4.6.0 + 5.0.0-beta CommaFeed pom