diff --git a/.github/workflows/packer-build-ci.yml b/.github/workflows/packer-build-ci.yml index 0d753c0..2336c46 100644 --- a/.github/workflows/packer-build-ci.yml +++ b/.github/workflows/packer-build-ci.yml @@ -3,39 +3,45 @@ name: Packer build on: push: - branches: - - v1.7 - - v1.8 - paths: - - "**.pkr.hcl" - pull_request: - branches: - - v1.7 - - v1.8 - paths: - - "**.pkr.hcl" + tags: + - "v*" workflow_dispatch: env: REGISTRY: ghcr.io +permissions: + contents: read + packages: write + jobs: packer: runs-on: ubuntu-latest - permissions: - contents: read - packages: write - name: packer + services: + registry: + image: registry:2 + ports: + - 5000:5000 + - 32000:5000 + steps: - - name: Checkout Repository - uses: actions/checkout@v2 + - name: Docker metadata + id: meta + uses: docker/metadata-action@v3 with: - fetch-depth: 0 + images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/xnat-web + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }} + type=sha - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + uses: docker/login-action@v1 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -53,13 +59,25 @@ jobs: sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" sudo apt-get -q update && sudo apt-get -yq install packer + - name: Checkout Repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Build Artifacts run: | + # run make instructions if file exists [[ -f Makefile ]] && make - CHANGED_FILES=$(git diff --name-only ${{github.event.before}}..${{github.event.after}} |grep '\.pkr\.hcl$') - for FILE in "${CHANGED_FILES[@]}"; do - packer validate -syntax-only "${FILE}" - [[ $? -eq 0 ]] && packer build -color=false -on-error=abort -only=docker.* "${FILE}" - done + if packer validate "./"; then + packer build -color=false -on-error=abort -only=docker.xnat-web "./" + fi env: PACKER_LOG: 1 + + # Push docker image produced by packer with tags + - name: Push docker image + uses: akhilerm/tag-push-action@v2.0.0 + with: + src: localhost:32000/xnat-web:ci + dst: | + ${{ steps.meta.outputs.tags }} diff --git a/Makefile b/Makefile index f228f93..1ce3f80 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,13 @@ -xnat_version = 1.8.2.2 -plugin_container_service_ver = 3.0.0 +xnat_version = 1.8.4.1 +plugin_container_service_ver = 3.1.1 plugin_ldap_auth_ver = 1.1.0 -plugin_ohif-viewer_ver = 3.0.1 -plugin_openid_auth_ver = 1.0.2 +plugin_ohif_viewer_ver = 3.2.0 +plugin_openid_auth_ver = 1.2.0-SNAPSHOT plugin_xsync_ver = 1.4.0.1 -plugin_batch-launch_ver = 0.4.0 +plugin_batch_launch_ver = 0.5.0 xnat_war = xnat-web-$(xnat_version).war -xnat_url = https://github.com/Australian-Imaging-Service/xnat-web/releases/download/release-$(xnat_version)-ais/$(xnat_war) +xnat_url = https://bitbucket.org/xnatdev/xnat-web/downloads/$(xnat_war) plugin_container_service_jar = container-service-$(plugin_container_service_ver).jar plugin_container_service_url = https://bitbucket.org/xnatdev/container-service/downloads/container-service-$(plugin_container_service_ver)-fat.jar @@ -15,19 +15,19 @@ plugin_container_service_url = https://bitbucket.org/xnatdev/container-service/d plugin_ldap_auth_jar = ldap-auth-plugin-$(plugin_ldap_auth_ver).jar plugin_ldap_auth_url = https://bitbucket.org/xnatx/ldap-auth-plugin/downloads/$(plugin_ldap_auth_jar) -plugin_ohif-viewer_jar = ohif-viewer-$(plugin_ohif-viewer_ver).jar -plugin_ohif-viewer_url = https://bitbucket.org/icrimaginginformatics/ohif-viewer-xnat-plugin/downloads/ohif-viewer-$(plugin_ohif-viewer_ver)-XNAT-1.8.0.jar +plugin_ohif_viewer_jar = ohif-viewer-$(plugin_ohif_viewer_ver).jar +plugin_ohif_viewer_url = https://bitbucket.org/icrimaginginformatics/ohif-viewer-xnat-plugin/downloads/ohif-viewer-$(plugin_ohif_viewer_ver)-XNAT-1.8.0.jar plugin_openid_auth_jar = openid-auth-plugin-$(plugin_openid_auth_ver).jar -plugin_openid_auth_url = https://github.com/Australian-Imaging-Service/xnat-openid-auth-plugin/releases/download/$(plugin_openid_auth_ver)/xnat-openid-auth-plugin-all-$(plugin_openid_auth_ver).jar +plugin_openid_auth_url = https://github.com/Australian-Imaging-Service/openid-auth-plugin/releases/download/$(plugin_openid_auth_ver)/openid-auth-plugin-$(plugin_openid_auth_ver).jar plugin_xsync_jar = xsync-plugin-all-$(plugin_xsync_ver).jar plugin_xsync_url = https://bitbucket.org/xnatdev/xsync/downloads/$(plugin_xsync_jar) -plugin_batch-launch_jar = batch-launch-plugin-$(plugin_batch-launch_ver).jar -plugin_batch-launch_url = https://bitbucket.org/xnatx/xnatx-batch-launch-plugin/downloads/$(plugin_batch_launch_jar) +plugin_batch_launch_jar = batch-launch-plugin-$(plugin_batch_launch_ver).jar +plugin_batch_launch_url = https://bitbucket.org/xnatx/xnatx-batch-launch-plugin/downloads/$(plugin_batch_launch_jar) -plugins = $(plugin_container_service_jar) $(plugin_ldap_auth_jar) $(plugin_openid_auth_jar) $(plugin_ohif-viewer_jar) $(plugin_xsync_jar) $(plugin_batch-launch_jar) +plugins = $(plugin_container_service_jar) $(plugin_ldap_auth_jar) $(plugin_openid_auth_jar) $(plugin_ohif_viewer_jar) $(plugin_xsync_jar) $(plugin_batch_launch_jar) $(xnat_war) : $(plugins) wget --no-verbose -O $(xnat_war) $(xnat_url) @@ -41,14 +41,14 @@ $(plugin_ldap_auth_jar) : $(plugin_openid_auth_jar) : wget --no-verbose -O $(plugin_openid_auth_jar) $(plugin_openid_auth_url) -$(plugin_ohif-viewer_jar) : - wget --no-verbose -O $(plugin_ohif-viewer_jar) $(plugin_ohif-viewer_url) +$(plugin_ohif_viewer_jar) : + wget --no-verbose -O $(plugin_ohif_viewer_jar) $(plugin_ohif_viewer_url) $(plugin_xsync_jar) : wget --no-verbose -O $(plugin_xsync_jar) $(plugin_xsync_url) -$(plugin_batch-launch_jar) : - wget --no-verbose -O ${plugin_batch-launch_jar} $(plugin_batch-launch_url) +$(plugin_batch_launch_jar) : + wget --no-verbose -O $(plugin_batch_launch_jar) $(plugin_batch_launch_url) .PHONY : clean clean : diff --git a/README.md b/README.md index 0b212c1..2130612 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,14 @@ $ make # Build all images -$ packer build xnat-web.pkr.hcl +$ packer build . # Build an individual image -$ packer build -only docker.xnat17 xnat-web.pkr.hcl +$ packer build -only docker.xnat-web . # Build all docker images -$ packer build -only docker.* xnat-web.pkr.hcl -``` +$ packer build -only docker.* . -Reference: -* https://bitbucket.org/xnatdev/container-service/downloads/ +# Build the xnat-web docker image with an overridden uid +$ packer build -var "run_as_uid=997" -only docker.xnat-web . +``` diff --git a/xnat-web-variables.pkr.hcl b/xnat-web-variables.pkr.hcl new file mode 100644 index 0000000..cf0cf7f --- /dev/null +++ b/xnat-web-variables.pkr.hcl @@ -0,0 +1,40 @@ +variable "xnat_version" { + default = "1.8.4.1" + type = string +} +variable "xnat_root" { + default = "/data/xnat" + type = string +} +variable "xnat_home" { + default = "/data/xnat/home" + type = string +} +variable "xnat_plugins" { + default = "/data/xnat/home/plugins" + type = string +} +variable "xnat_plugins_list" { + default = [ + "container-service-3.1.1.jar", + "ldap-auth-plugin-1.1.0.jar", + "ohif-viewer-3.2.0.jar", + "openid-auth-plugin-1.2.0-SNAPSHOT.jar", + "xsync-plugin-all-1.4.0.1.jar", + "batch-launch-plugin-0.5.0.jar" + ] + type = list(string) +} +variable "run_as_uid" { + default = "0" + type = string +} +variable "docker_image" { + default = "tomcat:9.0.62-jdk8-openjdk-bullseye" + type = string +} +variable "repository" { + # Do not change default - required for CI/CD pipeline + default = "localhost:32000" + type = string +} diff --git a/xnat-web.pkr.hcl b/xnat-web.pkr.hcl index 638e82d..c19d5a7 100644 --- a/xnat-web.pkr.hcl +++ b/xnat-web.pkr.hcl @@ -1,39 +1,7 @@ -variable "xnat_version" { - default = "1.8.2.2" - type = string -} -variable "xnat_root" { - default = "/data/xnat" - type = string -} -variable "xnat_home" { - default = "/data/xnat/home" - type = string -} -variable "xnat_plugins" { - default = "/data/xnat/home/plugins" - type = string -} -variable "xnat_plugins_list" { - default = [ - "container-service-3.0.0.jar", - "ldap-auth-plugin-1.1.0.jar", - "ohif-viewer-3.0.1.jar", - "openid-auth-plugin-1.0.2.jar", - "xsync-plugin-all-1.4.0.1.jar", - "batch-launch-plugin-0.4.0.jar" - ] - type = list(string) -} -variable "run_as_uid" { - default = "0" - type = string -} -variable "docker_image" { - default = "tomcat:9.0.46-jdk8-openjdk-buster" - type = string -} - +# xnat-build/xnat-web.pkr.hcl +# variables: xnat-build/xnat-web-variables.pkr.hcl +# pre-req.: make +# build { provisioner "shell" { inline = [ @@ -77,7 +45,6 @@ build { provisioner "shell" { inline = [ "apt-get update", - "apt-get -y install postgresql-client", "rm -rf $${CATALINA_HOME}/webapps/*", "unzip -o -d $${CATALINA_HOME}/webapps/ROOT /tmp/xnat-web-*.war", "sed -i 's/ch.qos.logback.core.rolling.RollingFileAppender/ch.qos.logback.core.ConsoleAppender/' $${CATALINA_HOME}/webapps/ROOT/WEB-INF/classes/logback.xml", @@ -93,17 +60,14 @@ build { } post-processors { + # Do not remove ci tag - required for CICD pipeline + # used for development; microk8s registry post-processor "docker-tag" { - repository = "ghcr.io/australian-imaging-service/${source.name}" - tags = ["${var.xnat_version}"] + repository = "${var.repository}/${source.name}" + tags = ["${var.xnat_version}","ci"] only = ["docker.xnat-web"] } - #post-processor "docker-push" { only = ["docker.xnat-web"]} - } - post-processors { - post-processor "docker-tag" { - repository = "localhost:32000/${source.name}" - tags = ["${var.xnat_version}"] + post-processor "docker-push" { only = ["docker.xnat-web"] } } @@ -120,8 +84,7 @@ source "docker" "xnat-web" { "ENV XNAT_HOME=${var.xnat_home}", "LABEL maintainer=\"Dean Taylor \"", "LABEL org.opencontainers.image.source https://github.com/australian-imaging-service/xnat-build", - "USER ${var.run_as_uid}", - "VOLUME ${var.xnat_root}/archive ${var.xnat_root}/cache ${var.xnat_root}/prearchive ${var.xnat_home}/work" + "USER ${var.run_as_uid}" ] commit = true image = var.docker_image