Skip to content

Instantly share code, notes, and snippets.

@iemejia
Last active March 9, 2020 21:03
Show Gist options
  • Save iemejia/5277fc269c63c4e49f1bb065454a895e to your computer and use it in GitHub Desktop.
Save iemejia/5277fc269c63c4e49f1bb065454a895e to your computer and use it in GitHub Desktop.
Apache Beam versions compatibility analysis
#!/bin/bash
mkdir -p "$HOME/releases/japi"
# create exclusions file for annotations to be skipped
cat <<EOF > "$HOME/releases/japi/beam-skip-annotations"
org.apache.beam.sdk.annotations.Experimental
org.apache.beam.sdk.annotations.Internal
EOF
# create exclusions file for packages to be skipped
cat <<EOF > "$HOME/releases/japi/beam-skip-packages"
org.apache.beam.repackaged
org.apache.beam.sdk.repackaged
org.apache.beam.sdk.annotations
org.apache.beam.sdk.expansion
org.apache.beam.sdk.harness
org.apache.beam.sdk.metrics
org.apache.beam.sdk.runners
org.apache.beam.sdk.schemas
org.apache.beam.sdk.state
org.apache.beam.sdk.testing
org.apache.beam.sdk.transforms.reflect
org.apache.beam.sdk.transforms.splittabledofn
org.apache.beam.sdk.util
EOF
# download beam-sdks-java-core versions
for minor in $(seq 0 19); do \
mvn dependency:get -Dartifact="org.apache.beam:beam-sdks-java-core:2.$minor.0";
done
# compare beam-sdks-java-core versions
for minor in $(seq 0 18); do \
declare next=$((minor+1));
docker run -it --rm -v $HOME/.m2:/opt/m2:ro -v $HOME/releases/japi:/compat_reports \
joschi/japi-compliance-checker:2.4-1 \
--keep-internal \
--skip-packages /compat_reports/beam-skip-packages \
--skip-annotations-list /compat_reports/beam-skip-annotations \
"/opt/m2/repository/org/apache/beam/beam-sdks-java-core/2.$minor.0/beam-sdks-java-core-2.$minor.0.jar" \
"/opt/m2/repository/org/apache/beam/beam-sdks-java-core/2.$next.0/beam-sdks-java-core-2.$next.0.jar";
done
xdg-open file:///home/ismael/releases/japi/beam-sdks-java-core/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment