diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 555e9946f..e7496d1ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,12 +6,14 @@ We like to stay up-to-date with the latest version of the Frank!Framework to get Execute the following steps when bumping the Frank!Framework version: 1. Look up the latest framework snapshot build on [DockerHub - Frank!Framework](https://hub.docker.com/r/wearefrank/frank-framework/tags). The format of the tag should be: `.-.`. For example: 7.9-20230907.223421. -2. Replace the tag in the `Dockerfile` with the new tag. -3. Replace the tag in `frank-runner.properties` with the new tag. -4. Start ZaakBrug with the `Frank!Runner` to automatically replace the `./src/main/configuration//FrankConfig.xsd` and `./src/main/configuration/FrankConfig.xsd` with the newer version. You can stop the Frank!Runner once the files are replaced. Note that currently the Frank!Runner will also add `FrankConfig.xsd` to the `.gitignore` file. Make sure to revert the change to `.gitignore`. -5. Check [GitHub - Frank!Framework - Parameter.java commit history](https://github.com/ibissource/iaf/commits/master/core/src/main/java/nl/nn/adapterframework/parameters/Parameter.java) for any changes to this class. If there are indeed changes, update the corresponding file under `./src/main/java/nl/nn/adapterframework/...`. The `.java-orig` file content should be 1 on 1 equal to the new version on GitHub. Take care to not accidentally remove the intended customization of the code in the `.java` file. -6. Run the e2e testsuite by using the below Docker-Compose and configuration to validate the changes. You should only need `docker-compose -f ./docker-compose.zaakbrug.dev.yml -f ./docker-compose.openzaak.dev.yml up --build --force-recreate` for this. (TODO: Automate running of e2e tests in ci/cd). -7. Commit you changes on a branch with as message: `build(dependencies): bump f!f version to `. Create a PR to have you changes merged to master. +2. Replace the value of `FF_VERSION` in the `Dockerfile` with the new tag. +3. Replace the value of `FF_VERSION` in the `Dockerfile.java8` with the new tag. +4. Replace the default value for `FF_VERSION` under `services.zaakbrug.build.args` in `docker-compose.zaakbrug.dev.yml` with the new tag. NOTE: Watch out to not replace the '-' in front of the tag: ${FF_VERSION:-} +5. Replace the value of `ff.version` in `frank-runner.properties` with the new tag. +6. Start ZaakBrug with the `Frank!Runner` to automatically replace the `./src/main/configuration//FrankConfig.xsd` and `./src/main/configuration/FrankConfig.xsd` with the newer version. You can stop the Frank!Runner once the files are replaced. Note that currently the Frank!Runner will also add `FrankConfig.xsd` to the `.gitignore` file. Make sure to revert the change to `.gitignore`. +7. Check [GitHub - Frank!Framework - Parameter.java commit history](https://github.com/ibissource/iaf/commits/master/core/src/main/java/nl/nn/adapterframework/parameters/Parameter.java) for any changes to this class. If there are indeed changes, update the corresponding file under `./src/main/java/nl/nn/adapterframework/...`. The `.java-orig` file content should be 1 on 1 equal to the new version on GitHub. Take care to not accidentally remove the intended customization of the code in the `.java` file. +8. Run the e2e testsuite by using the below Docker-Compose and configuration to validate the changes. You should only need `docker-compose -f ./docker-compose.zaakbrug.dev.yml -f ./docker-compose.openzaak.dev.yml up --build --force-recreate` for this. (TODO: Automate running of e2e tests in ci/cd). +9. Commit you changes on a branch with as message: `build(dependencies): bump f!f version to `. Create a PR to have you changes merged to master. # Docker-compose The docker-compose development environment is designed to be flexible and composable. This prevents the need for developers to run the entire stack eventhough their work requires only a small part of the stack. For this we make use of a docker-compose feature that merges a given array of docker-compose files together. Simply provide a `-f ./docker-compose..yml` argument for each docker-compose file you wish to include in the `docker-compose up`command. diff --git a/Dockerfile b/Dockerfile index 339b615d1..c0e262987 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,15 @@ -FROM tomcat:8-jre11-temurin-jammy AS base - +# Keep in sync with version in frank-runner.properties. Detailed instructions can be found in CONTRIBUTING.md. +# Check whether java-orig files have changed in F!F and update custom code (java and java-orig files) accordingly +ARG FF_VERSION=7.9-20230905.223421 ARG GID=1000 ARG UID=1000 +FROM tomcat:8-jre11-temurin-jammy AS base + +ARG FF_VERSION +ARG GID +ARG UID + # Secure files (CIS-DI-0008) RUN chmod -R 751 /usr/bin /usr/sbin @@ -20,10 +27,15 @@ RUN set -eux && \ # All previous actions are performed as root. Run following instructions and start container as tomcat. USER tomcat +# Needed to created a valid "from" image when using ARG variable +# COPY "--from=docker.io/wearefrank/frank-framework:${FF_VERSION}" doesn't work +FROM docker.io/wearefrank/frank-framework:${FF_VERSION} AS ff-builder +FROM base AS ff-base + # Copy environment configuration -COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/conf/catalina.properties /usr/local/tomcat/conf/catalina.properties -COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/lib/ /usr/local/tomcat/lib/ -COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT +COPY --from=ff-builder --chown=tomcat /usr/local/tomcat/conf/catalina.properties /usr/local/tomcat/conf/catalina.properties +COPY --from=ff-builder --chown=tomcat /usr/local/tomcat/lib/ /usr/local/tomcat/lib/ +COPY --from=ff-builder --chown=tomcat /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT # TempFix TODO: Move this to the credentialprovider.properties ENV credentialFactory.class=nl.nn.credentialprovider.PropertyFileCredentialFactory @@ -43,10 +55,10 @@ COPY --chown=tomcat src/main/resources/ /opt/frank/resources/ COPY --chown=tomcat src/test/testtool/ /opt/frank/testtool/ # Compile custom class -FROM eclipse-temurin:8-jdk-jammy AS build +FROM eclipse-temurin:8-jdk-jammy AS custom-code-builder -COPY --from=base /usr/local/tomcat/lib/ /usr/local/tomcat/lib/ -COPY --from=base /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT +COPY --from=ff-base /usr/local/tomcat/lib/ /usr/local/tomcat/lib/ +COPY --from=ff-base /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT COPY src/main/java /tmp/java RUN mkdir /tmp/classes \ @@ -55,9 +67,9 @@ RUN mkdir /tmp/classes \ -classpath "/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/*:/usr/local/tomcat/lib/*" \ -verbose -d /tmp/classes -FROM base AS final +FROM ff-base AS final -COPY --from=build --chown=tomcat /tmp/classes/ /usr/local/tomcat/webapps/ROOT/WEB-INF/classes +COPY --from=custom-code-builder --chown=tomcat /tmp/classes/ /usr/local/tomcat/webapps/ROOT/WEB-INF/classes HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=60 \ CMD curl --fail --silent http://localhost:8080/iaf/api/server/health || (curl --silent http://localhost:8080/iaf/api/server/health && exit 1) diff --git a/Dockerfile.java8 b/Dockerfile.java8 index 41fe5a71f..6cf4ef154 100644 --- a/Dockerfile.java8 +++ b/Dockerfile.java8 @@ -1,8 +1,8 @@ # Keep in sync with version in frank-runner.properties. Detailed instructions can be found in CONTRIBUTING.md. # Check whether java-orig files have changed in F!F and update custom code (java and java-orig files) accordingly +ARG FF_VERSION=7.9-20230905.223421 -# Before bumping make sure https://github.com/ibissource/iaf/issues/5356 is resolved or stuurgegevens-refactor PR is merged. -FROM docker.io/wearefrank/frank-framework:7.9-20230905.223421 +FROM docker.io/wearefrank/frank-framework:${FF_VERSION} # TempFix TODO: Move this to the credentialprovider.properties ENV credentialFactory.class=nl.nn.credentialprovider.PropertyFileCredentialFactory diff --git a/docker-compose.zaakbrug.dev.yml b/docker-compose.zaakbrug.dev.yml index c2b053633..7ee3556ca 100644 --- a/docker-compose.zaakbrug.dev.yml +++ b/docker-compose.zaakbrug.dev.yml @@ -14,7 +14,10 @@ services: - zaakbrug zaakbrug: - build: . + build: + context: . + args: + FF_VERSION: ${FF_VERSION:-7.9-20230905.223421} image: wearefrank/zaakbrug:latest container_name: zaakbrug.dev environment: