From cdd22bdc081cd0ba2ea618fb7d7a945acc179c97 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Thu, 21 Mar 2024 11:43:03 -0400 Subject: [PATCH 1/3] add ci --- .dockerignore | 8 ++++ .github/workflows/ci.yml | 92 ++++++++++++++++++++++++++++++++++++++++ Dockerfile | 39 +++++++++++++++++ checkstyle.xml | 9 ++++ pom.xml | 6 +-- 5 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/ci.yml create mode 100644 Dockerfile create mode 100644 checkstyle.xml 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..fac8a14 100644 --- a/pom.xml +++ b/pom.xml @@ -128,10 +128,10 @@ org.apache.maven.plugins maven-compiler-plugin - ${maven.compiler.version} + 3.13.0 - ${java.version} - ${java.version} + 11 + 11 From c1684fb506045740cbb0f1cad89008ad4135e196 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Thu, 21 Mar 2024 11:54:34 -0400 Subject: [PATCH 2/3] fix linting --- pom.xml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pom.xml b/pom.xml index fac8a14..a7081b1 100644 --- a/pom.xml +++ b/pom.xml @@ -179,6 +179,32 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.1 + + + + com.puppycrawl.tools + checkstyle + 8.44 + + + + + checkstyle-check + + check + + + + + checkstyle.xml + + UTF-8 + + From 19bfe43c682b14d87489a6953e122c303ad51701 Mon Sep 17 00:00:00 2001 From: Derek Tang Date: Sat, 23 Mar 2024 20:34:34 -0400 Subject: [PATCH 3/3] use tabs in pom --- pom.xml | 494 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 247 insertions(+), 247 deletions(-) diff --git a/pom.xml b/pom.xml index a7081b1..b486f7a 100644 --- a/pom.xml +++ b/pom.xml @@ -1,274 +1,274 @@ - 4.0.0 + 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 + org.reactome.server.tools + sbml-exporter + 2.2.7 + jar - sbml-exporter - http://maven.apache.org + sbml-exporter + http://maven.apache.org - - org.reactome.maven - reactome-parent - 1.0.3 - + + org.reactome.maven + reactome-parent + 1.0.3 + - + - org.reactome.server.tools.sbml.Main + 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/ - - + + + 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 - + + org.reactome.server.graph + graph-core + - - - mysql - mysql-connector-java - + + + 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.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.jdom + jdom + - - - org.sbml.jsbml - jsbml - + + + org.sbml.jsbml + jsbml + - - - com.martiansoftware - jsap - + + + com.martiansoftware + jsap + - - org.apache.commons - commons-collections4 - + + org.apache.commons + commons-collections4 + - - org.junit.jupiter - junit-jupiter-api - test - + + org.junit.jupiter + junit-jupiter-api + test + - + - - ${project.name} - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - 11 - 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 - - - - + + ${project.name} + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 11 + 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-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 - - + + + 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 - - + + + 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/ - + + + 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 - - + + + + + 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 + +