Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 42 additions & 24 deletions .github/workflows/packer-build-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
Expand All @@ -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 }}
32 changes: 16 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
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

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)
Expand All @@ -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 :
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 .
```
40 changes: 40 additions & 0 deletions xnat-web-variables.pkr.hcl
Original file line number Diff line number Diff line change
@@ -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
}
57 changes: 10 additions & 47 deletions xnat-web.pkr.hcl
Original file line number Diff line number Diff line change
@@ -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 = [
Expand Down Expand Up @@ -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",
Expand All @@ -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"]
}
}
Expand All @@ -120,8 +84,7 @@ source "docker" "xnat-web" {
"ENV XNAT_HOME=${var.xnat_home}",
"LABEL maintainer=\"Dean Taylor <dean.taylor@uwa.edu.au>\"",
"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
Expand Down