diff --git a/.github/workflows/php-ci.yml b/.github/workflows/php-ci.yml index 026b602..3f204aa 100644 --- a/.github/workflows/php-ci.yml +++ b/.github/workflows/php-ci.yml @@ -118,8 +118,8 @@ jobs: - name: Build Base run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -135,8 +135,8 @@ jobs: - name: Test Base run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -156,8 +156,8 @@ jobs: - name: Build Mods run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -173,8 +173,8 @@ jobs: - name: Test Mods run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -194,8 +194,8 @@ jobs: - name: Build Prod run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -211,8 +211,8 @@ jobs: - name: Test Prod run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -232,8 +232,8 @@ jobs: - name: Build Work run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -249,8 +249,8 @@ jobs: - name: Test Work run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -283,8 +283,8 @@ jobs: - name: Publish images (only repo owner) run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; diff --git a/.github/workflows/php-nightly.yml b/.github/workflows/php-nightly.yml index b30ec80..5cd1121 100644 --- a/.github/workflows/php-nightly.yml +++ b/.github/workflows/php-nightly.yml @@ -15,7 +15,6 @@ on: - cron: '0 0 * * *' - # ------------------------------------------------------------------------------------------------- # What to run # ------------------------------------------------------------------------------------------------- @@ -55,6 +54,12 @@ jobs: RUNNER_CONTEXT: ${{ toJson(runner) }} run: echo "${RUNNER_CONTEXT}" + - name: Show git info + env: + RUNNER_CONTEXT: ${{ toJson(runner) }} + run: | + git log | head -20 + build: name: "[ ${{ matrix.version }} ]" @@ -113,8 +118,8 @@ jobs: - name: Build Base run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -130,8 +135,8 @@ jobs: - name: Test Base run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -151,8 +156,8 @@ jobs: - name: Build Mods run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -168,8 +173,8 @@ jobs: - name: Test Mods run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -189,8 +194,8 @@ jobs: - name: Build Prod run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -206,8 +211,8 @@ jobs: - name: Test Prod run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -227,8 +232,8 @@ jobs: - name: Build Work run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -244,8 +249,8 @@ jobs: - name: Test Work run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; @@ -278,8 +283,8 @@ jobs: - name: Publish images (only repo owner) run: | retry() { - for ((n=0; n<${RETRIES}; n++)); do - echo "[${n}] ${*}"; + for n in $(seq ${RETRIES}); do + echo "[${n}/${RETRIES}] ${*}"; if eval "${*}"; then return 0; fi; diff --git a/.travis.yml b/.travis.yml index 43070bb..9032a03 100644 --- a/.travis.yml +++ b/.travis.yml @@ -103,44 +103,44 @@ before_script: ### script: - if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then - echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin && + make login USERNAME="${DOCKER_USERNAME}" PASSWORD="${DOCKER_PASSWORD}" && if [ "${TRAVIS_BRANCH}" == "master" ]; then echo "Pushing latest"; - until docker push "${IMAGE}:${PHP}-base"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-mods"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-prod"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-work"; do sleep 1; done; + make push TAG="${PHP}-base" && + make push TAG="${PHP}-mods" && + make push TAG="${PHP}-prod" && + make push TAG="${PHP}-work"; elif [[ ${TRAVIS_BRANCH} =~ ^(release-[.0-9]+)$ ]]; then echo "Pushing branch ${TRAVIS_BRANCH}"; - docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}" && - docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}" && - docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}" && - docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}" && - until docker push "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}"; do sleep 1; done; + make tag OLD_TAG="${PHP}-base" NEW_TAG="${PHP}-base-${TRAVIS_BRANCH}" && + make tag OLD_TAG="${PHP}-mods" NEW_TAG="${PHP}-mods-${TRAVIS_BRANCH}" && + make tag OLD_TAG="${PHP}-prod" NEW_TAG="${PHP}-prod-${TRAVIS_BRANCH}" && + make tag OLD_TAG="${PHP}-work" NEW_TAG="${PHP}-work-${TRAVIS_BRANCH}" && + make push TAG="${PHP}-base-${TRAVIS_BRANCH}" && + make push TAG="${PHP}-mods-${TRAVIS_BRANCH}" && + make push TAG="${PHP}-prod-${TRAVIS_BRANCH}" && + make push TAG="${PHP}-work-${TRAVIS_BRANCH}"; elif [ -n "${TRAVIS_TAG}" ]; then echo "Pushing tag ${TRAVIS_TAG}"; - docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_TAG}" && - docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}" && - docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}" && - docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_TAG}" && - until docker push "${IMAGE}:${PHP}-base-${TRAVIS_TAG}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-work-${TRAVIS_TAG}"; do sleep 1; done; + make tag OLD_TAG="${PHP}-base" NEW_TAG="${PHP}-base-${TRAVIS_TAG}" && + make tag OLD_TAG="${PHP}-mods" NEW_TAG="${PHP}-mods-${TRAVIS_TAG}" && + make tag OLD_TAG="${PHP}-prod" NEW_TAG="${PHP}-prod-${TRAVIS_TAG}" && + make tag OLD_TAG="${PHP}-work" NEW_TAG="${PHP}-work-${TRAVIS_TAG}" && + make push TAG="${PHP}-base-${TRAVIS_TAG}" && + make push TAG="${PHP}-mods-${TRAVIS_TAG}" && + make push TAG="${PHP}-prod-${TRAVIS_TAG}" && + make push TAG="${PHP}-work-${TRAVIS_TAG}"; elif [ "${TRAVIS_EVENT_TYPE}" = "cron" ]; then if MY_TAG="$( git describe --exact-match "$(git rev-parse HEAD)" 2>/dev/null )"; then echo "Pushing cron tag ${MY_TAG}"; - docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${MY_TAG}" && - docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${MY_TAG}" && - docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${MY_TAG}" && - docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${MY_TAG}" && - until docker push "${IMAGE}:${PHP}-base-${MY_TAG}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-mods-${MY_TAG}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-prod-${MY_TAG}"; do sleep 1; done; - until docker push "${IMAGE}:${PHP}-work-${MY_TAG}"; do sleep 1; done; + make tag OLD_TAG="${PHP}-base" NEW_TAG="${PHP}-base-${MY_TAG}" && + make tag OLD_TAG="${PHP}-mods" NEW_TAG="${PHP}-mods-${MY_TAG}" && + make tag OLD_TAG="${PHP}-prod" NEW_TAG="${PHP}-prod-${MY_TAG}" && + make tag OLD_TAG="${PHP}-work" NEW_TAG="${PHP}-work-${MY_TAG}" && + make push TAG="${PHP}-base-${MY_TAG}" && + make push TAG="${PHP}-mods-${MY_TAG}" && + make push TAG="${PHP}-prod-${MY_TAG}" && + make push TAG="${PHP}-work-${MY_TAG}"; fi else echo "Skipping push to dockerhub on normal branches"; diff --git a/CHANGELOG.md b/CHANGELOG.md index 557a0c5..dc75419 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ ## Unreleased +## Release 0.107 + +#### Fixed +- Fixes login to Dockerhub for CI jobs + + ## Release 0.106 #### Fixed diff --git a/Makefile b/Makefile index a49e1de..855070d 100644 --- a/Makefile +++ b/Makefile @@ -73,12 +73,14 @@ help: gen-readme: ifeq ($(strip $(VERSION)),) + @echo "Generate README.md for all PHP versions" cd build; ./gen-readme.sh else + @echo "Generate README.md for PHP $(VERSION)" @$(MAKE) --no-print-directory _check-version @$(MAKE) --no-print-directory _check-image-exists _EXIST_IMAGE=base @$(MAKE) --no-print-directory _check-image-exists _EXIST_IMAGE=mods - cd build; ./gen-readme.sh ${VERSION} + cd build; ./gen-readme.sh $(VERSION) endif @@ -227,6 +229,52 @@ test-work: _check-version ./tests/test.sh ${VERSION} work +# ------------------------------------------------------------------------------------------------- +# DOCKERHUB TARGETS +# ------------------------------------------------------------------------------------------------- +login: +ifeq ($(strip $(USERNAME)),) + @$(info This make target requires the USERNAME variable to be set.) + @$(info make login USERNAME= PASSWORD=) + @$(info ) + @$(error Exiting) +endif +ifeq ($(strip $(PASSWORD)),) + @$(info This make target requires the PASSWORD variable to be set.) + @$(info make login USERNAME= PASSWORD=) + @$(info ) + @$(error Exiting) +endif + @yes | docker login --username "${USERNAME}" --password "${PASSWORD}" + + +push: +ifeq ($(strip $(TAG)),) + @$(info This make target requires the TAG variable to be set.) + @$(info make push TAG=) + @$(info ) + @$(error Exiting) +endif + docker push $(IMAGE):$(TAG) + + +tag: +ifeq ($(strip $(OLD_TAG)),) + @$(info This make target requires the OLD_TAG variable to be set.) + @$(info make tag OLD_TAG= NEW_TAG=) + @$(info ) + @$(error Exiting) +endif +ifeq ($(strip $(NEW_TAG)),) + @$(info This make target requires the NEW_TAG variable to be set.) + @$(info make tag OLD_TAG= NEW_TAG=) + @$(info ) + @$(error Exiting) +endif + docker tag $(IMAGE):$(OLD_TAG) $(IMAGE):$(NEW_TAG) + + + # ------------------------------------------------------------------------------------------------- # HELPER TARGETS # ------------------------------------------------------------------------------------------------- @@ -274,6 +322,7 @@ endif endif endif endif + @echo "Version $(VERSION) is valid" _check-image-exists: