diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index e81d455..469a55b 100755 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -18,7 +18,7 @@ jobs: fi echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_MYSQL_WORKBENCH_MASTER\". ****" echo "**** Retrieving external version ****" - EXT_RELEASE=$(curl -sL https://dev.mysql.com/downloads/workbench/ |awk '/

MySQL Workbench/ {print $3;exit}') + EXT_RELEASE=$(curl -sL https://archlinux.org/packages/community/x86_64/mysql-workbench/json/ | jq -r '.pkgver') if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then echo "**** Can't retrieve external version, exiting ****" FAILURE_REASON="Can't retrieve external version for mysql-workbench branch master" @@ -36,10 +36,15 @@ jobs: token=$(curl -sX GET \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fmysql-workbench%3Apull" \ | jq -r '.token') - digest=$(curl -s \ + multidigest=$(curl -s \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Authorization: Bearer ${token}" \ "https://ghcr.io/v2/${image}/manifests/${tag}" \ + | jq -r 'first(.manifests[].digest)') + digest=$(curl -s \ + --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ + --header "Authorization: Bearer ${token}" \ + "https://ghcr.io/v2/${image}/manifests/${multidigest}" \ | jq -r '.config.digest') image_info=$(curl -sL \ --header "Authorization: Bearer ${token}" \ diff --git a/Dockerfile b/Dockerfile index 7802893..8ab551c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:focal +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arch # set version label ARG BUILD_DATE @@ -7,46 +7,21 @@ ARG WORKBENCH_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thelamer" +# title +ENV TITLE=MySQLWorkbench + RUN \ - echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y \ - gnome-keyring \ - libatkmm-1.6-1v5 \ - libcairomm-1.0-1v5 \ - libglibmm-2.4-1v5 \ - libgtk2.0-0 \ - libgtkmm-3.0-1v5 \ - libmysqlclient21 \ - libopengl0 \ - libpangomm-1.4-1v5 \ - libpcrecpp0v5 \ - libproj15 \ - libpython3.8 \ - libsecret-1-0 \ - libsigc++-2.0-0v5 \ - libssh-4 \ - libvsqlitepp3v5 \ - libzip5 && \ - echo "**** install mysql workbench ****" && \ - if [ -z ${WORKBENCH_VERSION+x} ]; then \ - WORKBENCH_VERSION=$(curl -sL https://dev.mysql.com/downloads/workbench/ \ - |awk '/

MySQL Workbench/ {print $3;exit}'); \ - fi && \ - curl -Lf -o \ - /tmp/workbench.deb \ - https://cdn.mysql.com/Downloads/MySQLGUITools/mysql-workbench-community_${WORKBENCH_VERSION}-1ubuntu20.04_amd64.deb && \ - dpkg -i /tmp/workbench.deb && \ + echo "**** install runtime packages ****" && \ + pacman -Sy --noconfirm --needed \ + mysql-workbench && \ echo "**** cleanup ****" && \ - apt-get clean && \ rm -rf \ /tmp/* \ - /var/lib/apt/lists/* \ - /var/tmp/* + /var/cache/pacman/pkg/* \ + /var/lib/pacman/sync/* # add local files COPY /root / # ports and volumes EXPOSE 3000 -VOLUME /config diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 new file mode 100644 index 0000000..58fdd94 --- /dev/null +++ b/Dockerfile.aarch64 @@ -0,0 +1,27 @@ +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm64v8-arch + +# set version label +ARG BUILD_DATE +ARG VERSION +ARG WORKBENCH_VERSION +LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" +LABEL maintainer="thelamer" + +# title +ENV TITLE=MySQLWorkbench + +RUN \ + echo "**** install runtime packages ****" && \ + pacman -Sy --noconfirm --needed \ + mysql-workbench && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* \ + /var/cache/pacman/pkg/* \ + /var/lib/pacman/sync/* + +# add local files +COPY /root / + +# ports and volumes +EXPOSE 3000 diff --git a/Dockerfile.armhf b/Dockerfile.armhf new file mode 100644 index 0000000..4492153 --- /dev/null +++ b/Dockerfile.armhf @@ -0,0 +1,27 @@ +FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm32v7-arch + +# set version label +ARG BUILD_DATE +ARG VERSION +ARG WORKBENCH_VERSION +LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" +LABEL maintainer="thelamer" + +# title +ENV TITLE=MySQLWorkbench + +RUN \ + echo "**** install runtime packages ****" && \ + pacman -Sy --noconfirm --needed \ + mysql-workbench && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* \ + /var/cache/pacman/pkg/* \ + /var/lib/pacman/sync/* + +# add local files +COPY /root / + +# ports and volumes +EXPOSE 3000 diff --git a/Jenkinsfile b/Jenkinsfile index 9d21fb2..05856dd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,8 +24,8 @@ pipeline { DOCKERHUB_IMAGE = 'linuxserver/mysql-workbench' DEV_DOCKERHUB_IMAGE = 'lsiodev/mysql-workbench' PR_DOCKERHUB_IMAGE = 'lspipepr/mysql-workbench' - DIST_IMAGE = 'ubuntu' - MULTIARCH = 'false' + DIST_IMAGE = 'arch' + MULTIARCH = 'true' CI = 'true' CI_WEB = 'true' CI_PORT = '3000' @@ -104,7 +104,7 @@ pipeline { steps{ script{ env.EXT_RELEASE = sh( - script: ''' curl -sL https://dev.mysql.com/downloads/workbench/ |awk '/

MySQL Workbench/ {print $3;exit}' ''', + script: ''' curl -sL https://archlinux.org/packages/community/x86_64/mysql-workbench/json/ | jq -r '.pkgver' ''', returnStdout: true).trim() env.RELEASE_LINK = 'custom_command' } diff --git a/README.md b/README.md index 05a2f9b..33789c7 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Find us at: ## Supported Architectures -We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). +Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). Simply pulling `lscr.io/linuxserver/mysql-workbench` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. @@ -55,6 +55,8 @@ The architectures supported by this image are: | Architecture | Tag | | :----: | --- | | x86-64 | latest | +| arm64 | arm64v8-latest | +| armhf | arm32v7-latest | ## Application Setup @@ -87,8 +89,6 @@ services: - /path/to/config:/config ports: - 3000:3000 - cap_add: - - IPC_LOCK restart: unless-stopped ``` @@ -102,7 +102,6 @@ docker run -d \ -e TZ=Europe/London \ -p 3000:3000 \ -v /path/to/config:/config \ - --cap-add="IPC_LOCK" \ --restart unless-stopped \ lscr.io/linuxserver/mysql-workbench ``` @@ -118,7 +117,6 @@ Container images are configured using parameters passed at runtime (such as thos | `-e PGID=1000` | for GroupID - see below for explanation | | `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London. | | `-v /config` | Users home directory in the container, stores program settings. | -| `--cap-add=` | Required for keyring functionality | ## Environment variables from files (Docker secrets) @@ -229,6 +227,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **15.02.22:** - Rebase to Arch. * **20.04.21:** - Rebase on focal. * **18.01.21:** - Update libpython dependency. * **26.03.20:** - Initial release. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 487388a..775b278 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -3,7 +3,7 @@ # jenkins variables project_name: docker-mysql-workbench external_type: na -custom_version_command: "curl -sL https://dev.mysql.com/downloads/workbench/ |awk '/

