Skip to content

Commit

Permalink
Merge pull request #58 from reactome-pwp/add-ci
Browse files Browse the repository at this point in the history
initial ci
  • Loading branch information
DerekTang04 authored Mar 27, 2024
2 parents 252a4b6 + caeab34 commit f562b78
Show file tree
Hide file tree
Showing 14 changed files with 916 additions and 753 deletions.
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.git
.github

.dockerignore
.gitignore
Dockerfile
Jenkinsfile
note.md
README.md
80 changes: 80 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: diagram-exporter ci

on:
workflow_dispatch:
pull_request:
types:
- opened
- synchronize
push:
branches:
- master

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/diagram-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
# diagram-exporter contains PowerPoint paid license
# no intermediate image caching due to license
docker-build-push:
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

# below is process to push to ECR
# private ECR registry is used due to license
- if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
id: get-hash
run: |
FULL_SHA=${{ github.sha }}
echo "SHORT_SHA=${FULL_SHA:0:7}" >> $GITHUB_OUTPUT
- if: ${{ steps.get-hash.conclusion != 'skipped' }}
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 }}

- if: ${{ steps.get-hash.conclusion != 'skipped' }}
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- if: ${{ steps.get-hash.conclusion != 'skipped' }}
env:
AWS_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
AWS_REPO: diagram-exporter
IMG_TAG: ${{ steps.get-hash.outputs.SHORT_SHA }}
run: |
docker image tag tmp-tag $AWS_REGISTRY/$AWS_REPO:$IMG_TAG
docker push $AWS_REGISTRY/$AWS_REPO:$IMG_TAG
39 changes: 39 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
ARG REPO_DIR=/opt/diagram-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 -DskipTests


# ===== stage 3 =====
FROM eclipse-temurin:11-jre-focal

ARG REPO_DIR

ARG JAR_FILE=target/diagram-exporter-exec.jar

WORKDIR ${REPO_DIR}

COPY --from=build-jar ${REPO_DIR}/${JAR_FILE} ./target/
9 changes: 9 additions & 0 deletions checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="LineLength">
<property name="max" value="150"/>
</module>
<!-- Add more modules as needed -->
</module>
Loading

0 comments on commit f562b78

Please sign in to comment.