diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 327eea57e..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,67 +0,0 @@ -version: 2.1 -jobs: - lint-scripts: - docker: - - image: koalaman/shellcheck-alpine - steps: - - checkout - - run: - name: lint-scripts - command: .circleci/lint-scripts.sh - - install-mysql: - docker: - - image: circleci/ruby:2.5.5 - - image: circleci/mysql:5.7-ram - command: --max_allowed_packet=64MB - environment: - MYSQL_DATABASE: zammad_test - MYSQL_USER: zammad_test - MYSQL_PASSWORD: zammad_test - environment: - RAILS_ENV: test - steps: - - checkout - - run: - name: install-mysql - command: .circleci/install.sh - - install-postgresql: - docker: - - image: circleci/ruby:2.5.5 - - image: circleci/postgres:11-ram - environment: - POSTGRES_DB: zammad_test - POSTGRES_USER: zammad_test - POSTGRES_PASSWORD: zammad_test - environment: - RAILS_ENV: test - steps: - - checkout - - run: - name: install-postgresql - command: .circleci/install.sh - - docker-image-build: - machine: true - steps: - - checkout - - run: - name: docker-image-build - command: .circleci/docker-image-build.sh - -workflows: - version: 2 - install_unittest_dockerbuild: - jobs: - - lint-scripts - - install-mysql: - requires: - - lint-scripts - - install-postgresql: - requires: - - lint-scripts - - docker-image-build: - requires: - - install-mysql - - install-postgresql diff --git a/.circleci/docker-image-build.sh b/.circleci/docker-image-build.sh deleted file mode 100755 index 8d864ad94..000000000 --- a/.circleci/docker-image-build.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash -# -# build zammads docker & docker-compose images - -set -o errexit -set -o pipefail - -REPO_ROOT="$(git rev-parse --show-toplevel)" -GITHUB_REPO_USER="zammad" -ZAMMAD_VERSION="$(git describe --tags | sed -e 's/-[a-z0-9]\{8,\}.*//g')" -export ZAMMAD_VERSION - -if [ "${CIRCLE_BRANCH}" == 'develop' ]; then - BUILD_SCRIPT="scripts/build_image.sh" - DOCKER_REPOSITORY="zammad" - export DOCKER_REPOSITORY - GITHUB_REPOSITORY="zammad-docker" -elif [ "${CIRCLE_BRANCH}" == 'stable' ]; then - BUILD_SCRIPT="hooks/build" - DOCKER_REPOSITORY="zammad-docker-compose" - export DOCKER_REPOSITORY - GITHUB_REPOSITORY="zammad-docker-compose" -else - echo "branch is ${CIRCLE_BRANCH}... no docker image build needed..." - exit 0 -fi - -# dockerhub auth -echo "${DOCKER_PASSWORD}" | docker login --username="${DOCKER_USERNAME}" --password-stdin - -# clone docker repo -git clone https://github.com/"${GITHUB_REPO_USER}"/"${GITHUB_REPOSITORY}" - -# enter dockerfile dir -cd "${REPO_ROOT}/${GITHUB_REPOSITORY}" - -# build & push docker image -# shellcheck disable=SC1090 -source "${REPO_ROOT}/${GITHUB_REPOSITORY}/${BUILD_SCRIPT}" diff --git a/.circleci/install.sh b/.github/ci.sh similarity index 87% rename from .circleci/install.sh rename to .github/ci.sh index 467b500f0..f008bb8d7 100755 --- a/.circleci/install.sh +++ b/.github/ci.sh @@ -12,15 +12,12 @@ DB_CONFIG="test:\n adapter: postgresql\n database: zammad_test\n host: 127.0. sudo apt-get update sudo apt-get install -y --no-install-recommends autoconf automake autotools-dev bison build-essential curl git-core libffi-dev libgdbm-dev libgmp-dev libmariadbclient-dev-compat libncurses5-dev libreadline-dev libsqlite3-dev libssl-dev libtool libxml2-dev libxslt1-dev libyaml-0-2 libyaml-dev patch pkg-config postfix sqlite3 zlib1g-dev libimlib2 libimlib2-dev -if [ "${CIRCLE_JOB}" == "install-mysql" ]; then +if [ "${ZAMMAD_DBS}" == "mysql" ]; then DB_ADAPTER="mysql2" INSTALL_OPTION="postgres" -elif [ "${CIRCLE_JOB}" == "install-postgresql" ]; then +elif [ "${ZAMMAD_DBS}" == "postgresql" ]; then DB_ADAPTER="postgresql" INSTALL_OPTION="mysql" -else - echo "nothing to do for circle ci job ${CIRCLE_JOB}..." - exit 0 fi # create db config diff --git a/.github/docker-image-build.sh b/.github/docker-image-build.sh new file mode 100755 index 000000000..2bed228d2 --- /dev/null +++ b/.github/docker-image-build.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# +# build zammads docker & docker-compose images + +set -o errexit +set -o pipefail + +DOCKER_REGISTRY="index.docker.io" +REPO_ROOT="$(git rev-parse --show-toplevel)" +REPO_USER="zammad" +ZAMMAD_VERSION="$(git describe --tags | sed -e 's/-[a-z0-9]\{8,\}.*//g')" + +# dockerhub auth +echo "${DOCKER_PASSWORD}" | docker login --username="${DOCKER_USERNAME}" --password-stdin + +# clone docker repo +git clone https://github.com/"${REPO_USER}"/"${GITHUB_REPOSITORY}" + +# enter dockerfile dir +cd "${REPO_ROOT}/${GITHUB_REPOSITORY}" + +for DOCKER_IMAGE in ${DOCKER_IMAGES}; do + echo "Build Zammad Docker image ${DOCKER_IMAGE} with version ${ZAMMAD_VERSION} for DockerHubs ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE} repo" + + if [ "${DOCKER_REPOSITORY}" == "zammad-docker-compose" ]; then + docker build --pull --no-cache --build-arg BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" -t ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE} -t ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE}-latest -t ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE}-${ZAMMAD_VERSION} -f containers/${DOCKER_IMAGE}/Dockerfile . + docker push ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE}-latest + else + docker build --pull --no-cache --build-arg BUILD_DATE="$(date -u +”%Y-%m-%dT%H:%M:%SZ”)" -t ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:latest -t ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${ZAMMAD_VERSION} . + fi + docker push ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE} + docker push ${DOCKER_REGISTRY}/${REPO_USER}/${DOCKER_REPOSITORY}:${DOCKER_IMAGE}-${ZAMMAD_VERSION} +fi diff --git a/.circleci/lint-scripts.sh b/.github/lint-scripts.sh similarity index 84% rename from .circleci/lint-scripts.sh rename to .github/lint-scripts.sh index da44ac63e..b03385df7 100755 --- a/.circleci/lint-scripts.sh +++ b/.github/lint-scripts.sh @@ -5,7 +5,8 @@ set -o errexit -CONFIG_DIR="./.circleci" +CONFIG_DIR=".github" + TMP_FILE="$(mktemp)" find "${CONFIG_DIR}" -type f -name "*.sh" > "${TMP_FILE}" @@ -15,4 +16,3 @@ while read -r FILE; do shellcheck -x "${FILE}" done < "${TMP_FILE}" -rm "${TMP_FILE}" diff --git a/.github/workflows/build-docker-compose-images.yaml b/.github/workflows/build-docker-compose-images.yaml new file mode 100644 index 000000000..0e56e0a44 --- /dev/null +++ b/.github/workflows/build-docker-compose-images.yaml @@ -0,0 +1,20 @@ +name: build-docker-compose-images + +on: + push: + branches: [stable] + +jobs: + build-docker-compose-images: + runs-on: ubuntu-latest + env: + DOCKER_IMAGES: "zammad zammad-elasticsearch zammad-postgresql" + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_REPOSITORY: "zammad-docker-compose" + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + GITHUB_REPOSITORY: "zammad-docker-compose" + steps: + - name: Checkout code + uses: actions/checkout@master + - name: Build docker image + run: .github/docker-image-build.sh diff --git a/.github/workflows/build-docker-image.yaml b/.github/workflows/build-docker-image.yaml new file mode 100644 index 000000000..e23184c06 --- /dev/null +++ b/.github/workflows/build-docker-image.yaml @@ -0,0 +1,20 @@ +name: build-docker-image + +on: + push: + branches: [develop] + +jobs: + build-docker-image: + runs-on: ubuntu-latest + env: + DOCKER_IMAGES: "zammad" + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_REPOSITORY: "zammad" + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + GITHUB_REPOSITORY: "zammad-docker" + steps: + - name: Checkout code + uses: actions/checkout@master + - name: Build docker image + run: .github/docker-image-build.sh diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 000000000..11cff71f4 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,31 @@ +name: ci + +on: + pull_request: + +jobs: + lint-bash-scripts: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + - name: Lint Bash scripts + uses: docker://koalaman/shellcheck-alpine:v0.7.0 + with: + args: .github/lint-scripts.sh + + ci: + runs-on: ubuntu-latest + needs: lint-scripts + strategy: + matrix: + dbs: + - mysql + - postgresql + env: + ZAMMAD_DBS: ${{ matrix.dbs }} + steps: + - name: Checkout + uses: actions/checkout@v1 + - name: CI + run: .github/ci.sh