MySQL Workbench/ {print $3;exit}'" +custom_version_command: curl -sL https://archlinux.org/packages/community/x86_64/mysql-workbench/json/ | jq -r '.pkgver' release_type: stable release_tag: latest ls_branch: master @@ -15,8 +15,8 @@ repo_vars: - DOCKERHUB_IMAGE = 'linuxserver/mysql-workbench' - DEV_DOCKERHUB_IMAGE = 'lsiodev/mysql-workbench' - PR_DOCKERHUB_IMAGE = 'lspipepr/mysql-workbench' - - DIST_IMAGE = 'ubuntu' - - MULTIARCH = 'false' + - DIST_IMAGE = 'arch' + - MULTIARCH = 'true' - CI = 'true' - CI_WEB = 'true' - CI_PORT = '3000' diff --git a/readme-vars.yml b/readme-vars.yml index b478528..2fcc367 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -11,6 +11,8 @@ project_blurb_optional_extras_enabled: false # supported architectures available_architectures: - { arch: "{{ arch_x86_64 }}", tag: "latest"} + - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} + - { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"} # development version development_versions: false @@ -27,8 +29,6 @@ param_volumes: param_usage_include_ports: true param_ports: - { external_port: "3000", internal_port: "3000", port_desc: "Mysql Workbench desktop gui." } -custom_params: - - { name: "cap-add", name_compose: "cap_add", value: ["IPC_LOCK"], desc: "Required for keyring functionality", array: "true" } # application setup block app_setup_block_enabled: true app_setup_block: | @@ -42,6 +42,7 @@ app_setup_block: | # changelog changelogs: + - { date: "15.02.22:", desc: "Rebase to Arch." } - { date: "20.04.21:", desc: "Rebase on focal." } - { date: "18.01.21:", desc: "Update libpython dependency." } - { date: "26.03.20:", desc: "Initial release." } diff --git a/root/defaults/menu.xml b/root/defaults/menu.xml new file mode 100644 index 0000000..1405938 --- /dev/null +++ b/root/defaults/menu.xml @@ -0,0 +1,8 @@ + + + +/usr/bin/xterm +/usr/sbin/mysql-workbench + + + diff --git a/root/etc/cont-init.d/56-openboxcopy b/root/etc/cont-init.d/56-openboxcopy new file mode 100644 index 0000000..f22df65 --- /dev/null +++ b/root/etc/cont-init.d/56-openboxcopy @@ -0,0 +1,7 @@ +#!/usr/bin/with-contenv bash + +# default file copies first run +[[ ! -f /config/.config/openbox/menu.xml ]] && \ + mkdir -p /config/.config/openbox && \ + cp /defaults/menu.xml /config/.config/openbox/menu.xml && \ + chown -R abc:abc /config/.config