diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..6847749
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,8 @@
+.git
+.github
+
+.dockerignore
+.gitignore
+Dockerfile
+Jenkinsfile
+README.md
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..8f447dc
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,92 @@
+name: sbml-exporter ci
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - opened
+ - synchronize
+ push:
+ branches:
+ - main
+
+permissions:
+ id-token: write
+ contents: read
+
+jobs:
+ lint:
+ if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }}
+ runs-on: ubuntu-latest
+ env:
+ REPO_DIR: /opt/sbml-exporter
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Run lint
+ run: |
+ docker build --build-arg REPO_DIR="$REPO_DIR" --target setup-env -t lint-image .
+ docker run --name lint-container lint-image
+
+ - name: Display lint errors
+ if: failure()
+ run: |
+ docker cp lint-container:"$REPO_DIR"/lint.log .
+ while IFS= read -r LINT_MSG; do echo "::warning::${LINT_MSG}"; done < lint.log
+ exit 1
+
+ docker-build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: docker/setup-buildx-action@v3
+
+ - uses: docker/build-push-action@v5
+ with:
+ context: .
+ file: Dockerfile
+ tags: tmp-tag
+ outputs: type=docker,dest=/tmp/image.tar
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: image-artifact
+ path: /tmp/image.tar
+
+ docker-push:
+ if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
+ needs: docker-build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/download-artifact@v4
+ with:
+ name: image-artifact
+ path: /tmp
+
+ - id: get-hash
+ run: |
+ FULL_SHA=${{ github.sha }}
+ echo "SHORT_SHA=${FULL_SHA:0:7}" >> $GITHUB_OUTPUT
+
+ - env:
+ AWS_REGION : us-east-1
+ uses: aws-actions/configure-aws-credentials@v4
+ with:
+ role-to-assume: ${{ vars.AWS_ROLE }}
+ aws-region: ${{ env.AWS_REGION }}
+
+ - id: login-ecr
+ uses: aws-actions/amazon-ecr-login@v2
+ with:
+ registry-type: public
+
+ - env:
+ AWS_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
+ AWS_REGISTRY_ALIAS: k2y5k6e2
+ AWS_REPO: sbml-exporter
+ IMG_TAG: ${{ steps.get-hash.outputs.SHORT_SHA }}
+ run: |
+ docker load --input /tmp/image.tar
+ docker image tag tmp-tag $AWS_REGISTRY/$AWS_REGISTRY_ALIAS/$AWS_REPO:$IMG_TAG
+ docker push $AWS_REGISTRY/$AWS_REGISTRY_ALIAS/$AWS_REPO:$IMG_TAG
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..0784f4e
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,39 @@
+ARG REPO_DIR=/opt/sbml-exporter
+
+
+# ===== stage 1 =====
+FROM maven:3.9.6-eclipse-temurin-11-focal AS setup-env
+
+ARG REPO_DIR
+
+WORKDIR ${REPO_DIR}
+
+COPY . .
+
+SHELL ["/bin/bash", "-c"]
+
+# run lint if container started
+ENTRYPOINT []
+
+CMD mvn -B -q checkstyle:check | \
+ grep -i --color=never '\.java\|failed to execute goal' > lint.log && \
+ exit 1 || \
+ exit 0
+
+
+# ===== stage 2 =====
+FROM setup-env AS build-jar
+
+RUN mvn clean package
+
+
+# ===== stage 3 =====
+FROM eclipse-temurin:11-jre-focal
+
+ARG REPO_DIR
+
+ARG JAR_FILE=target/sbml-exporter-exec.jar
+
+WORKDIR ${REPO_DIR}
+
+COPY --from=build-jar ${REPO_DIR}/${JAR_FILE} ./target/
diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 0000000..8506a80
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index e09a78c..b486f7a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,248 +1,274 @@
- 4.0.0
-
- org.reactome.server.tools
- sbml-exporter
- 2.2.7
- jar
-
- sbml-exporter
- http://maven.apache.org
-
-
- org.reactome.maven
- reactome-parent
- 1.0.3
-
-
-
-
- org.reactome.server.tools.sbml.Main
-
-
-
-
-
- fabregat
- Antonio Fabregat
- fabregat@ebi.ac.uk
- https://www.ebi.ac.uk/
-
-
- ksidiro
- Kostas Sidiropoulos
- ksidiro@ebi.ac.uk
- https://www.ebi.ac.uk/
-
-
- skeating
- Sarah Keating
- skeating@ebi.ac.uk
- https://www.ebi.ac.uk/
-
-
-
-
-
-
- org.reactome.server.graph
- graph-core
-
-
-
-
- mysql
- mysql-connector-java
-
-
-
- org.reactome.base
- reactome-base
-
-
- org.apache.xmlgraphics
- batik-awt-util
-
-
- org.apache.xmlgraphics
- batik-constants
-
-
- org.apache.xmlgraphics
- batik-dom
-
-
- org.apache.xmlgraphics
- batik-i18n
-
-
- org.apache.xmlgraphics
- batik-svggen
-
-
- org.apache.xmlgraphics
- batik-util
-
-
- commons-httpclient
- commons-httpclient
-
-
-
-
-
-
- org.jdom
- jdom
-
-
-
-
- org.sbml.jsbml
- jsbml
-
-
-
-
- com.martiansoftware
- jsap
-
-
-
- org.apache.commons
- commons-collections4
-
-
-
- org.junit.jupiter
- junit-jupiter-api
- test
-
-
-
-
-
- ${project.name}
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven.compiler.version}
-
-
- ${java.version}
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- ${maven.jar.version}
-
-
- exec-jar
-
- jar
-
-
- exec
-
-
-
- default-jar
-
- jar
-
-
-
- org/reactome/server/tools/sbml/Main.class
- org/reactome/server/tools/sbml/config/GraphNeo4jConfig.class
- **/logback.xml
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring-boot.version}
-
- ${main.class}
- exec
-
-
-
-
- repackage
-
-
-
-
-
-
-
-
-
-
- nexus-ebi-repo
- The EBI internal repository
- https://www.ebi.ac.uk/Tools/maven/repos/content/groups/ebi-repo/
-
- true
-
-
- false
-
-
-
-
-
- nexus-ebi-snapshot-repo
- The EBI internal snapshot repository
- https://www.ebi.ac.uk/Tools/maven/repos/content/groups/ebi-snapshots/
-
- false
-
-
- true
-
-
-
-
-
- ebi-repo
- The EBI repository
- https://www.ebi.ac.uk/~maven/m2repo
-
- true
-
-
-
-
-
- biojava-legacy-repo
- BioJava's Git based legacy maven repo
- https://github.com/biojava/maven-repo/raw/master/
-
-
-
-
-
-
-
-
- pst-release
- EBI Nexus Repository
- https://www.ebi.ac.uk/Tools/maven/repos/content/repositories/pst-release
-
-
-
- false
- pst-snapshots
- EBI Nexus Snapshots Repository
- https://www.ebi.ac.uk/Tools/maven/repos/content/repositories/pst-snapshots
-
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+
+ org.reactome.server.tools
+ sbml-exporter
+ 2.2.7
+ jar
+
+ sbml-exporter
+ http://maven.apache.org
+
+
+ org.reactome.maven
+ reactome-parent
+ 1.0.3
+
+
+
+
+ org.reactome.server.tools.sbml.Main
+
+
+
+
+
+ fabregat
+ Antonio Fabregat
+ fabregat@ebi.ac.uk
+ https://www.ebi.ac.uk/
+
+
+ ksidiro
+ Kostas Sidiropoulos
+ ksidiro@ebi.ac.uk
+ https://www.ebi.ac.uk/
+
+
+ skeating
+ Sarah Keating
+ skeating@ebi.ac.uk
+ https://www.ebi.ac.uk/
+
+
+
+
+
+
+ org.reactome.server.graph
+ graph-core
+
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ org.reactome.base
+ reactome-base
+
+
+ org.apache.xmlgraphics
+ batik-awt-util
+
+
+ org.apache.xmlgraphics
+ batik-constants
+
+
+ org.apache.xmlgraphics
+ batik-dom
+
+
+ org.apache.xmlgraphics
+ batik-i18n
+
+
+ org.apache.xmlgraphics
+ batik-svggen
+
+
+ org.apache.xmlgraphics
+ batik-util
+
+
+ commons-httpclient
+ commons-httpclient
+
+
+
+
+
+
+ org.jdom
+ jdom
+
+
+
+
+ org.sbml.jsbml
+ jsbml
+
+
+
+
+ com.martiansoftware
+ jsap
+
+
+
+ org.apache.commons
+ commons-collections4
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+
+
+
+ ${project.name}
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+
+ 11
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ ${maven.jar.version}
+
+
+ exec-jar
+
+ jar
+
+
+ exec
+
+
+
+ default-jar
+
+ jar
+
+
+
+ org/reactome/server/tools/sbml/Main.class
+ org/reactome/server/tools/sbml/config/GraphNeo4jConfig.class
+ **/logback.xml
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+ ${main.class}
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 3.1.1
+
+
+
+ com.puppycrawl.tools
+ checkstyle
+ 8.44
+
+
+
+
+ checkstyle-check
+
+ check
+
+
+
+
+ checkstyle.xml
+
+ UTF-8
+
+
+
+
+
+
+
+
+ nexus-ebi-repo
+ The EBI internal repository
+ https://www.ebi.ac.uk/Tools/maven/repos/content/groups/ebi-repo/
+
+ true
+
+
+ false
+
+
+
+
+
+ nexus-ebi-snapshot-repo
+ The EBI internal snapshot repository
+ https://www.ebi.ac.uk/Tools/maven/repos/content/groups/ebi-snapshots/
+
+ false
+
+
+ true
+
+
+
+
+
+ ebi-repo
+ The EBI repository
+ https://www.ebi.ac.uk/~maven/m2repo
+
+ true
+
+
+
+
+
+ biojava-legacy-repo
+ BioJava's Git based legacy maven repo
+ https://github.com/biojava/maven-repo/raw/master/
+
+
+
+
+
+
+
+
+ pst-release
+ EBI Nexus Repository
+ https://www.ebi.ac.uk/Tools/maven/repos/content/repositories/pst-release
+
+
+
+ false
+ pst-snapshots
+ EBI Nexus Snapshots Repository
+ https://www.ebi.ac.uk/Tools/maven/repos/content/repositories/pst-snapshots
+
+