Skip to content

Github Packages

Kantemir Tvorogov edited this page Aug 15, 2023 · 2 revisions

Github Packages and Docker Images

For quick ACUITY installation we use Github as a storage for Maven jar/war artifacts which are used to assemble Docker images of different components of ACUITY application. Most of such packages are placed in corresponding repositories packages

VA-Security - is a core one as it contains jar artifacts bundled into VAHub and AdminUI. Any changes made in its security and auth modules should be applied to VAHub and AdminUI as well.

Github Actions

To automatically build these artifacts and Docker images during Continuous Integration(CI) we use Github Actions

We implement this mechanism by configuring .yml files placed in each application repository under .github directory

At the moment we have implemented auto-deployment on master branch update and auto-tests on pull-requests.

To merge your contribution to master branch you will need to verify that all tests pass locally on your machine and during such Github test workflow.

###NB!: Va-Security build action produces a dispatch event to VaHub and AdminUI repositories (to update artifacts on VaSecurity source code change)

steps:
      - name: Trigger AdminUI and VAHub rebuild
        uses: peter-evans/repository-dispatch@v1
        with:
          token: ${{ secrets.ACCESS_TOKEN }}
          repository: ${{ matrix.repo }}
          event-type: va-security-update

This action relies on Personal Access Token (PAT) of the first contributor of ACUITY repositories. GitHub not supports using of default GITHUB_TOKEN of corresponding worlflow to access even public repositories. In case you fork ACUITY to your repositories workflow this build step could fail due to absence of such an ACCESS_TOKEN in your forked repository. To imrove that create a personal access token (PAT) and store them in secrets of 3 repositories (VaHub,AdminUI,VaSecurity)

Docker Images

Docker images are primary sources to launch ACUITY app from your machines. Being updated on every source code change, they supply you with the most recent version of application. To launch ACUITY from images, please follow instructions in acuity-deployment-scripts directory and acuity-docker directory

Docker Images. Build process

Docker Images are build from war and jar artifacts using Dockerfiles as instructions

ENV WAR_NAME $WAR_NAME
ENV ENV_TYPE_PROFILE dev
ENV AUTH_PROFILE local-no-security
ENV CONFIG_PROFILE local-config
ENV STORAGE_PROFILE local-storage
ENV CFG_SRV_LOGIN acuity
ENV CFG_SRV_PASSWORD ac3tbas1c 
        /                     \
       /                       \
 (docker-compose param)        default value

Dockerfiles contain environment variables ENV which are used as a application launch parameters inside corresponding docker containers.

CMD if [ "$CONFIG_PROFILE" != "local-config" ] ; \
        then ./wait-for-it.sh config-server:8888 --timeout=300 --strict -- echo "Starting $WAR_NAME..." \
                && spring_config_details='-Dspring.cloud.config.username='$CFG_SRV_LOGIN' \
                -Dspring.cloud.config.password='$CFG_SRV_PASSWORD' \
                -Dspring.cloud.config.uri=http://config-server:8888/acuity-spring-configs'; \
        else spring_config_details='-Dspring.config.location=./local-configs/'; \

You could set this env variables via docker-compose.yml files in environment section for particular service:

 vahub:
   image: ${REPOSITORY_AND_SLASH}vahub:${ACUITY_VERSION}
   environment:
     - ENV_TYPE_PROFILE=${ENV_TYPE_PROFILE}
     - AUTH_PROFILE=${AUTH_PROFILE}
     - CONFIG_PROFILE=${CONFIG_PROFILE}
     - OTHER_PROFILES=NoScheduledJobs

Docker-compose files

acuity-docker repository provides two types of docker-compose files:

  • docker-compose.yml - used to deploy application using images built by GitHub Actions
  • docker-compose_building-mode.yml - used to deploy application by building images in place (please refer to acuity-docker repository for more details).
Clone this wiki locally