diff --git a/.github/workflows/action-schedule_master.yml b/.github/workflows/action-schedule_master.yml new file mode 100644 index 0000000..6bbecdb --- /dev/null +++ b/.github/workflows/action-schedule_master.yml @@ -0,0 +1,298 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: nightly + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Nightly: At 00:00 on Sunday, Tuesday, and Thursday + schedule: + - cron: '0 0 * * 0,2,4' + # Dispatch: allows for manual trigger via GH UI + workflow_dispatch: + + +jobs: + + # ----------------------------------------------------------------------------------------------- + # (1/8) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-nightly_master.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/8) Configure Build and Deploy Matrices + # ----------------------------------------------------------------------------------------------- + configure: + needs: [params] + uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master + with: + enabled: true + can_deploy: true + is_scheduled: true + versions: ${{ needs.params.outputs.versions }} + refs: ${{ needs.params.outputs.refs }} + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + # ----------------------------------------------------------------------------------------------- + # (3/8) Build & Test base + # ----------------------------------------------------------------------------------------------- + build-base: + needs: + - configure + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + stage_prev: '' + + test-base: + needs: + - configure + - build-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + + + # ----------------------------------------------------------------------------------------------- + # (4/8) Build & Test mods + # ----------------------------------------------------------------------------------------------- + build-mods: + needs: + - configure + - build-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + stage_prev: base + + test-mods: + needs: + - configure + - build-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + + + # ----------------------------------------------------------------------------------------------- + # (5/8) Build & Test prod + # ----------------------------------------------------------------------------------------------- + build-prod: + needs: + - configure + - build-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + stage_prev: mods + + test-prod: + needs: + - configure + - build-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + + + # ----------------------------------------------------------------------------------------------- + # (6/8) Build & Test work + # ----------------------------------------------------------------------------------------------- + build-work: + needs: + - configure + - build-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + stage_prev: prod + + test-work: + needs: + - configure + - build-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + + + # ----------------------------------------------------------------------------------------------- + # (7/8) Push images + # ----------------------------------------------------------------------------------------------- + push-base: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-mods: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-prod: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-work: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + # ----------------------------------------------------------------------------------------------- + # (8/8) Push Manifests + # ----------------------------------------------------------------------------------------------- + manifest-base: + needs: + - configure + - push-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: base + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-mods: + needs: + - configure + - push-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: mods + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-prod: + needs: + - configure + - push-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: prod + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-work: + needs: + - configure + - push-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: work + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.github/workflows/action-schedule_tags.yml b/.github/workflows/action-schedule_tags.yml new file mode 100644 index 0000000..35fb082 --- /dev/null +++ b/.github/workflows/action-schedule_tags.yml @@ -0,0 +1,298 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: nightly + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Nightly: At 00:00 on Sunday, Tuesday, and Thursday + schedule: + - cron: '0 0 * * 0,2,4' + # Dispatch: allows for manual trigger via GH UI + workflow_dispatch: + + +jobs: + + # ----------------------------------------------------------------------------------------------- + # (1/8) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params-nightly_tags.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/8) Configure Build and Deploy Matrices + # ----------------------------------------------------------------------------------------------- + configure: + needs: [params] + uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master + with: + enabled: true + can_deploy: true + is_scheduled: true + versions: ${{ needs.params.outputs.versions }} + refs: ${{ needs.params.outputs.refs }} + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + # ----------------------------------------------------------------------------------------------- + # (3/8) Build & Test base + # ----------------------------------------------------------------------------------------------- + build-base: + needs: + - configure + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + stage_prev: '' + + test-base: + needs: + - configure + - build-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + + + # ----------------------------------------------------------------------------------------------- + # (4/8) Build & Test mods + # ----------------------------------------------------------------------------------------------- + build-mods: + needs: + - configure + - build-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + stage_prev: base + + test-mods: + needs: + - configure + - build-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + + + # ----------------------------------------------------------------------------------------------- + # (5/8) Build & Test prod + # ----------------------------------------------------------------------------------------------- + build-prod: + needs: + - configure + - build-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + stage_prev: mods + + test-prod: + needs: + - configure + - build-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + + + # ----------------------------------------------------------------------------------------------- + # (6/8) Build & Test work + # ----------------------------------------------------------------------------------------------- + build-work: + needs: + - configure + - build-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + stage_prev: prod + + test-work: + needs: + - configure + - build-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + + + # ----------------------------------------------------------------------------------------------- + # (7/8) Push images + # ----------------------------------------------------------------------------------------------- + push-base: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-mods: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-prod: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-work: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + # ----------------------------------------------------------------------------------------------- + # (8/8) Push Manifests + # ----------------------------------------------------------------------------------------------- + manifest-base: + needs: + - configure + - push-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: base + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-mods: + needs: + - configure + - push-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: mods + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-prod: + needs: + - configure + - push-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: prod + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-work: + needs: + - configure + - push-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: work + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml new file mode 100644 index 0000000..2fef357 --- /dev/null +++ b/.github/workflows/action.yml @@ -0,0 +1,298 @@ +--- + +# ------------------------------------------------------------------------------------------------- +# Job Name +# ------------------------------------------------------------------------------------------------- +name: build + + +# ------------------------------------------------------------------------------------------------- +# When to run +# ------------------------------------------------------------------------------------------------- +on: + # Push or pull_request will be determined in jobs.configure.enabled + push: + pull_request: + # Dispatch: allows for manual trigger via GH UI + workflow_dispatch: + + +jobs: + + # ----------------------------------------------------------------------------------------------- + # (1/8) Determine parameter settings + # ----------------------------------------------------------------------------------------------- + params: + uses: ./.github/workflows/params.yml + + + # ----------------------------------------------------------------------------------------------- + # (2/8) Configure Build and Deploy Matrices + # ----------------------------------------------------------------------------------------------- + configure: + needs: [params] + uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master + with: + enabled: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && (github.event.pull_request.user.login != 'cytopia')) }} + can_deploy: ${{ (github.repository == 'devilbox/docker-php-fpm') && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-')) }} + is_scheduled: false + versions: ${{ needs.params.outputs.versions }} + refs: ${{ needs.params.outputs.refs }} + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + # ----------------------------------------------------------------------------------------------- + # (3/8) Build & Test base + # ----------------------------------------------------------------------------------------------- + build-base: + needs: + - configure + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + stage_prev: '' + + test-base: + needs: + - configure + - build-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + + + # ----------------------------------------------------------------------------------------------- + # (4/8) Build & Test mods + # ----------------------------------------------------------------------------------------------- + build-mods: + needs: + - configure + - build-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + stage_prev: base + + test-mods: + needs: + - configure + - build-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + + + # ----------------------------------------------------------------------------------------------- + # (5/8) Build & Test prod + # ----------------------------------------------------------------------------------------------- + build-prod: + needs: + - configure + - build-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + stage_prev: mods + + test-prod: + needs: + - configure + - build-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + + + # ----------------------------------------------------------------------------------------------- + # (6/8) Build & Test work + # ----------------------------------------------------------------------------------------------- + build-work: + needs: + - configure + - build-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + run_tests: false + upload_artifact: true + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + stage_prev: prod + + test-work: + needs: + - configure + - build-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master + with: + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + + + # ----------------------------------------------------------------------------------------------- + # (7/8) Push images + # ----------------------------------------------------------------------------------------------- + push-base: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: base + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-mods: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: mods + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-prod: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: prod + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + push-work: + needs: + - configure + - test-base + - test-prod + - test-mods + - test-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_build }} + artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} + stage: work + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + # ----------------------------------------------------------------------------------------------- + # (8/8) Push Manifests + # ----------------------------------------------------------------------------------------------- + manifest-base: + needs: + - configure + - push-base + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: base + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-mods: + needs: + - configure + - push-mods + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: mods + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-prod: + needs: + - configure + - push-prod + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: prod + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} + + manifest-work: + needs: + - configure + - push-work + uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master + with: + can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }} + has_refs: ${{ needs.configure.outputs.has_refs == 'true' }} + matrix: ${{ needs.configure.outputs.matrix_deploy }} + versions: ${{ needs.configure.outputs.versions }} + stage: work + secrets: + dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.github/workflows/action_branch.yml b/.github/workflows/action_branch.yml deleted file mode 100644 index 5af1cc2..0000000 --- a/.github/workflows/action_branch.yml +++ /dev/null @@ -1,257 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: build - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - workflow_dispatch: - push: - - -jobs: - - # ----------------------------------------------------------------------------------------------- - # (1/8) Determine parameter settings - # ----------------------------------------------------------------------------------------------- - params: - uses: ./.github/workflows/params.yml - - - # ----------------------------------------------------------------------------------------------- - # (2/8) Configure Build and Deploy Matrices - # ----------------------------------------------------------------------------------------------- - configure: - needs: [params] - uses: ./.github/workflows/zzz-reuse-configure.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - matrix: ${{ needs.params.outputs.matrix }} - refs: ${{ needs.params.outputs.refs }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (3/8) Build & Test base - # ----------------------------------------------------------------------------------------------- - base: - needs: - - params - - configure - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: base - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #base-test: - # needs: - # - params - # - configure - # - base - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: base - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (4/8) Build & Test mods - # ----------------------------------------------------------------------------------------------- - mods: - needs: - - params - - configure - - base - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - run_tests: false - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - mods-test: - needs: - - params - - configure - - base - - mods - uses: ./.github/workflows/zzz-reuse-test.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (5/8) Build & Test prod - # ----------------------------------------------------------------------------------------------- - prod: - needs: - - params - - configure - - base - - mods - - mods-test - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: prod - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #prod-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: prod - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (6/8) Build & Test work - # ----------------------------------------------------------------------------------------------- - work: - needs: - - params - - configure - - base - - mods - - prod - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: work - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #work-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # - prod-test - # - work - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: work - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (7/8) Push images - # ----------------------------------------------------------------------------------------------- - push-image: - needs: - - params - - configure - - base - - mods - - prod - - work - uses: ./.github/workflows/zzz-reuse-deploy-images.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (8/8) Push Manifests - # ----------------------------------------------------------------------------------------------- - push-manifest: - needs: - - params - - configure - - base - - mods - - prod - - work - - push-image - uses: ./.github/workflows/zzz-reuse-deploy-manifests.yml - with: - enabled: true - can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - deploy_matrix: ${{ needs.configure.outputs.matrix_deploy }} - params_matrix: ${{ needs.params.outputs.matrix }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.github/workflows/action_pull_request.yml b/.github/workflows/action_pull_request.yml deleted file mode 100644 index 0a4a725..0000000 --- a/.github/workflows/action_pull_request.yml +++ /dev/null @@ -1,259 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: build - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - workflow_dispatch: - pull_request: - - -jobs: - - # ----------------------------------------------------------------------------------------------- - # (1/8) Determine parameter settings - # ----------------------------------------------------------------------------------------------- - params: - uses: ./.github/workflows/params.yml - # Only run for forks (contributor) - if: github.event.pull_request.head.repo.fork - - - # ----------------------------------------------------------------------------------------------- - # (2/8) Configure Build and Deploy Matrices - # ----------------------------------------------------------------------------------------------- - configure: - needs: [params] - uses: ./.github/workflows/zzz-reuse-configure.yml - with: - enabled: true - can_deploy: false - matrix: ${{ needs.params.outputs.matrix }} - refs: ${{ needs.params.outputs.refs }} - secrets: - dockerhub_username: "" - dockerhub_password: "" - - - # ----------------------------------------------------------------------------------------------- - # (3/8) Build & Test base - # ----------------------------------------------------------------------------------------------- - base: - needs: - - params - - configure - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: false - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: base - run_tests: true - secrets: - dockerhub_username: "" - dockerhub_password: "" - - #base-test: - # needs: - # - params - # - configure - # - base - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: base - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (4/8) Build & Test mods - # ----------------------------------------------------------------------------------------------- - mods: - needs: - - params - - configure - - base - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: false - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - run_tests: false - secrets: - dockerhub_username: "" - dockerhub_password: "" - - mods-test: - needs: - - params - - configure - - base - - mods - uses: ./.github/workflows/zzz-reuse-test.yml - with: - enabled: true - can_deploy: false - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - secrets: - dockerhub_username: "" - dockerhub_password: "" - - - # ----------------------------------------------------------------------------------------------- - # (5/8) Build & Test prod - # ----------------------------------------------------------------------------------------------- - prod: - needs: - - params - - configure - - base - - mods - - mods-test - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: false - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: prod - run_tests: true - secrets: - dockerhub_username: "" - dockerhub_password: "" - - #prod-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: prod - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (6/8) Build & Test work - # ----------------------------------------------------------------------------------------------- - work: - needs: - - params - - configure - - base - - mods - - prod - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: false - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: work - run_tests: true - secrets: - dockerhub_username: "" - dockerhub_password: "" - - #work-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # - prod-test - # - work - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: work - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (7/8) Push images - # ----------------------------------------------------------------------------------------------- - push-image: - needs: - - params - - configure - - base - - mods - - prod - - work - uses: ./.github/workflows/zzz-reuse-deploy-images.yml - with: - enabled: true - can_deploy: false - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: "" - dockerhub_password: "" - - - # ----------------------------------------------------------------------------------------------- - # (8/8) Push Manifests - # ----------------------------------------------------------------------------------------------- - push-manifest: - needs: - - params - - configure - - base - - mods - - prod - - work - - push-image - uses: ./.github/workflows/zzz-reuse-deploy-manifests.yml - with: - enabled: true - can_deploy: false - deploy_matrix: ${{ needs.configure.outputs.matrix_deploy }} - params_matrix: ${{ needs.params.outputs.matrix }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: "" - dockerhub_password: "" diff --git a/.github/workflows/action_schedule_master.yml b/.github/workflows/action_schedule_master.yml deleted file mode 100644 index 9d4db68..0000000 --- a/.github/workflows/action_schedule_master.yml +++ /dev/null @@ -1,259 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: nightly - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - # Runs daily - workflow_dispatch: - schedule: - - cron: '0 0 * * *' - - -jobs: - - # ----------------------------------------------------------------------------------------------- - # (1/8) Determine parameter settings - # ----------------------------------------------------------------------------------------------- - params: - uses: ./.github/workflows/params-nightly_master.yml - - - # ----------------------------------------------------------------------------------------------- - # (2/8) Configure Build and Deploy Matrices - # ----------------------------------------------------------------------------------------------- - configure: - needs: [params] - uses: ./.github/workflows/zzz-reuse-configure.yml - with: - enabled: true - can_deploy: true - matrix: ${{ needs.params.outputs.matrix }} - refs: ${{ needs.params.outputs.refs }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (3/8) Build & Test base - # ----------------------------------------------------------------------------------------------- - base: - needs: - - params - - configure - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: base - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #base-test: - # needs: - # - params - # - configure - # - base - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: base - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (4/8) Build & Test mods - # ----------------------------------------------------------------------------------------------- - mods: - needs: - - params - - configure - - base - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - run_tests: false - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - mods-test: - needs: - - params - - configure - - base - - mods - uses: ./.github/workflows/zzz-reuse-test.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (5/8) Build & Test prod - # ----------------------------------------------------------------------------------------------- - prod: - needs: - - params - - configure - - base - - mods - - mods-test - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: prod - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #prod-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: prod - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (6/8) Build & Test work - # ----------------------------------------------------------------------------------------------- - work: - needs: - - params - - configure - - base - - mods - - prod - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: work - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #work-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # - prod-test - # - work - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: work - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (7/8) Push images - # ----------------------------------------------------------------------------------------------- - push-image: - needs: - - params - - configure - - base - - mods - - prod - - work - uses: ./.github/workflows/zzz-reuse-deploy-images.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (8/8) Push Manifests - # ----------------------------------------------------------------------------------------------- - push-manifest: - needs: - - params - - configure - - base - - mods - - prod - - work - - push-image - uses: ./.github/workflows/zzz-reuse-deploy-manifests.yml - with: - enabled: true - can_deploy: true - deploy_matrix: ${{ needs.configure.outputs.matrix_deploy }} - params_matrix: ${{ needs.params.outputs.matrix }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.github/workflows/action_schedule_tags.yml b/.github/workflows/action_schedule_tags.yml deleted file mode 100644 index 557ef10..0000000 --- a/.github/workflows/action_schedule_tags.yml +++ /dev/null @@ -1,259 +0,0 @@ ---- - -# ------------------------------------------------------------------------------------------------- -# Job Name -# ------------------------------------------------------------------------------------------------- -name: nightly - - -# ------------------------------------------------------------------------------------------------- -# When to run -# ------------------------------------------------------------------------------------------------- -on: - # Runs daily - workflow_dispatch: - schedule: - - cron: '0 0 * * *' - - -jobs: - - # ----------------------------------------------------------------------------------------------- - # (1/8) Determine parameter settings - # ----------------------------------------------------------------------------------------------- - params: - uses: ./.github/workflows/params-nightly_tags.yml - - - # ----------------------------------------------------------------------------------------------- - # (2/8) Configure Build and Deploy Matrices - # ----------------------------------------------------------------------------------------------- - configure: - needs: [params] - uses: ./.github/workflows/zzz-reuse-configure.yml - with: - enabled: true - can_deploy: true - matrix: ${{ needs.params.outputs.matrix }} - refs: ${{ needs.params.outputs.refs }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (3/8) Build & Test base - # ----------------------------------------------------------------------------------------------- - base: - needs: - - params - - configure - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: base - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #base-test: - # needs: - # - params - # - configure - # - base - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: base - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (4/8) Build & Test mods - # ----------------------------------------------------------------------------------------------- - mods: - needs: - - params - - configure - - base - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - run_tests: false - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - mods-test: - needs: - - params - - configure - - base - - mods - uses: ./.github/workflows/zzz-reuse-test.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: mods - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (5/8) Build & Test prod - # ----------------------------------------------------------------------------------------------- - prod: - needs: - - params - - configure - - base - - mods - - mods-test - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: prod - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #prod-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: prod - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (6/8) Build & Test work - # ----------------------------------------------------------------------------------------------- - work: - needs: - - params - - configure - - base - - mods - - prod - uses: ./.github/workflows/zzz-reuse-build.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - flavour: work - run_tests: true - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - #work-test: - # needs: - # - params - # - configure - # - base - # - base-test - # - mods - # - mods-test - # - prod - # - prod-test - # - work - # uses: ./.github/workflows/zzz-reuse-test.yml - # with: - # enabled: true - # can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} - # build_matrix: ${{ needs.configure.outputs.matrix_build }} - # has_refs: ${{ needs.configure.outputs.has_refs }} - # artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - # flavour: work - # secrets: - # dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - # dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (7/8) Push images - # ----------------------------------------------------------------------------------------------- - push-image: - needs: - - params - - configure - - base - - mods - - prod - - work - uses: ./.github/workflows/zzz-reuse-deploy-images.yml - with: - enabled: true - can_deploy: true - build_matrix: ${{ needs.configure.outputs.matrix_build }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ----------------------------------------------------------------------------------------------- - # (8/8) Push Manifests - # ----------------------------------------------------------------------------------------------- - push-manifest: - needs: - - params - - configure - - base - - mods - - prod - - work - - push-image - uses: ./.github/workflows/zzz-reuse-deploy-manifests.yml - with: - enabled: true - can_deploy: true - deploy_matrix: ${{ needs.configure.outputs.matrix_deploy }} - params_matrix: ${{ needs.params.outputs.matrix }} - has_refs: ${{ needs.configure.outputs.has_refs }} - artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} - secrets: - dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} - dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} diff --git a/.github/workflows/params-nightly_master.yml b/.github/workflows/params-nightly_master.yml index adca58c..1bc3cfa 100644 --- a/.github/workflows/params-nightly_master.yml +++ b/.github/workflows/params-nightly_master.yml @@ -10,7 +10,7 @@ name: params # Custom Variables # ------------------------------------------------------------------------------------------------- env: - MATRIX: >- + VERSIONS: > [ { "NAME": "PHP", @@ -22,9 +22,15 @@ env: "NAME": "PHP", "VERSION": ["5.3", "5.4", "5.5", "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"], "FLAVOUR": ["default"], - "ARCH": ["linux/amd64"] + "ARCH": ["linux/amd64", "linux/arm64"] } ] + REFS: > + { + "DEFAULT_BRANCH": "master", + "BRANCHES": "master", + "NUM_LATEST_TAGS": 0 + } # ------------------------------------------------------------------------------------------------- @@ -32,12 +38,15 @@ env: # ------------------------------------------------------------------------------------------------- on: workflow_call: + ### + ### OUTPUTS + ### outputs: - matrix: - description: "The determined version matrix" - value: ${{ jobs.params.outputs.matrix }} + versions: + description: "JSON string for versions. Use via: fromJson(needs.params.versions)" + value: ${{ jobs.params.outputs.versions }} refs: - description: "The determined git ref matrix (only during scheduled run)" + description: "JSON string for refs. Use via: fromJson(needs.params.refs)" value: ${{ jobs.params.outputs.refs }} jobs: @@ -45,37 +54,16 @@ jobs: runs-on: ubuntu-latest outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - refs: ${{ steps.set-refs.outputs.matrix }} + versions: ${{ steps.set-versions.outputs.versions }} + refs: ${{ steps.set-refs.outputs.refs }} steps: - - name: "[Set-Output] Matrix" - id: set-matrix + - name: "[Set-Output] jsonify VERSIONS" + id: set-versions run: | - echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + echo "::set-output name=versions::$( echo '${{ env.VERSIONS }}' | jq -M -c )" - - name: "[Set-Output] Matrix 'Refs' (master branch and latest tag)" + - name: "[Set-Output] jsonify REFS" id: set-refs - uses: cytopia/git-ref-matrix-action@v0.1.4 - with: - repository_default_branch: master - branches: master - num_latest_tags: 0 - if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} - - - name: "[DEBUG] Show settings'" run: | - echo 'Matrix' - echo '--------------------' - echo '${{ steps.set-matrix.outputs.matrix }}' - echo - - echo 'Matrix: Refs' - echo '--------------------' - echo '${{ steps.set-matrix-refs.outputs.matrix }}' - echo - - echo 'GitHub event_name' - echo '--------------------' - echo '${{ github.event_name }}' - echo + echo "::set-output name=refs::$( echo '${{ env.REFS }}' | jq -M -c )" diff --git a/.github/workflows/params-nightly_tags.yml b/.github/workflows/params-nightly_tags.yml index 03a7e2e..6b4afcd 100644 --- a/.github/workflows/params-nightly_tags.yml +++ b/.github/workflows/params-nightly_tags.yml @@ -10,7 +10,7 @@ name: params # Custom Variables # ------------------------------------------------------------------------------------------------- env: - MATRIX: >- + VERSIONS: > [ { "NAME": "PHP", @@ -22,9 +22,15 @@ env: "NAME": "PHP", "VERSION": ["5.3", "5.4", "5.5", "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"], "FLAVOUR": ["default"], - "ARCH": ["linux/amd64"] + "ARCH": ["linux/amd64", "linux/arm64"] } ] + REFS: > + { + "DEFAULT_BRANCH": "master", + "BRANCHES": "", + "NUM_LATEST_TAGS": 1 + } # ------------------------------------------------------------------------------------------------- @@ -32,12 +38,15 @@ env: # ------------------------------------------------------------------------------------------------- on: workflow_call: + ### + ### OUTPUTS + ### outputs: - matrix: - description: "The determined version matrix" - value: ${{ jobs.params.outputs.matrix }} + versions: + description: "JSON string for versions. Use via: fromJson(needs.params.versions)" + value: ${{ jobs.params.outputs.versions }} refs: - description: "The determined git ref matrix (only during scheduled run)" + description: "JSON string for refs. Use via: fromJson(needs.params.refs)" value: ${{ jobs.params.outputs.refs }} jobs: @@ -45,37 +54,16 @@ jobs: runs-on: ubuntu-latest outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - refs: ${{ steps.set-refs.outputs.matrix }} + versions: ${{ steps.set-versions.outputs.versions }} + refs: ${{ steps.set-refs.outputs.refs }} steps: - - name: "[Set-Output] Matrix" - id: set-matrix + - name: "[Set-Output] jsonify VERSIONS" + id: set-versions run: | - echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + echo "::set-output name=versions::$( echo '${{ env.VERSIONS }}' | jq -M -c )" - - name: "[Set-Output] Matrix 'Refs' (master branch and latest tag)" + - name: "[Set-Output] jsonify REFS" id: set-refs - uses: cytopia/git-ref-matrix-action@v0.1.4 - with: - repository_default_branch: master - branches: "" - num_latest_tags: 1 - if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} - - - name: "[DEBUG] Show settings'" run: | - echo 'Matrix' - echo '--------------------' - echo '${{ steps.set-matrix.outputs.matrix }}' - echo - - echo 'Matrix: Refs' - echo '--------------------' - echo '${{ steps.set-matrix-refs.outputs.matrix }}' - echo - - echo 'GitHub event_name' - echo '--------------------' - echo '${{ github.event_name }}' - echo + echo "::set-output name=refs::$( echo '${{ env.REFS }}' | jq -M -c )" diff --git a/.github/workflows/params.yml b/.github/workflows/params.yml index 503fc42..39113b7 100644 --- a/.github/workflows/params.yml +++ b/.github/workflows/params.yml @@ -10,7 +10,7 @@ name: params # Custom Variables # ------------------------------------------------------------------------------------------------- env: - MATRIX: >- + VERSIONS: > [ { "NAME": "PHP", @@ -22,9 +22,15 @@ env: "NAME": "PHP", "VERSION": ["5.3", "5.4", "5.5", "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"], "FLAVOUR": ["default"], - "ARCH": ["linux/amd64"] + "ARCH": ["linux/amd64", "linux/arm64"] } ] + REFS: > + { + "DEFAULT_BRANCH": "master", + "BRANCHES": "", + "NUM_LATEST_TAGS": 0 + } # ------------------------------------------------------------------------------------------------- @@ -32,12 +38,15 @@ env: # ------------------------------------------------------------------------------------------------- on: workflow_call: + ### + ### OUTPUTS + ### outputs: - matrix: - description: "The determined version matrix" - value: ${{ jobs.params.outputs.matrix }} + versions: + description: "JSON string for versions. Use via: fromJson(needs.params.versions)" + value: ${{ jobs.params.outputs.versions }} refs: - description: "The determined git ref matrix (only during scheduled run)" + description: "JSON string for refs. Use via: fromJson(needs.params.refs)" value: ${{ jobs.params.outputs.refs }} jobs: @@ -45,37 +54,16 @@ jobs: runs-on: ubuntu-latest outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - refs: ${{ steps.set-refs.outputs.matrix }} + versions: ${{ steps.set-versions.outputs.versions }} + refs: ${{ steps.set-refs.outputs.refs }} steps: - - name: "[Set-Output] Matrix" - id: set-matrix + - name: "[Set-Output] jsonify VERSIONS" + id: set-versions run: | - echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )" + echo "::set-output name=versions::$( echo '${{ env.VERSIONS }}' | jq -M -c )" - - name: "[Set-Output] Matrix 'Refs' (master branch and latest tag)" + - name: "[Set-Output] jsonify REFS" id: set-refs - uses: cytopia/git-ref-matrix-action@v0.1.4 - with: - repository_default_branch: master - branches: master - num_latest_tags: 1 - if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} - - - name: "[DEBUG] Show settings'" run: | - echo 'Matrix' - echo '--------------------' - echo '${{ steps.set-matrix.outputs.matrix }}' - echo - - echo 'Matrix: Refs' - echo '--------------------' - echo '${{ steps.set-matrix-refs.outputs.matrix }}' - echo - - echo 'GitHub event_name' - echo '--------------------' - echo '${{ github.event_name }}' - echo + echo "::set-output name=refs::$( echo '${{ env.REFS }}' | jq -M -c )" diff --git a/.github/workflows/zzz-reuse-build.yml b/.github/workflows/zzz-reuse-build.yml deleted file mode 100644 index 333cf38..0000000 --- a/.github/workflows/zzz-reuse-build.yml +++ /dev/null @@ -1,430 +0,0 @@ ---- -name: Build multi-arch images - -on: - workflow_call: - ### - ### Variables - ### - inputs: - enabled: - description: 'Determines wheather this workflow is enabled at all (will run or skip).' - required: true - type: boolean - can_deploy: - description: 'Determines wheather this workflow will also deploy (login and push).' - required: true - type: boolean - build_matrix: - description: 'The build matrix' - required: true - type: string - has_refs: - description: 'The ref build matrix as JSON string (list of git refs to build/deploy).' - required: true - type: string - artifact_prefix: - description: 'Unique artifact name prefix (to avoid overriding existing artifcats during parallel runs).' - required: true - type: string - flavour: - description: 'The flavour to build (base, mods, prod or work).' - required: true - type: string - run_tests: - description: 'Dertermines weather we run integration tests or not.' - required: true - type: boolean - - ### - ### Secrets - ### - secrets: - dockerhub_username: - description: 'The username for Dockerhub.' - required: false - dockerhub_password: - description: 'The password for Dockerhub.' - required: false - -jobs: - # ----------------------------------------------------------------------------------------------- - # JOB: BUILD - # ----------------------------------------------------------------------------------------------- - build: - name: ${{ matrix.name }}-${{ matrix.version }}-${{ inputs.flavour }} (${{ matrix.arch }}) ${{ matrix.refs }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: ${{ fromJson(inputs.build_matrix) }} - if: inputs.enabled - steps: - - # ------------------------------------------------------------ - # Setup repository - # ------------------------------------------------------------ - - name: "[SETUP] Checkout repository (current)" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - if: inputs.has_refs == 0 - - - name: "[SETUP] Checkout repository (ref: ${{ matrix.refs }})" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: ${{ matrix.refs }} - if: inputs.has_refs != 0 - - - name: "[SETUP] Setup QEMU environment" - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: all - - - name: "[SETUP] Set artifact names" - id: set-artifact-name - run: | - PRE_HASH="$( git rev-parse HEAD | head -c 10 )" - VERSION="${{ matrix.version }}" - ARCH="$( echo "${{ matrix.arch }}" | sed 's|/|-|g' )" - - NAME_BASE="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-base" - NAME_MODS="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-mods" - NAME_PROD="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-prod" - NAME_WORK="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-work" - - echo "::set-output name=base::${NAME_BASE}" - echo "::set-output name=mods::${NAME_MODS}" - echo "::set-output name=prod::${NAME_PROD}" - echo "::set-output name=work::${NAME_WORK}" - - # ------------------------------------------------------------ - # Artifact Import - # ------------------------------------------------------------ - - ### - ### Download and import base - ### - - name: "[Artifact Load] Download base" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.base }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'mods' }} - - - name: "[Artifact Load] Import base" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.base }} - if: ${{ inputs.flavour == 'mods' }} - - ### - ### Download and import mods - ### - - name: "[Artifact Load] Download mods" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.mods }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'prod' }} - - - name: "[Artifact Load] Import mods" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.mods }} - if: ${{ inputs.flavour == 'prod' }} - - ### - ### Download and import prod - ### - - name: "[Artifact Load] Download prod" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.prod }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'work' }} - - - name: "[Artifact Load] Import prod" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.prod }} - if: ${{ inputs.flavour == 'work' }} - - - # ------------------------------------------------------------ - # Build - # ------------------------------------------------------------ - - name: Build - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make build VERSION=${{ matrix.version }} FLAVOUR=${{ inputs.flavour }} ARCH=${{ matrix.arch }} - - - # ------------------------------------------------------------ - # Test - # ------------------------------------------------------------ - - name: Test - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make test VERSION=${{ matrix.version }} FLAVOUR=${{ inputs.flavour }} ARCH=${{ matrix.arch }} - if: ${{ inputs.run_tests }} - - - # ------------------------------------------------------------ - # Artifact Expot (base) - # ------------------------------------------------------------ - - ### - ### Export and Upload base - ### - - name: "[Artifact Save] Export base" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make save-verify VERSION=${{ matrix.version }} FLAVOUR=base ARCH=${{ matrix.arch }} OUTFILE=${{ steps.set-artifact-name.outputs.base }} INFILE=${{ steps.set-artifact-name.outputs.base }} - if: ${{ inputs.flavour == 'base' }} - - ### - ### Try 1 - ### - - name: "[Artifact Save] Upload base" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.base }} - path: ${{ steps.set-artifact-name.outputs.base }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'base' }} - - - name: "[Artifact Save] Download base (verify)" - continue-on-error: true - id: download-base-1 - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.base }} - path: ${{ steps.set-artifact-name.outputs.base }}.tmp - if: ${{ inputs.flavour == 'base' }} - - ### - ### Try 2 - ### - - name: "[Artifact Save] Upload base (retry)" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.base }} - path: ${{ steps.set-artifact-name.outputs.base }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'base' && steps.download-base-1.outcome == 'failure'}} - - - name: "[Artifact Save] Download base (verify 2)" - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.base }} - path: ${{ steps.set-artifact-name.outputs.base }}.tmp - if: ${{ inputs.flavour == 'base' && steps.download-base-1.outcome == 'failure'}} - - - # ------------------------------------------------------------ - # Artifact Expot (mods) - # ------------------------------------------------------------ - - ### - ### Export and Upload mods - ### - - name: "[Artifact Save] Export mods" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make save-verify VERSION=${{ matrix.version }} FLAVOUR=mods ARCH=${{ matrix.arch }} OUTFILE=${{ steps.set-artifact-name.outputs.mods }} INFILE=${{ steps.set-artifact-name.outputs.mods }} - if: ${{ inputs.flavour == 'mods' }} - - ### - ### Try 1 - ### - - name: "[Artifact Save] Upload mods" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.mods }} - path: ${{ steps.set-artifact-name.outputs.mods }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'mods' }} - - - name: "[Artifact Save] Download mods (verify)" - continue-on-error: true - id: download-mods-1 - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.mods }} - path: ${{ steps.set-artifact-name.outputs.mods }}.tmp - if: ${{ inputs.flavour == 'mods' }} - - ### - ### Try 2 - ### - - name: "[Artifact Save] Upload mods (retry)" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.mods }} - path: ${{ steps.set-artifact-name.outputs.mods }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'mods' && steps.download-mods-1.outcome == 'failure'}} - - - name: "[Artifact Save] Download mods (verify 2)" - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.mods }} - path: ${{ steps.set-artifact-name.outputs.mods }}.tmp - if: ${{ inputs.flavour == 'mods' && steps.download-mods-1.outcome == 'failure'}} - - - # ------------------------------------------------------------ - # Artifact Expot (prod) - # ------------------------------------------------------------ - - ### - ### Export and Upload prod - ### - - name: "[Artifact Save] Export prod" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make save-verify VERSION=${{ matrix.version }} FLAVOUR=prod ARCH=${{ matrix.arch }} OUTFILE=${{ steps.set-artifact-name.outputs.prod }} INFILE=${{ steps.set-artifact-name.outputs.prod }} - if: ${{ inputs.flavour == 'prod' }} - - ### - ### Try 1 - ### - - name: "[Artifact Save] Upload prod" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.prod }} - path: ${{ steps.set-artifact-name.outputs.prod }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'prod' }} - - - name: "[Artifact Save] Download prod (verify)" - continue-on-error: true - id: download-prod-1 - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.prod }} - path: ${{ steps.set-artifact-name.outputs.prod }}.tmp - if: ${{ inputs.flavour == 'prod' }} - - ### - ### Try 2 - ### - - name: "[Artifact Save] Upload prod (retry)" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.prod }} - path: ${{ steps.set-artifact-name.outputs.prod }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'prod' && steps.download-prod-1.outcome == 'failure'}} - - - name: "[Artifact Save] Download prod (verify 2)" - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.prod }} - path: ${{ steps.set-artifact-name.outputs.prod }}.tmp - if: ${{ inputs.flavour == 'prod' && steps.download-prod-1.outcome == 'failure'}} - - - # ------------------------------------------------------------ - # Artifact Expot (work) - # ------------------------------------------------------------ - - ### - ### Export and Upload work - ### - - name: "[Artifact Save] Export work" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make save-verify VERSION=${{ matrix.version }} FLAVOUR=work ARCH=${{ matrix.arch }} OUTFILE=${{ steps.set-artifact-name.outputs.work }} INFILE=${{ steps.set-artifact-name.outputs.work }} - if: ${{ inputs.flavour == 'work' }} - - ### - ### Try 1 - ### - - name: "[Artifact Save] Upload work" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.work }} - path: ${{ steps.set-artifact-name.outputs.work }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'work' }} - - - name: "[Artifact Save] Download work (verify)" - continue-on-error: true - id: download-work-1 - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.work }} - path: ${{ steps.set-artifact-name.outputs.work }}.tmp - if: ${{ inputs.flavour == 'work' }} - - ### - ### Try 2 - ### - - name: "[Artifact Save] Upload work (retry)" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/upload-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.work }} - path: ${{ steps.set-artifact-name.outputs.work }} - if-no-files-found: error - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'work' && steps.download-work-1.outcome == 'failure'}} - - - name: "[Artifact Save] Download work (verify 2)" - uses: actions/download-artifact@v3 - with: - name: ${{ steps.set-artifact-name.outputs.work }} - path: ${{ steps.set-artifact-name.outputs.work }}.tmp - if: ${{ inputs.flavour == 'work' && steps.download-work-1.outcome == 'failure'}} diff --git a/.github/workflows/zzz-reuse-configure.yml b/.github/workflows/zzz-reuse-configure.yml deleted file mode 100644 index aecbf91..0000000 --- a/.github/workflows/zzz-reuse-configure.yml +++ /dev/null @@ -1,148 +0,0 @@ ---- -name: Configure Pipeline for multi-arch image build - -on: - workflow_call: - ### - ### Variables - ### - inputs: - enabled: - description: 'Determines wheather this workflow is enabled at all (will run or skip).' - required: true - type: boolean - can_deploy: - description: 'Determines wheather this workflow will also deploy (login and push).' - required: true - type: boolean - matrix: - description: 'The version build matrix as JSON string ( list of objects: [{NAME, VERSION[], ARCH[]}] ).' - required: true - type: string - refs: - description: 'The ref build matrix as JSON string (list of git refs to build/deploy).' - required: false - type: string - ### - ### Secrets - ### - secrets: - dockerhub_username: - description: 'The username for Dockerhub.' - required: false - dockerhub_password: - description: 'The password for Dockerhub.' - required: false - ### - ### Outouts - ### - outputs: - can_login: - description: "Can we login" - value: ${{ jobs.configure.outputs.can_login }} - has_refs: - description: "Do we have refs" - value: ${{ jobs.configure.outputs.has_refs }} - matrix_build: - description: "The determined build matrix" - value: ${{ jobs.configure.outputs.matrix_build }} - matrix_deploy: - description: "The determined deploy matrix" - value: ${{ jobs.configure.outputs.matrix_deploy }} - artifact_prefix: - description: "The determined unique artifact prefix" - value: ${{ jobs.configure.outputs.artifact_prefix }} - -jobs: - - # ----------------------------------------------------------------------------------------------- - # JOB (1/3): CONFIGURE - # ----------------------------------------------------------------------------------------------- - configure: - name: Configure - if: inputs.enabled - runs-on: ubuntu-latest - - ### - ### Outputs - ### - outputs: - can_login: ${{ steps.set-login.outputs.can_login }} - has_refs: ${{ steps.set-matrix.outputs.has_refs }} - matrix_build: ${{ steps.set-matrix.outputs.matrix_build }} - matrix_deploy: ${{ steps.set-matrix.outputs.matrix_deploy }} - artifact_prefix: ${{ steps.set-artifact-prefix.outputs.prefix }} - - ### - ### Steps - ### - steps: - - name: "[Set-Output] Set Docker login capabilities" - id: set-login - shell: bash - run: | - if [ "${{ env.ENV_USER }}" = '' ] || [ "${{ env.ENV_PASS }}" = '' ]; then - echo "::set-output name=can_login::0" - else - echo "::set-output name=can_login::1" - fi - env: - ENV_USER: ${{ secrets.dockerhub_username }} - ENV_PASS: ${{ secrets.dockerhub_password }} - - - name: "[Set-Output] Set Build Matrix & Deploy Matrix" - id: set-matrix - shell: bash - run: | - if [ "${{ inputs.refs }}" != "" ]; then - MATRIX_BUILD="$( \ - jq -M -c \ - --argjson refs '${{ inputs.refs }}' \ - 'map({name:.NAME, version:.VERSION[], flavour:.FLAVOUR[], arch:.ARCH[], refs:$refs[]})' <<<'${{ inputs.matrix }}' \ - )" - MATRIX_DEPLOY="$( \ - jq -M -c \ - --argjson refs '${{ inputs.refs }}' \ - 'map({name:.NAME, version:.VERSION[], flavour:.FLAVOUR[], refs:$refs[]})' <<<'${{ inputs.matrix }}' \ - )" - echo "::set-output name=matrix_build::${MATRIX_BUILD}" - echo "::set-output name=matrix_deploy::${MATRIX_DEPLOY}" - echo "::set-output name=has_refs::1" - else - MATRIX_BUILD="$( \ - jq -M -c \ - 'map({name:.NAME, version:.VERSION[], flavour:.FLAVOUR[], arch:.ARCH[]})' <<<'${{ inputs.matrix }}' \ - )" - MATRIX_DEPLOY="$( \ - jq -M -c \ - 'map({name:.NAME, version:.VERSION[], flavour:.FLAVOUR[]})' <<<'${{ inputs.matrix }}' \ - )" - echo "::set-output name=matrix_build::${MATRIX_BUILD}" - echo "::set-output name=matrix_deploy::${MATRIX_DEPLOY}" - echo "::set-output name=has_refs::0" - fi - - - name: "[Set-Output] Set unique Artifact prefix" - id: set-artifact-prefix - shell: bash - run: | - PRE_DATE="$( date +"%s" )" - PRE_RAND="$( echo $RANDOM | md5sum | head -c 10 )" - echo "::set-output name=prefix::${PRE_DATE}-${PRE_RAND}" - - - name: "[DEBUG] Show Workflow Inputs" - shell: bash - run: | - echo 'enabled: ${{ inputs.enabled }}' - echo 'can_deploy: ${{ inputs.can_deploy }}' - echo 'matrix: ${{ inputs.matrix }}' - echo 'refs: ${{ inputs.refs }}' - - - name: "[DEBUG] Show Determined Settings" - shell: bash - run: | - echo 'can_login=${{ steps.set-login.outputs.can_login }}' - echo 'has_refs=${{ steps.set-matrix.outputs.has_refs }}' - echo 'matrix_build=${{ steps.set-matrix.outputs.matrix_build }}' - echo 'matrix_deploy=${{ steps.set-matrix.outputs.matrix_deploy }}' - echo 'artifact_prefix=${{ steps.set-artifact-prefix.outputs.prefix }}' diff --git a/.github/workflows/zzz-reuse-deploy-images.yml b/.github/workflows/zzz-reuse-deploy-images.yml deleted file mode 100644 index ee57e32..0000000 --- a/.github/workflows/zzz-reuse-deploy-images.yml +++ /dev/null @@ -1,242 +0,0 @@ -name: Deploy multi-arch images - -on: - workflow_call: - ### - ### Variables - ### - inputs: - enabled: - description: 'Determines wheather this workflow is enabled at all (will run or skip).' - required: true - type: boolean - can_deploy: - description: 'Determines wheather this workflow will also deploy (login and push).' - required: true - type: boolean - build_matrix: - description: 'The build matrix' - required: true - type: string - has_refs: - description: 'The ref build matrix as JSON string (list of git refs to build/deploy).' - required: true - type: string - artifact_prefix: - description: 'Unique artifact name prefix (to avoid overriding existing artifcats during parallel runs).' - required: true - type: string - ### - ### Secrets - ### - secrets: - dockerhub_username: - description: 'The username for Dockerhub.' - required: false - dockerhub_password: - description: 'The password for Dockerhub.' - required: false - -jobs: - deploy: - name: ${{ matrix.name }}-${{ matrix.version }} (${{ matrix.arch }}) ${{ matrix.refs }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: ${{ fromJson(inputs.build_matrix) }} - if: inputs.enabled - steps: - - # ------------------------------------------------------------ - # Setup repository - # ------------------------------------------------------------ - - name: "[SETUP] Checkout repository (current)" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - if: inputs.has_refs == 0 - - - name: "[SETUP] Checkout repository (ref: ${{ matrix.refs }})" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: ${{ matrix.refs }} - if: inputs.has_refs != 0 - - - name: "[SETUP] Setup QEMU environment" - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: all - - - name: "[SETUP] Determine Docker tag" - id: tag - uses: cytopia/docker-tag-action@v0.4.15 - - - name: "[SETUP] Set artifact names" - id: set-artifact-name - run: | - PRE_HASH="$( git rev-parse HEAD | head -c 10 )" - VERSION="${{ matrix.version }}" - ARCH="$( echo "${{ matrix.arch }}" | sed 's|/|-|g' )" - - NAME_BASE="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-base" - NAME_MODS="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-mods" - NAME_PROD="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-prod" - NAME_WORK="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-work" - - echo "::set-output name=base::${NAME_BASE}" - echo "::set-output name=mods::${NAME_MODS}" - echo "::set-output name=prod::${NAME_PROD}" - echo "::set-output name=work::${NAME_WORK}" - - # ------------------------------------------------------------ - # Artifact Import - # ------------------------------------------------------------ - - ### - ### Download and import base - ### - - name: "[Artifact Load] Download base" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.base }} - attempt_limit: 20 - attempt_delay: 10000 - - - name: "[Artifact Load] Import base" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.base }} - - ### - ### Download and import mods - ### - - name: "[Artifact Load] Download mods" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.mods }} - attempt_limit: 20 - attempt_delay: 10000 - - - name: "[Artifact Load] Import mods" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.mods }} - - ### - ### Download and import prod - ### - - name: "[Artifact Load] Download prod" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.prod }} - attempt_limit: 20 - attempt_delay: 10000 - - - name: "[Artifact Load] Import prod" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.prod }} - - ### - ### Download and import prod - ### - - name: "[Artifact Load] Download work" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.work }} - attempt_limit: 20 - attempt_delay: 10000 - - - name: "[Artifact Load] Import work" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.work }} - - # ------------------------------------------------------------ - # Re-tag images - # ------------------------------------------------------------ - - name: "[Docker Tag] base" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make tag VERSION=${{ matrix.version }} FLAVOUR=base TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Docker Tag] mods" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make tag VERSION=${{ matrix.version }} FLAVOUR=mods TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Docker Tag] prod" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make tag VERSION=${{ matrix.version }} FLAVOUR=prod TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Docker Tag] work" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make tag VERSION=${{ matrix.version }} FLAVOUR=work TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Docker Tag] Show images" - run: | - docker images - - - # ------------------------------------------------------------ - # Login - # ------------------------------------------------------------ - - name: "Login" - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - if: ${{ inputs.can_deploy }} - - - # ------------------------------------------------------------ - # Push images - # ------------------------------------------------------------ - - name: "[Push Image] base" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make push VERSION=${{ matrix.version }} FLAVOUR=base TAG=${{ steps.tag.outputs.docker-tag }} - if: ${{ inputs.can_deploy }} - - - name: "[Push Image] mods" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make push VERSION=${{ matrix.version }} FLAVOUR=mods TAG=${{ steps.tag.outputs.docker-tag }} - if: ${{ inputs.can_deploy }} - - - name: "[Push Image] prod" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make push VERSION=${{ matrix.version }} FLAVOUR=prod TAG=${{ steps.tag.outputs.docker-tag }} - if: ${{ inputs.can_deploy }} - - - name: "[Push Image] work" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make push VERSION=${{ matrix.version }} FLAVOUR=work TAG=${{ steps.tag.outputs.docker-tag }} - if: ${{ inputs.can_deploy }} diff --git a/.github/workflows/zzz-reuse-deploy-manifests.yml b/.github/workflows/zzz-reuse-deploy-manifests.yml deleted file mode 100644 index 979b6e3..0000000 --- a/.github/workflows/zzz-reuse-deploy-manifests.yml +++ /dev/null @@ -1,162 +0,0 @@ -name: Deploy multi-arch image manifests - -on: - workflow_call: - ### - ### Variables - ### - inputs: - enabled: - description: 'Determines wheather this workflow is enabled at all (will run or skip).' - required: true - type: boolean - can_deploy: - description: 'Determines wheather this workflow will also deploy (login and push).' - required: true - type: boolean - deploy_matrix: - description: 'The version deploy matrix as JSON string ( list of objects: [{NAME, VERSION[], ARCH[]}] ).' - required: true - type: string - params_matrix: - description: 'The build matrix set via params.yml.' - required: true - type: string - artifact_prefix: - description: 'Unique artifact name prefix (to avoid overriding existing artifcats during parallel runs).' - required: true - type: string - has_refs: - description: 'The ref build matrix as JSON string (list of git refs to build/deploy).' - required: true - type: string - - ### - ### Secrets - ### - secrets: - dockerhub_username: - description: 'The username for Dockerhub.' - required: false - dockerhub_password: - description: 'The password for Dockerhub.' - required: false - -jobs: - # ----------------------------------------------------------------------------------------------- - # JOB (3/3): DEPLOY - # ----------------------------------------------------------------------------------------------- - deploy: - name: ${{ matrix.name }}-${{ matrix.version }} (${{ matrix.flavour }}) ${{ matrix.refs }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: ${{ fromJson(inputs.deploy_matrix) }} - if: inputs.enabled && inputs.can_deploy - steps: - # ------------------------------------------------------------ - # Setup repository - # ------------------------------------------------------------ - - name: "[SETUP] Checkout repository (current)" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - if: ${{ inputs.has_refs == 0 }} - - - name: "[SETUP] Checkout repository (ref: ${{ matrix.refs }})" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: ${{ matrix.refs }} - if: ${{ inputs.has_refs != 0 }} - - - name: "[SETUP] Setup QEMU environment" - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: all - - - name: "[SETUP] Determine Docker tag" - id: tag - uses: cytopia/docker-tag-action@v0.4.15 - - - name: "[SETUP] Determine manifest arches" - id: manifest - run: | - ARCHES="$( echo '${{ inputs.params_matrix }}' \ - | jq 'group_by(.NAME, .VERSION, .ARCH)' \ - | jq 'map({NAME: .[].NAME, VERSION: .[].VERSION[], FLAVOUR: .[].FLAVOUR[], ARCHES: .[].ARCH|join(",")})' \ - | jq '.[] | select(.NAME=="${{ matrix.name }}" and .VERSION=="${{ matrix.version }}" and .FLAVOUR=="${{ matrix.flavour }}") | .ARCHES' \ - | jq -c -M \ - )" - echo "::set-output name=arches::${ARCHES}" - echo "ARCHES: ${ARCHES}" - - - # ------------------------------------------------------------ - # Login - # ------------------------------------------------------------ - - name: "Login" - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - # ------------------------------------------------------------ - # Create Manifest - # ------------------------------------------------------------ - - - name: "[Create Manifest] base (${{ steps.manifest.outputs.arches }})" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-create VERSION=${{ matrix.version }} FLAVOUR=base ARCHES=${{ steps.manifest.outputs.arches }} TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Create Manifest] mods (${{ steps.manifest.outputs.arches }})" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-create VERSION=${{ matrix.version }} FLAVOUR=mods ARCHES=${{ steps.manifest.outputs.arches }} TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Create Manifest] prod (${{ steps.manifest.outputs.arches }})" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-create VERSION=${{ matrix.version }} FLAVOUR=prod ARCHES=${{ steps.manifest.outputs.arches }} TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Create Manifest] work (${{ steps.manifest.outputs.arches }})" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-create VERSION=${{ matrix.version }} FLAVOUR=work ARCHES=${{ steps.manifest.outputs.arches }} TAG=${{ steps.tag.outputs.docker-tag }} - - - # ------------------------------------------------------------ - # Deploy Manifest - # ------------------------------------------------------------ - - - name: "[Push Manifest] base: ${{ steps.tag.outputs.docker-tag }}" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-push VERSION=${{ matrix.version }} FLAVOUR=base TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Push Manifest] mods: ${{ steps.tag.outputs.docker-tag }}" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-push VERSION=${{ matrix.version }} FLAVOUR=mods TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Push Manifest] prod: ${{ steps.tag.outputs.docker-tag }}" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-push VERSION=${{ matrix.version }} FLAVOUR=prod TAG=${{ steps.tag.outputs.docker-tag }} - - - name: "[Push Manifest] work: ${{ steps.tag.outputs.docker-tag }}" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make manifest-push VERSION=${{ matrix.version }} FLAVOUR=work TAG=${{ steps.tag.outputs.docker-tag }} diff --git a/.github/workflows/zzz-reuse-test.yml b/.github/workflows/zzz-reuse-test.yml deleted file mode 100644 index f8e1ee4..0000000 --- a/.github/workflows/zzz-reuse-test.yml +++ /dev/null @@ -1,190 +0,0 @@ ---- -name: Test multi-arch images - -on: - workflow_call: - ### - ### Variables - ### - inputs: - enabled: - description: 'Determines wheather this workflow is enabled at all (will run or skip).' - required: true - type: boolean - can_deploy: - description: 'Determines wheather this workflow will also deploy (login and push).' - required: true - type: boolean - build_matrix: - description: 'The build matrix' - required: true - type: string - has_refs: - description: 'The ref build matrix as JSON string (list of git refs to build/deploy).' - required: true - type: string - artifact_prefix: - description: 'Unique artifact name prefix (to avoid overriding existing artifcats during parallel runs).' - required: true - type: string - flavour: - description: 'The flavour to build (base, mods, prod or work).' - required: true - type: string - ### - ### Secrets - ### - secrets: - dockerhub_username: - description: 'The username for Dockerhub.' - required: false - dockerhub_password: - description: 'The password for Dockerhub.' - required: false - -jobs: - # ----------------------------------------------------------------------------------------------- - # JOB: BUILD - # ----------------------------------------------------------------------------------------------- - test: - name: ${{ matrix.name }}-${{ matrix.version }}-${{ inputs.flavour }} (${{ matrix.arch }}) ${{ matrix.refs }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: ${{ fromJson(inputs.build_matrix) }} - if: inputs.enabled - steps: - - # ------------------------------------------------------------ - # Setup repository - # ------------------------------------------------------------ - - name: "[SETUP] Checkout repository (current)" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - if: inputs.has_refs == 0 - - - name: "[SETUP] Checkout repository (ref: ${{ matrix.refs }})" - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: ${{ matrix.refs }} - if: inputs.has_refs != 0 - - - name: "[SETUP] Setup QEMU environment" - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: all - - - name: "[SETUP] Set artifact names" - id: set-artifact-name - run: | - PRE_HASH="$( git rev-parse HEAD | head -c 10 )" - VERSION="${{ matrix.version }}" - ARCH="$( echo "${{ matrix.arch }}" | sed 's|/|-|g' )" - - NAME_BASE="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-base" - NAME_MODS="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-mods" - NAME_PROD="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-prod" - NAME_WORK="${{ inputs.artifact_prefix }}-${PRE_HASH}-${VERSION}-${ARCH}-work" - - echo "::set-output name=base::${NAME_BASE}" - echo "::set-output name=mods::${NAME_MODS}" - echo "::set-output name=prod::${NAME_PROD}" - echo "::set-output name=work::${NAME_WORK}" - - # ------------------------------------------------------------ - # Artifact Import - # ------------------------------------------------------------ - - ### - ### Download and import base - ### - - name: "[Artifact Load] Download base" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.base }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'base' }} - - - name: "[Artifact Load] Import base" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.base }} - if: ${{ inputs.flavour == 'base' }} - - ### - ### Download and import mods - ### - - name: "[Artifact Load] Download mods" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.mods }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'mods' }} - - - name: "[Artifact Load] Import mods" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.mods }} - if: ${{ inputs.flavour == 'mods' }} - - ### - ### Download and import prod - ### - - name: "[Artifact Load] Download prod" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.prod }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'prod' }} - - - name: "[Artifact Load] Import prod" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.prod }} - if: ${{ inputs.flavour == 'prod' }} - - ### - ### Download and import work - ### - - name: "[Artifact Load] Download work" - uses: Wandalen/wretry.action@v1.0.11 - with: - action: actions/download-artifact@v3 - with: | - name: ${{ steps.set-artifact-name.outputs.work }} - attempt_limit: 20 - attempt_delay: 10000 - if: ${{ inputs.flavour == 'work' }} - - - name: "[Artifact Load] Import work" - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make load INFILE=${{ steps.set-artifact-name.outputs.work }} - if: ${{ inputs.flavour == 'work' }} - - - # ------------------------------------------------------------ - # Test - # ------------------------------------------------------------ - - name: Test - uses: cytopia/shell-command-retry-action@v0.1.2 - with: - command: | - make test VERSION=${{ matrix.version }} FLAVOUR=${{ inputs.flavour }} ARCH=${{ matrix.arch }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 33c1f8f..836113b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ ## Release 0.138 +#### Added +- Added arm64 support +- Added `vips` module for PHP 8.0 +- Added `vips` module for PHP 8.1 +- Added `swoole` module for PHP 8.1 + #### Changed - Separated nightly jobs diff --git a/Dockerfiles/mods/Dockerfile-5.2 b/Dockerfiles/mods/Dockerfile-5.2 index f42f07a..c271634 100644 --- a/Dockerfiles/mods/Dockerfile-5.2 +++ b/Dockerfiles/mods/Dockerfile-5.2 @@ -583,18 +583,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.2-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -602,6 +591,7 @@ RUN set -eux \ libaspell15 \ libc-client2007e \ libenchant1c2a \ + libevent-2.0-5 \ libfbclient2 \ libfreetype6 \ libicu52 \ @@ -629,7 +619,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### ### ### Verify diff --git a/Dockerfiles/mods/Dockerfile-5.3 b/Dockerfiles/mods/Dockerfile-5.3 index f4069b0..33a14cf 100644 --- a/Dockerfiles/mods/Dockerfile-5.3 +++ b/Dockerfiles/mods/Dockerfile-5.3 @@ -13,6 +13,7 @@ RUN set -eux \ freetds-dev \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ @@ -523,17 +524,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Version specific - # Type: PECL extension - # Default: Pecl command - && pecl install swoole-1.9.23 \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -650,6 +640,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Version specific + # Type: PECL extension + # Default: Pecl command + && pecl install swoole-1.9.23 \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -692,26 +693,17 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.3-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ + libevent-2.0-5 \ libfbclient2 \ libfreetype6 \ libicu52 \ @@ -725,6 +717,7 @@ RUN set -eux \ librabbitmq1 \ librdkafka1 \ librecode0 \ + libssl1.0.0 \ libsybdb5 \ libtidy-0.99-0 \ libvpx1 \ @@ -742,7 +735,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- oci8 ---------- @@ -904,8 +908,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sockets$' \ && php -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -938,6 +940,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-5.4 b/Dockerfiles/mods/Dockerfile-5.4 index 4d36547..e4196f1 100644 --- a/Dockerfiles/mods/Dockerfile-5.4 +++ b/Dockerfiles/mods/Dockerfile-5.4 @@ -13,6 +13,7 @@ RUN set -eux \ freetds-dev \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ @@ -534,17 +535,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Version specific - # Type: PECL extension - # Default: Pecl command - && pecl install swoole-1.9.23 \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -661,6 +651,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Version specific + # Type: PECL extension + # Default: Pecl command + && pecl install swoole-1.9.23 \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -703,26 +704,17 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.4-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ + libevent-2.0-5 \ libfbclient2 \ libfreetype6 \ libicu52 \ @@ -736,6 +728,7 @@ RUN set -eux \ librabbitmq1 \ librdkafka1 \ librecode0 \ + libssl1.0.0 \ libsybdb5 \ libtidy-0.99-0 \ libvpx1 \ @@ -753,7 +746,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- oci8 ---------- @@ -917,8 +921,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sockets$' \ && php -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -951,6 +953,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-5.5 b/Dockerfiles/mods/Dockerfile-5.5 index b4d2766..c5f966c 100644 --- a/Dockerfiles/mods/Dockerfile-5.5 +++ b/Dockerfiles/mods/Dockerfile-5.5 @@ -14,6 +14,7 @@ RUN set -eux \ ghostscript \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ @@ -572,17 +573,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Version specific - # Type: PECL extension - # Default: Pecl command - && pecl install swoole-1.9.23 \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -699,6 +689,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Version specific + # Type: PECL extension + # Default: Pecl command + && pecl install swoole-1.9.23 \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -741,18 +742,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.5-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -760,8 +750,10 @@ RUN set -eux \ ghostscript \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ + libevent-2.0-5 \ libfbclient2 \ libfreetype6 \ libicu52 \ @@ -776,6 +768,7 @@ RUN set -eux \ librabbitmq1 \ librdkafka1 \ librecode0 \ + libssl1.0.0 \ libsybdb5 \ libtidy-0.99-0 \ libvpx1 \ @@ -793,7 +786,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -970,8 +974,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sockets$' \ && php -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1004,6 +1006,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-5.6 b/Dockerfiles/mods/Dockerfile-5.6 index c539a2d..08d7a31 100644 --- a/Dockerfiles/mods/Dockerfile-5.6 +++ b/Dockerfiles/mods/Dockerfile-5.6 @@ -14,6 +14,7 @@ RUN set -eux \ ghostscript \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ @@ -592,17 +593,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Version specific - # Type: PECL extension - # Default: Pecl command - && pecl install swoole-1.9.23 \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -718,6 +708,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Version specific + # Type: PECL extension + # Default: Pecl command + && pecl install swoole-1.9.23 \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -760,18 +761,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.6-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -779,8 +769,10 @@ RUN set -eux \ ghostscript \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ + libevent-2.0-5 \ libfbclient2 \ libfreetype6 \ libicu57 \ @@ -812,7 +804,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -989,8 +992,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sockets$' \ && php -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1023,6 +1024,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-7.0 b/Dockerfiles/mods/Dockerfile-7.0 index 83d4a43..a46de75 100644 --- a/Dockerfiles/mods/Dockerfile-7.0 +++ b/Dockerfiles/mods/Dockerfile-7.0 @@ -9,33 +9,24 @@ RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ alien \ - fftw-dev \ firebird-dev \ freetds-dev \ ghostscript \ - gobject-introspection \ - gtk-doc-tools \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ libevent-dev \ - libexif-dev \ - libexpat1-dev \ libfbclient2 \ - libfftw3-dev \ libfreetype6-dev \ - libgif-dev \ - libglib2.0-dev \ libgmp-dev \ libib-util \ libicu-dev \ libjpeg-dev \ libkrb5-dev \ libldap2-dev \ - libmagick++-dev \ - libmagickcore-6.q16-dev \ libmagickwand-dev \ libmariadbclient-dev \ libmcrypt-dev \ @@ -43,23 +34,20 @@ RUN set -eux \ libnghttp2-dev \ libpcre3-dev \ libpng-dev \ - libpoppler-glib-dev \ libpq-dev \ libpspell-dev \ librabbitmq-dev \ librdkafka-dev \ librecode-dev \ - librsvg2-dev \ libsasl2-dev \ libsnmp-dev \ libssh2-1-dev \ libssl-dev \ libtidy-dev \ - libtool \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ - libwebpdemux2 \ - libwebpmux2 \ libxml2-dev \ libxpm-dev \ libxslt-dev \ @@ -347,10 +335,10 @@ RUN set -eux \ # -------------------- Installing PHP Extension: memcached -------------------- RUN set -eux \ - # Installation: Generic + # Installation: Version specific # Type: PECL extension - # Default: Pecl command - && pecl install memcached \ + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -669,17 +657,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Version specific - # Type: PECL extension - # Default: Pecl command - && pecl install swoole-4.2.13 \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -737,15 +714,6 @@ RUN set -eux \ # -------------------- Installing PHP Extension: vips -------------------- RUN set -eux \ - # Generic pre-command - && git clone https://github.com/libvips/libvips /tmp/libvips \ -&& cd /tmp/libvips \ -&& ./autogen.sh \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ -&& cd /tmp \ -&& rm -rf /tmp/libvips \ - \ # Installation: Generic # Type: PECL extension # Default: Pecl command @@ -826,6 +794,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Version specific + # Type: PECL extension + # Default: Pecl command + && pecl install swoole-4.2.13 \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -868,63 +847,38 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.0-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ - fftw2 \ ghostscript \ - gir1.2-poppler-0.18 \ - imagemagick-6.q16 \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ - libexif12 \ - libexpat1 \ + libevent-2.0-5 \ libfbclient2 \ - libfftw3-3 \ libfreetype6 \ - libgif7 \ - libglib2.0-0 \ libicu57 \ libjpeg62-turbo \ - libmagick++-6.q16-7 \ - libmagick++-6.q16hdri-7 \ - libmagickcore-6.q16-3 \ - libmagickcore-6.q16-3-extra \ libmagickwand-6.q16-3 \ - libmagickwand-6.q16hdri-3 \ libmariadbclient18 \ libmcrypt4 \ libmemcachedutil2 \ libnghttp2-14 \ libpng16-16 \ - libpoppler-glib8 \ libpq5 \ librabbitmq4 \ librdkafka1 \ librecode0 \ - librsvg2-2 \ libssh2-1 \ libsybdb5 \ libtidy5 \ + libvips42 \ libvpx4 \ libwebp6 \ - libwebpdemux2 \ - libwebpmux2 \ libxpm4 \ libxslt1.1 \ libyaml-0-2 \ @@ -939,7 +893,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1118,8 +1083,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1156,6 +1119,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-7.1 b/Dockerfiles/mods/Dockerfile-7.1 index 8fab135..c6e6768 100644 --- a/Dockerfiles/mods/Dockerfile-7.1 +++ b/Dockerfiles/mods/Dockerfile-7.1 @@ -9,34 +9,24 @@ RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ alien \ - fftw-dev \ firebird-dev \ freetds-dev \ ghostscript \ - gobject-introspection \ - gtk-doc-tools \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ libevent-dev \ - libexif-dev \ - libexpat1-dev \ libfbclient2 \ - libfftw3-dev \ libfreetype6-dev \ - libgif-dev \ - libglib2.0-dev \ libgmp-dev \ libib-util \ libicu-dev \ - libimagequant-dev \ libjpeg-dev \ libkrb5-dev \ libldap2-dev \ - libmagick++-dev \ - libmagickcore-6.q16-dev \ libmagickwand-dev \ libmariadb-dev \ libmcrypt-dev \ @@ -44,23 +34,20 @@ RUN set -eux \ libnghttp2-dev \ libpcre3-dev \ libpng-dev \ - libpoppler-glib-dev \ libpq-dev \ libpspell-dev \ librabbitmq-dev \ librdkafka-dev \ librecode-dev \ - librsvg2-dev \ libsasl2-dev \ libsnmp-dev \ libssh2-1-dev \ libssl-dev \ libtidy-dev \ - libtool \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ - libwebpdemux2 \ - libwebpmux3 \ libxml2-dev \ libxpm-dev \ libxslt-dev \ @@ -348,10 +335,10 @@ RUN set -eux \ # -------------------- Installing PHP Extension: memcached -------------------- RUN set -eux \ - # Installation: Generic + # Installation: Version specific # Type: PECL extension - # Default: Pecl command - && pecl install memcached \ + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -679,17 +666,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Version specific - # Type: PECL extension - # Default: Pecl command - && pecl install swoole-4.4.26 \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -746,15 +722,6 @@ RUN set -eux \ # -------------------- Installing PHP Extension: vips -------------------- RUN set -eux \ - # Generic pre-command - && git clone https://github.com/libvips/libvips /tmp/libvips \ -&& cd /tmp/libvips \ -&& ./autogen.sh \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ -&& cd /tmp \ -&& rm -rf /tmp/libvips \ - \ # Installation: Generic # Type: PECL extension # Default: Pecl command @@ -835,6 +802,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Version specific + # Type: PECL extension + # Default: Pecl command + && pecl install swoole-4.4.26 \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -877,64 +855,38 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.1-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ - fftw2 \ ghostscript \ - gir1.2-poppler-0.18 \ - imagemagick-6.q16 \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ - libexif12 \ - libexpat1 \ + libevent-2.1-6 \ libfbclient2 \ - libfftw3-3 \ libfreetype6 \ - libgif7 \ - libglib2.0-0 \ libicu63 \ - libimagequant0 \ libjpeg62-turbo \ - libmagick++-6.q16-8 \ - libmagick++-6.q16hdri-8 \ - libmagickcore-6.q16-6 \ - libmagickcore-6.q16-6-extra \ libmagickwand-6.q16-6 \ - libmagickwand-6.q16hdri-6 \ libmariadbd19 \ libmcrypt4 \ libmemcachedutil2 \ libnghttp2-14 \ libpng16-16 \ - libpoppler-glib8 \ libpq5 \ librabbitmq4 \ librdkafka1 \ librecode0 \ - librsvg2-2 \ libssh2-1 \ libsybdb5 \ libtidy5deb1 \ + libvips42 \ libvpx5 \ libwebp6 \ - libwebpdemux2 \ - libwebpmux3 \ libxpm4 \ libxslt1.1 \ libyaml-0-2 \ @@ -949,7 +901,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1130,8 +1093,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1168,6 +1129,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-7.2 b/Dockerfiles/mods/Dockerfile-7.2 index dd540ac..5ce787d 100644 --- a/Dockerfiles/mods/Dockerfile-7.2 +++ b/Dockerfiles/mods/Dockerfile-7.2 @@ -9,34 +9,24 @@ RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ alien \ - fftw-dev \ firebird-dev \ freetds-dev \ ghostscript \ - gobject-introspection \ - gtk-doc-tools \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-dev \ libevent-dev \ - libexif-dev \ - libexpat1-dev \ libfbclient2 \ - libfftw3-dev \ libfreetype6-dev \ - libgif-dev \ - libglib2.0-dev \ libgmp-dev \ libib-util \ libicu-dev \ - libimagequant-dev \ libjpeg-dev \ libkrb5-dev \ libldap2-dev \ - libmagick++-dev \ - libmagickcore-6.q16-dev \ libmagickwand-dev \ libmariadb-dev \ libmcrypt-dev \ @@ -44,23 +34,20 @@ RUN set -eux \ libnghttp2-dev \ libpcre3-dev \ libpng-dev \ - libpoppler-glib-dev \ libpq-dev \ libpspell-dev \ librabbitmq-dev \ librdkafka-dev \ librecode-dev \ - librsvg2-dev \ libsasl2-dev \ libsnmp-dev \ libssh2-1-dev \ libssl-dev \ libtidy-dev \ - libtool \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ - libwebpdemux2 \ - libwebpmux3 \ libxml2-dev \ libxpm-dev \ libxslt-dev \ @@ -350,10 +337,10 @@ RUN set -eux \ # -------------------- Installing PHP Extension: memcached -------------------- RUN set -eux \ - # Installation: Generic + # Installation: Version specific # Type: PECL extension - # Default: Pecl command - && pecl install memcached \ + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -682,17 +669,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Generic - # Type: PECL extension - # Custom: Pecl command - && yes yes | pecl install swoole \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -749,15 +725,6 @@ RUN set -eux \ # -------------------- Installing PHP Extension: vips -------------------- RUN set -eux \ - # Generic pre-command - && git clone https://github.com/libvips/libvips /tmp/libvips \ -&& cd /tmp/libvips \ -&& ./autogen.sh \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ -&& cd /tmp \ -&& rm -rf /tmp/libvips \ - \ # Installation: Generic # Type: PECL extension # Default: Pecl command @@ -838,6 +805,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -880,64 +858,38 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.2-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ - fftw2 \ ghostscript \ - gir1.2-poppler-0.18 \ - imagemagick-6.q16 \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant1c2a \ - libexif12 \ - libexpat1 \ + libevent-2.1-6 \ libfbclient2 \ - libfftw3-3 \ libfreetype6 \ - libgif7 \ - libglib2.0-0 \ libicu63 \ - libimagequant0 \ libjpeg62-turbo \ - libmagick++-6.q16-8 \ - libmagick++-6.q16hdri-8 \ - libmagickcore-6.q16-6 \ - libmagickcore-6.q16-6-extra \ libmagickwand-6.q16-6 \ - libmagickwand-6.q16hdri-6 \ libmariadbd19 \ libmcrypt4 \ libmemcachedutil2 \ libnghttp2-14 \ libpng16-16 \ - libpoppler-glib8 \ libpq5 \ librabbitmq4 \ librdkafka1 \ librecode0 \ - librsvg2-2 \ libssh2-1 \ libsybdb5 \ libtidy5deb1 \ + libvips42 \ libvpx5 \ libwebp6 \ - libwebpdemux2 \ - libwebpmux3 \ libxpm4 \ libxslt1.1 \ libyaml-0-2 \ @@ -952,7 +904,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1135,8 +1098,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1173,6 +1134,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-7.3 b/Dockerfiles/mods/Dockerfile-7.3 index fda12c9..cd1bc49 100644 --- a/Dockerfiles/mods/Dockerfile-7.3 +++ b/Dockerfiles/mods/Dockerfile-7.3 @@ -9,33 +9,23 @@ RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ alien \ - fftw-dev \ firebird-dev \ freetds-dev \ ghostscript \ - gobject-introspection \ - gtk-doc-tools \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libevent-dev \ - libexif-dev \ - libexpat1-dev \ libfbclient2 \ - libfftw3-dev \ libfreetype6-dev \ - libgif-dev \ - libglib2.0-dev \ libgmp-dev \ libib-util \ libicu-dev \ - libimagequant-dev \ libjpeg-dev \ libkrb5-dev \ libldap2-dev \ - libmagick++-dev \ - libmagickcore-6.q16-dev \ libmagickwand-dev \ libmariadb-dev \ libmcrypt-dev \ @@ -43,23 +33,20 @@ RUN set -eux \ libnghttp2-dev \ libpcre3-dev \ libpng-dev \ - libpoppler-glib-dev \ libpq-dev \ libpspell-dev \ librabbitmq-dev \ librdkafka-dev \ librecode-dev \ - librsvg2-dev \ libsasl2-dev \ libsnmp-dev \ libssh2-1-dev \ libssl-dev \ libtidy-dev \ - libtool \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ - libwebpdemux2 \ - libwebpmux3 \ libxml2-dev \ libxpm-dev \ libxslt-dev \ @@ -342,8 +329,8 @@ RUN set -eux \ RUN set -eux \ # Installation: Generic # Type: PECL extension - # Default: Pecl command - && pecl install memcached \ + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -672,17 +659,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Generic - # Type: PECL extension - # Custom: Pecl command - && yes yes | pecl install swoole \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -739,15 +715,6 @@ RUN set -eux \ # -------------------- Installing PHP Extension: vips -------------------- RUN set -eux \ - # Generic pre-command - && git clone https://github.com/libvips/libvips /tmp/libvips \ -&& cd /tmp/libvips \ -&& ./autogen.sh \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ -&& cd /tmp \ -&& rm -rf /tmp/libvips \ - \ # Installation: Generic # Type: PECL extension # Default: Pecl command @@ -828,6 +795,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -870,63 +848,37 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.3-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ - fftw2 \ ghostscript \ - gir1.2-poppler-0.18 \ - imagemagick-6.q16 \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ - libexif12 \ - libexpat1 \ + libevent-2.1-7 \ libfbclient2 \ - libfftw3-3 \ libfreetype6 \ - libgif7 \ - libglib2.0-0 \ libicu67 \ - libimagequant0 \ libjpeg62-turbo \ - libmagick++-6.q16-8 \ - libmagick++-6.q16hdri-8 \ - libmagickcore-6.q16-6 \ - libmagickcore-6.q16-6-extra \ libmagickwand-6.q16-6 \ - libmagickwand-6.q16hdri-6 \ libmariadbd19 \ libmcrypt4 \ libmemcachedutil2 \ libnghttp2-14 \ libpng16-16 \ - libpoppler-glib8 \ libpq5 \ librabbitmq4 \ librdkafka1 \ librecode0 \ - librsvg2-2 \ libssh2-1 \ libsybdb5 \ libtidy5deb1 \ + libvips42 \ libvpx6 \ libwebp6 \ - libwebpdemux2 \ - libwebpmux3 \ libxpm4 \ libxslt1.1 \ libyaml-0-2 \ @@ -941,7 +893,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1122,8 +1085,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1160,6 +1121,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-7.4 b/Dockerfiles/mods/Dockerfile-7.4 index 95e8304..f251ecc 100644 --- a/Dockerfiles/mods/Dockerfile-7.4 +++ b/Dockerfiles/mods/Dockerfile-7.4 @@ -9,34 +9,24 @@ RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ alien \ - fftw-dev \ firebird-dev \ freetds-dev \ ghostscript \ - gobject-introspection \ - gtk-doc-tools \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libevent-dev \ - libexif-dev \ - libexpat1-dev \ libfbclient2 \ libffi-dev \ - libfftw3-dev \ libfreetype6-dev \ - libgif-dev \ - libglib2.0-dev \ libgmp-dev \ libib-util \ libicu-dev \ - libimagequant-dev \ libjpeg-dev \ libkrb5-dev \ libldap2-dev \ - libmagick++-dev \ - libmagickcore-6.q16-dev \ libmagickwand-dev \ libmariadb-dev \ libmcrypt-dev \ @@ -44,22 +34,19 @@ RUN set -eux \ libnghttp2-dev \ libpcre3-dev \ libpng-dev \ - libpoppler-glib-dev \ libpq-dev \ libpspell-dev \ librabbitmq-dev \ librdkafka-dev \ - librsvg2-dev \ libsasl2-dev \ libsnmp-dev \ libssh2-1-dev \ libssl-dev \ libtidy-dev \ - libtool \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ - libwebpdemux2 \ - libwebpmux3 \ libxml2-dev \ libxpm-dev \ libxslt-dev \ @@ -340,14 +327,10 @@ RUN set -eux \ # -------------------- Installing PHP Extension: memcached -------------------- RUN set -eux \ - # Installation: Version specific - # Type: GIT extension - && git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ - && cd /tmp/memcached \ - # Custom: Branch - && git checkout master \ - # Custom: Install command - && phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -670,17 +653,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Generic - # Type: PECL extension - # Custom: Pecl command - && yes yes | pecl install swoole \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -737,15 +709,6 @@ RUN set -eux \ # -------------------- Installing PHP Extension: vips -------------------- RUN set -eux \ - # Generic pre-command - && git clone https://github.com/libvips/libvips /tmp/libvips \ -&& cd /tmp/libvips \ -&& ./autogen.sh \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ -&& cd /tmp \ -&& rm -rf /tmp/libvips \ - \ # Installation: Generic # Type: PECL extension # Default: Pecl command @@ -818,6 +781,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -860,63 +834,37 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.4-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ - fftw2 \ ghostscript \ - gir1.2-poppler-0.18 \ - imagemagick-6.q16 \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ - libexif12 \ - libexpat1 \ + libevent-2.1-7 \ libfbclient2 \ libffi7 \ - libfftw3-3 \ libfreetype6 \ - libgif7 \ - libglib2.0-0 \ libicu67 \ - libimagequant0 \ libjpeg62-turbo \ - libmagick++-6.q16-8 \ - libmagick++-6.q16hdri-8 \ - libmagickcore-6.q16-6 \ - libmagickcore-6.q16-6-extra \ libmagickwand-6.q16-6 \ - libmagickwand-6.q16hdri-6 \ libmariadbd19 \ libmcrypt4 \ libmemcachedutil2 \ libnghttp2-14 \ libpng16-16 \ - libpoppler-glib8 \ libpq5 \ librabbitmq4 \ librdkafka1 \ - librsvg2-2 \ libssh2-1 \ libsybdb5 \ libtidy5deb1 \ + libvips42 \ libvpx6 \ libwebp6 \ - libwebpdemux2 \ - libwebpmux3 \ libxpm4 \ libxslt1.1 \ libyaml-0-2 \ @@ -931,7 +879,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1110,8 +1069,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1146,6 +1103,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-8.0 b/Dockerfiles/mods/Dockerfile-8.0 index 2d02d3f..b70a456 100644 --- a/Dockerfiles/mods/Dockerfile-8.0 +++ b/Dockerfiles/mods/Dockerfile-8.0 @@ -14,6 +14,7 @@ RUN set -eux \ ghostscript \ libaio-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-2-dev \ @@ -42,6 +43,8 @@ RUN set -eux \ libsodium-dev \ libssl-dev \ libtidy-dev \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ libxml2-dev \ @@ -307,21 +310,10 @@ RUN set -eux \ # -------------------- Installing PHP Extension: memcached -------------------- RUN set -eux \ - # Installation: Version specific - # Type: GIT extension - && git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ - && cd /tmp/memcached \ - # Custom: Branch - && git checkout master \ - # Custom: Install command - && true \ -# FIXME: This is a work-around to mitigate compile error with PHP 8.0 -&& sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \ -&& phpize \ -&& ./configure --enable-memcached \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ - \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -628,17 +620,6 @@ RUN set -eux \ && true -# -------------------- Installing PHP Extension: swoole -------------------- -RUN set -eux \ - # Installation: Generic - # Type: PECL extension - # Custom: Pecl command - && yes yes | pecl install swoole \ - # Enabling - && docker-php-ext-enable swoole \ - && true - - # -------------------- Installing PHP Extension: sysvmsg -------------------- RUN set -eux \ # Installation: Generic @@ -693,6 +674,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: vips -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Default: Pecl command + && pecl install vips \ + # Enabling + && docker-php-ext-enable vips \ + && true + + # -------------------- Installing PHP Extension: xdebug -------------------- RUN set -eux \ # Installation: Generic @@ -744,6 +736,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -786,18 +789,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.0-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -805,8 +797,10 @@ RUN set -eux \ ghostscript \ libaio1 \ libaspell15 \ + libc-ares2 \ libc-client2007e \ libenchant-2-2 \ + libevent-2.1-7 \ libfbclient2 \ libffi7 \ libfreetype6 \ @@ -823,6 +817,7 @@ RUN set -eux \ librdkafka1 \ libsybdb5 \ libtidy5deb1 \ + libvips42 \ libvpx6 \ libwebp6 \ libxpm4 \ @@ -839,7 +834,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1016,8 +1022,6 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^spl$' \ && php -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \ - && php -m | grep -oiE '^swoole$' \ - && php-fpm -m | grep -oiE '^swoole$' \ && php -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvsem$' \ @@ -1032,6 +1036,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^uploadprogress$' \ && php -m | grep -oiE '^uuid$' \ && php-fpm -m | grep -oiE '^uuid$' \ + && php -m | grep -oiE '^vips$' \ + && php-fpm -m | grep -oiE '^vips$' \ && php -m | grep -oiE '^xdebug$' \ && php-fpm -m | grep -oiE '^xdebug$' \ && php -m | grep -oiE '^xml$' \ @@ -1048,6 +1054,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-8.1 b/Dockerfiles/mods/Dockerfile-8.1 index 76144f8..947bbbd 100644 --- a/Dockerfiles/mods/Dockerfile-8.1 +++ b/Dockerfiles/mods/Dockerfile-8.1 @@ -15,6 +15,7 @@ RUN set -eux \ libaio-dev \ libavif-dev \ libbz2-dev \ + libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libenchant-2-dev \ @@ -30,6 +31,7 @@ RUN set -eux \ libmagickwand-dev \ libmariadb-dev \ libmemcached-dev \ + libnghttp2-dev \ libpcre3-dev \ libpng-dev \ libpq-dev \ @@ -41,6 +43,8 @@ RUN set -eux \ libsodium-dev \ libssl-dev \ libtidy-dev \ + libvips-dev \ + libvips42 \ libvpx-dev \ libwebp-dev \ libxml2-dev \ @@ -281,21 +285,10 @@ RUN set -eux \ # -------------------- Installing PHP Extension: memcached -------------------- RUN set -eux \ - # Installation: Version specific - # Type: GIT extension - && git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ - && cd /tmp/memcached \ - # Custom: Branch - && git checkout master \ - # Custom: Install command - && true \ -# FIXME: This is a work-around to mitigate compile error with PHP 8.1 -&& sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \ -&& phpize \ -&& ./configure --enable-memcached \ -&& make -j$(getconf _NPROCESSORS_ONLN) \ -&& make install \ - \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \ # Enabling && docker-php-ext-enable memcached \ && true @@ -661,6 +654,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: vips -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Default: Pecl command + && pecl install vips \ + # Enabling + && docker-php-ext-enable vips \ + && true + + # -------------------- Installing PHP Extension: xdebug -------------------- RUN set -eux \ # Installation: Version specific @@ -719,6 +723,17 @@ RUN set -eux \ && true +# -------------------- Installing PHP Extension: swoole -------------------- +RUN set -eux \ + # Installation: Generic + # Type: PECL extension + # Custom: Pecl command + && pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \ + # Enabling + && docker-php-ext-enable swoole \ + && true + + # Fix php.ini settings for enabled extensions @@ -761,18 +776,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.1-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -781,8 +785,10 @@ RUN set -eux \ libaio1 \ libaspell15 \ libavif9 \ + libc-ares2 \ libc-client2007e \ libenchant-2-2 \ + libevent-2.1-7 \ libfbclient2 \ libffi7 \ libfreetype6 \ @@ -791,12 +797,14 @@ RUN set -eux \ libmagickwand-6.q16-6 \ libmariadbd19 \ libmemcachedutil2 \ + libnghttp2-14 \ libpng16-16 \ libpq5 \ librabbitmq4 \ librdkafka1 \ libsybdb5 \ libtidy5deb1 \ + libvips42 \ libvpx6 \ libwebp6 \ libxpm4 \ @@ -813,7 +821,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- @@ -1002,6 +1021,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^uploadprogress$' \ && php -m | grep -oiE '^uuid$' \ && php-fpm -m | grep -oiE '^uuid$' \ + && php -m | grep -oiE '^vips$' \ + && php-fpm -m | grep -oiE '^vips$' \ && php -m | grep -oiE '^xdebug$' \ && php-fpm -m | grep -oiE '^xdebug$' \ && php -m | grep -oiE '^xml$' \ @@ -1018,6 +1039,8 @@ RUN set -eux \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ && true diff --git a/Dockerfiles/mods/Dockerfile-8.2 b/Dockerfiles/mods/Dockerfile-8.2 index 19e4782..aef9e30 100644 --- a/Dockerfiles/mods/Dockerfile-8.2 +++ b/Dockerfiles/mods/Dockerfile-8.2 @@ -750,18 +750,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.2-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -772,6 +761,7 @@ RUN set -eux \ libavif9 \ libc-client2007e \ libenchant-2-2 \ + libevent-2.1-7 \ libfbclient2 \ libffi7 \ libfreetype6 \ @@ -802,7 +792,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- diff --git a/Dockerfiles/work/Dockerfile-5.2 b/Dockerfiles/work/Dockerfile-5.2 index a517dda..1e11bf3 100644 --- a/Dockerfiles/work/Dockerfile-5.2 +++ b/Dockerfiles/work/Dockerfile-5.2 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -126,7 +124,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -166,9 +163,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -176,11 +181,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -263,41 +268,44 @@ fi \ fi \ \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -306,7 +314,42 @@ fi \ ### RUN set -eux \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -361,14 +404,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -391,8 +469,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -411,8 +523,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -464,7 +610,9 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[0-9][.0-9]+' \ @@ -496,14 +644,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-5.3 b/Dockerfiles/work/Dockerfile-5.3 index 7eb0d32..508521a 100644 --- a/Dockerfiles/work/Dockerfile-5.3 +++ b/Dockerfiles/work/Dockerfile-5.3 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -126,7 +124,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -156,11 +153,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-1 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -174,9 +175,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -184,11 +193,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -317,41 +326,44 @@ fi \ && curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -363,7 +375,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -418,14 +465,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -448,8 +530,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -468,8 +584,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -521,8 +671,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ && git-flow version | grep -E '[0-9][.0-9]+' \ @@ -560,14 +712,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-5.4 b/Dockerfiles/work/Dockerfile-5.4 index 19ab4bd..927a5a4 100644 --- a/Dockerfiles/work/Dockerfile-5.4 +++ b/Dockerfiles/work/Dockerfile-5.4 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -126,7 +124,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -156,11 +153,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -174,9 +175,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -184,11 +193,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -351,41 +360,44 @@ fi \ && curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -401,7 +413,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -456,14 +503,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -486,8 +568,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -506,8 +622,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -559,8 +709,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -603,14 +755,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-5.5 b/Dockerfiles/work/Dockerfile-5.5 index 399995c..3e74977 100644 --- a/Dockerfiles/work/Dockerfile-5.5 +++ b/Dockerfiles/work/Dockerfile-5.5 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -126,7 +124,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -156,11 +153,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -174,9 +175,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -184,11 +193,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -357,41 +366,44 @@ fi \ && curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -415,7 +427,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -470,14 +517,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -500,8 +582,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -520,8 +636,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -573,8 +723,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -620,14 +772,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-5.6 b/Dockerfiles/work/Dockerfile-5.6 index 0029062..a7eaf89 100644 --- a/Dockerfiles/work/Dockerfile-5.6 +++ b/Dockerfiles/work/Dockerfile-5.6 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -158,11 +155,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -373,41 +382,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -431,7 +443,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -486,14 +533,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -513,8 +595,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -533,8 +649,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -586,8 +736,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -634,14 +786,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-7.0 b/Dockerfiles/work/Dockerfile-7.0 index 9c5ee56..c66f3b7 100644 --- a/Dockerfiles/work/Dockerfile-7.0 +++ b/Dockerfiles/work/Dockerfile-7.0 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -158,11 +155,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -354,41 +363,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -412,7 +424,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -467,14 +514,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -494,8 +576,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -514,8 +630,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -567,8 +717,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -613,14 +765,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-7.1 b/Dockerfiles/work/Dockerfile-7.1 index 7244c50..86a8eea 100644 --- a/Dockerfiles/work/Dockerfile-7.1 +++ b/Dockerfiles/work/Dockerfile-7.1 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -175,9 +176,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -185,11 +194,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -353,41 +362,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -411,7 +423,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -466,14 +513,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -493,8 +575,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -513,8 +629,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -566,8 +716,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -612,14 +764,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-7.2 b/Dockerfiles/work/Dockerfile-7.2 index b1717c5..ef0c686 100644 --- a/Dockerfiles/work/Dockerfile-7.2 +++ b/Dockerfiles/work/Dockerfile-7.2 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -175,9 +176,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -185,11 +194,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -373,41 +382,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -431,7 +443,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -486,14 +533,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -513,8 +595,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -533,8 +649,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -586,8 +736,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -634,14 +786,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-7.3 b/Dockerfiles/work/Dockerfile-7.3 index 8775d8f..c2a8971 100644 --- a/Dockerfiles/work/Dockerfile-7.3 +++ b/Dockerfiles/work/Dockerfile-7.3 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -374,41 +383,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -432,7 +444,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -487,14 +534,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -514,8 +596,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -534,8 +650,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -587,8 +737,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -635,14 +787,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-7.4 b/Dockerfiles/work/Dockerfile-7.4 index 698c26e..b3f7f58 100644 --- a/Dockerfiles/work/Dockerfile-7.4 +++ b/Dockerfiles/work/Dockerfile-7.4 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -374,41 +383,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -432,7 +444,42 @@ RUN set -eux \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -487,14 +534,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -514,8 +596,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -534,8 +650,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -587,8 +737,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \ @@ -635,14 +787,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-8.0 b/Dockerfiles/work/Dockerfile-8.0 index 6c1839b..f7aaefb 100644 --- a/Dockerfiles/work/Dockerfile-8.0 +++ b/Dockerfiles/work/Dockerfile-8.0 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -308,41 +317,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -351,7 +363,42 @@ fi \ ### RUN set -eux \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -406,14 +453,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -433,8 +515,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -453,8 +569,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -506,8 +656,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \ @@ -545,14 +697,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-8.1 b/Dockerfiles/work/Dockerfile-8.1 index 571f7f9..26c7c9f 100644 --- a/Dockerfiles/work/Dockerfile-8.1 +++ b/Dockerfiles/work/Dockerfile-8.1 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -308,41 +317,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -351,7 +363,42 @@ fi \ ### RUN set -eux \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -406,14 +453,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -433,8 +515,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -453,8 +569,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -506,8 +656,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \ @@ -545,14 +697,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Dockerfiles/work/Dockerfile-8.2 b/Dockerfiles/work/Dockerfile-8.2 index 60c19d2..be9df10 100644 --- a/Dockerfiles/work/Dockerfile-8.2 +++ b/Dockerfiles/work/Dockerfile-8.2 @@ -60,8 +60,6 @@ RUN set -eux \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ - && curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ - && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ @@ -127,7 +125,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -157,11 +154,15 @@ RUN set -eux \ ### RUN set -eux \ # -------------------- composer -------------------- - && curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ -&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + && COMPOSER_1_VERSION="latest-1.x" \ +&& COMPOSER_2_VERSION="latest-2.x" \ + \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ +&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ -&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + \ + && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \ \ # -------------------- pip -------------------- @@ -176,9 +177,17 @@ RUN set -eux \ \ \ # -------------------- nvm -------------------- - && git clone https://github.com/creationix/nvm /opt/nvm \ -&& cd /opt/nvm \ -&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + && NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ +)" \ +&& mkdir -p /opt/nvm \ + \ + && curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="/opt/nvm" bash \ \ && { \ echo 'export NVM_DIR="/opt/nvm"'; \ @@ -186,11 +195,11 @@ RUN set -eux \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ -&& chown -R devilbox:devilbox /opt/nvm \ +&& chown -R devilbox:devilbox "/opt/nvm" \ \ - && su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ -&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; nvm use --lts' devilbox \ +&& su -c '. /opt/nvm/nvm.sh; corepack enable' devilbox \ \ \ # -------------------- awesomeci -------------------- @@ -292,41 +301,44 @@ fi \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \ \ -# -------------------- cleanup -------------------- - && rm -rf /home/${MY_USER}/.*json \ -&& rm -rf /home/${MY_USER}/.cache \ -&& rm -rf /home/${MY_USER}/.composer \ -&& rm -rf /home/${MY_USER}/.config \ -&& rm -rf /home/${MY_USER}/.drush \ -&& rm -rf /home/${MY_USER}/.subversion \ -&& rm -rf /home/${MY_USER}/.v8* \ -\ -&& rm -rf /root/.*json \ -&& rm -rf /root/.cache \ -&& rm -rf /root/.composer \ -&& rm -rf /root/.config \ -&& rm -rf /root/.drush \ -&& rm -rf /root/.subversion \ -&& rm -rf /root/.v8* \ -\ -&& rm -rf /tmp/* \ -&& (rm -rf /tmp/.* || true) \ - \ \ \ - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ - \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ - \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -335,7 +347,42 @@ fi \ ### RUN set -eux \ \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -390,14 +437,49 @@ RUN set -eux \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ \ \ - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "/opt/nvm/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) @@ -417,8 +499,42 @@ RUN set -eux \ && gem install mdl -v 0.5.0 \ \ \ - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -437,8 +553,42 @@ RUN set -eux \ && pip install --no-cache-dir --force-reinstall yq || true \ \ \ - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -490,8 +640,10 @@ RUN set -eux \ RUN set -eux \ # -------------------- Software -------------------- - && composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ - && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ + && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \ + && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ +&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + \ && regex-grep --version | grep -E '[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \ @@ -527,14 +679,42 @@ RUN set -eux \ && mdl --version | grep -E '[0-9][.0-9]+' \ \ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + && (rm -rf /home/devilbox/.*json || true) \ + && (rm -rf /home/devilbox/.ansible || true) \ + && (rm -rf /home/devilbox/.cache || true) \ + && (rm -rf /home/devilbox/.composer || true) \ + && (rm -rf /home/devilbox/.config || true) \ + && (rm -rf /home/devilbox/.console || true) \ + && (rm -rf /home/devilbox/.drush || true) \ + && (rm -rf /home/devilbox/.gem || true) \ + && (rm -rf /home/devilbox/.local || true) \ + && (rm -rf /home/devilbox/.node || true) \ + && (rm -rf /home/devilbox/.npm || true) \ + && (rm -rf /home/devilbox/.pm2 || true) \ + && (rm -rf /home/devilbox/.subversion || true) \ + && (rm -rf /home/devilbox/.v8* || true) \ + && (rm -rf /home/devilbox/node_modules || true) \ + && (rm -rf /home/devilbox/yarn.lock || true) \ + \ + && (rm -rf /root/.*json || true) \ + && (rm -rf /root/.ansible || true) \ + && (rm -rf /root/.cache || true) \ + && (rm -rf /root/.composer || true) \ + && (rm -rf /root/.config || true) \ + && (rm -rf /root/.console || true) \ + && (rm -rf /root/.drush || true) \ + && (rm -rf /root/.gem || true) \ + && (rm -rf /root/.local || true) \ + && (rm -rf /root/.node || true) \ + && (rm -rf /root/.npm || true) \ + && (rm -rf /root/.pm2 || true) \ + && (rm -rf /root/.subversion || true) \ + && (rm -rf /root/.v8* || true) \ + && (rm -rf /root/node_modules || true) \ + && (rm -rf /root/yarn.lock || true) \ + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/Makefile b/Makefile index cc967ec..0c9b2fc 100644 --- a/Makefile +++ b/Makefile @@ -27,18 +27,19 @@ TAG = latest NAME = PHP #VERSION = 5.5 IMAGE = devilbox/php-fpm -#FLAVOUR = base +#FLAVOUR = debian +#STAGE = base FILE = Dockerfile-$(VERSION) -DIR = Dockerfiles/$(FLAVOUR) +DIR = Dockerfiles/$(STAGE) ifeq ($(strip $(TAG)),latest) -DOCKER_TAG = $(VERSION)-$(FLAVOUR) +DOCKER_TAG = $(VERSION)-$(STAGE) BASE_TAG = $(VERSION)-base MODS_TAG = $(VERSION)-mods PROD_TAG = $(VERSION)-prod WORK_TAG = $(VERSION)-work else -DOCKER_TAG = $(VERSION)-$(FLAVOUR)-$(TAG) +DOCKER_TAG = $(VERSION)-$(STAGE)-$(TAG) BASE_TAG = $(VERSION)-base-$(TAG) MODS_TAG = $(VERSION)-mods-$(TAG) PROD_TAG = $(VERSION)-prod-$(TAG) @@ -116,41 +117,41 @@ lint-ansible: gen-dockerfiles # the variable directory of extensions to copy. # The only way to "LAZY" fetch it, is by doing a call to the base image and populate # a Makefile variable with its value upon call. -ifeq ($(strip $(FLAVOUR)),mods) +ifeq ($(strip $(STAGE)),mods) EXT_DIR=$$( docker run --rm --platform $(ARCH) --entrypoint=php $(IMAGE):$(BASE_TAG) -r \ 'echo ini_get("extension_dir");'\ ) endif .PHONY: build -build: check-flavour-is-set +build: check-stage-is-set build: check-parent-image-exists build: ARGS+=--build-arg EXT_DIR=$(EXT_DIR) build: docker-arch-build .PHONY: rebuild -rebuild: check-flavour-is-set +rebuild: check-stage-is-set rebuild: check-parent-image-exists rebuild: ARGS+=--build-arg EXT_DIR=$(EXT_DIR) rebuild: docker-arch-rebuild .PHONY: push -push: check-flavour-is-set +push: check-stage-is-set push: check-version-is-set push: docker-arch-push .PHONY: tag -tag: check-flavour-is-set +tag: check-stage-is-set tag: check-version-is-set tag: - docker tag $(IMAGE):$(VERSION)-$(FLAVOUR) $(IMAGE):$(DOCKER_TAG) + docker tag $(IMAGE):$(VERSION)-$(STAGE) $(IMAGE):$(DOCKER_TAG) # ------------------------------------------------------------------------------------------------- # Save / Load Targets # ------------------------------------------------------------------------------------------------- .PHONY: save -save: check-flavour-is-set +save: check-stage-is-set save: check-version-is-set save: check-current-image-exists save: docker-save @@ -177,13 +178,13 @@ manifest-push: docker-manifest-push # Test Targets # ------------------------------------------------------------------------------------------------- .PHONY: test -test: check-flavour-is-set +test: check-stage-is-set test: check-current-image-exists test: test-integration .PHONY: test-integration test-integration: - ./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) $(FLAVOUR) $(DOCKER_TAG) + ./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) $(STAGE) $(DOCKER_TAG) # ------------------------------------------------------------------------------------------------- @@ -240,17 +241,17 @@ check-version-is-set: fi ### -### Ensures the FLAVOUR variable is set +### Ensures the STAGE variable is set ### -.PHONY: check-flavour-is-set -check-flavour-is-set: - @if [ "$(FLAVOUR)" = "" ]; then \ - echo "This make target requires the FLAVOUR variable to be set."; \ - echo "make FLAVOUR="; \ +.PHONY: check-stage-is-set +check-stage-is-set: + @if [ "$(STAGE)" = "" ]; then \ + echo "This make target requires the STAGE variable to be set."; \ + echo "make STAGE="; \ echo "Exiting."; \ exit 1; \ fi - @if [ "$(FLAVOUR)" != "base" ] && [ "$(FLAVOUR)" != "mods" ] && [ "$(FLAVOUR)" != "prod" ] && [ "$(FLAVOUR)" != "work" ]; then \ + @if [ "$(STAGE)" != "base" ] && [ "$(STAGE)" != "mods" ] && [ "$(STAGE)" != "prod" ] && [ "$(STAGE)" != "work" ]; then \ echo "Error, Flavour can only be one of 'base', 'mods', 'prod', or 'work'."; \ echo "Exiting."; \ exit 1; \ @@ -260,7 +261,7 @@ check-flavour-is-set: ### Checks if current image exists and is of correct architecture ### .PHONY: check-current-image-exists -check-current-image-exists: check-flavour-is-set +check-current-image-exists: check-stage-is-set check-current-image-exists: @if [ "$$( docker images -q $(IMAGE):$(DOCKER_TAG) )" = "" ]; then \ >&2 echo "Docker image '$(IMAGE):$(DOCKER_TAG)' was not found locally."; \ @@ -286,9 +287,9 @@ check-current-image-exists: ### Checks if parent image exists and is of correct architecture ### .PHONY: check-parent-image-exists -check-parent-image-exists: check-flavour-is-set +check-parent-image-exists: check-stage-is-set check-parent-image-exists: - @if [ "$(FLAVOUR)" = "work" ]; then \ + @if [ "$(STAGE)" = "work" ]; then \ if [ "$$( docker images -q $(IMAGE):$(PROD_TAG) )" = "" ]; then \ >&2 echo "Docker image '$(IMAGE):$(PROD_TAG)' was not found locally."; \ >&2 echo "Either build it first or explicitly pull it from Dockerhub."; \ @@ -304,7 +305,7 @@ check-parent-image-exists: >&2 echo; \ exit 1; \ fi; \ - elif [ "$(FLAVOUR)" = "prod" ]; then \ + elif [ "$(STAGE)" = "prod" ]; then \ if [ "$$( docker images -q $(IMAGE):$(MODS_TAG) )" = "" ]; then \ >&2 echo "Docker image '$(IMAGE):$(MODS_TAG)' was not found locally."; \ >&2 echo "Either build it first or explicitly pull it from Dockerhub."; \ @@ -320,7 +321,7 @@ check-parent-image-exists: >&2 echo; \ exit 1; \ fi; \ - elif [ "$(FLAVOUR)" = "mods" ]; then \ + elif [ "$(STAGE)" = "mods" ]; then \ if [ "$$( docker images -q $(IMAGE):$(BASE_TAG) )" = "" ]; then \ >&2 echo "Docker image '$(IMAGE):$(BASE_TAG)' was not found locally."; \ >&2 echo "Either build it first or explicitly pull it from Dockerhub."; \ diff --git a/README.md b/README.md index 8b65302..b0eb136 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ [![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT) +**Available Architectures:** `amd64`, `arm64` + This repository will provide you fully functional PHP-FPM Docker images in different flavours, versions and packed with different types of integrated PHP modules. It also solves the problem of **[syncronizing file permissions](#unsynchronized-permissions)** of mounted volumes between the host and the container. @@ -709,12 +711,12 @@ Check out this table to see which Docker image provides what PHP modules. 8.0 Core, ctype, curl, date, dom, FFI, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib - amqp, apcu, bcmath, blackfire, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib + amqp, apcu, bcmath, blackfire, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, vips, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib 8.1 Core, ctype, curl, date, dom, FFI, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib - amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib + amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, vips, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib 8.2 diff --git a/build/ansible/DOCKERFILES/Dockerfile-mods.j2 b/build/ansible/DOCKERFILES/Dockerfile-mods.j2 index 61d5a4b..a0abf7f 100644 --- a/build/ansible/DOCKERFILES/Dockerfile-mods.j2 +++ b/build/ansible/DOCKERFILES/Dockerfile-mods.j2 @@ -342,18 +342,7 @@ LABEL "org.opencontainers.image.description"="PHP-FPM {{ php_version }}-mods" ### -### Copy artifacts from builder -### -ARG EXT_DIR -COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ -COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ -COPY --from=builder /usr/local/bin/ /usr/local/bin/ -COPY --from=builder /usr/local/lib/ /usr/local/lib/ -COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ - - -### -### Install +### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -388,7 +377,18 @@ RUN set -eux \ ### -### Post Install +### Copy artifacts from builder +### +ARG EXT_DIR +COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ +COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ +COPY --from=builder /usr/local/bin/ /usr/local/bin/ +COPY --from=builder /usr/local/lib/ /usr/local/lib/ +COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ + + +### +### Post Install executions ### {# Loop over enabled extensions #} {%- set post_commands = {} -%} diff --git a/build/ansible/DOCKERFILES/Dockerfile-work.j2 b/build/ansible/DOCKERFILES/Dockerfile-work.j2 index 46029d4..c4fdb91 100644 --- a/build/ansible/DOCKERFILES/Dockerfile-work.j2 +++ b/build/ansible/DOCKERFILES/Dockerfile-work.j2 @@ -150,7 +150,6 @@ RUN set -eux \ wget \ whois \ xz-utils \ - yarn \ zip \ zlib1g-dev \ zsh \ @@ -230,19 +229,17 @@ RUN set -eux \ {%- else -%} {{ "\n\t" }}\{{ "\n" }} {%- endif %} - && (rm -rf /root/.gem || true ) \ - && (rm -rf /root/.cache || true) \ - && (rm -rf /root/.composer || true) \ - && (rm -rf /root/.config || true) \ - && (rm -rf /root/.npm || true) \ \ - && (rm -rf /home/devilbox/.cache || true) \ - && (rm -rf /home/devilbox/.composer || true) \ - && (rm -rf /home/devilbox/.config || true) \ - && (rm -rf /home/devilbox/.npm || true) \ + {% for f in directory_to_clean %} + && (rm -rf /home/devilbox/{{ f }} || true) \ + {% endfor %} + \ + {% for f in directory_to_clean %} + && (rm -rf /root/{{ f }} || true) \ + {% endfor %} \ && (rm -rf /usr/local/src/composer/cache/* || true) \ - && rm -rf /tmp/* \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) @@ -291,7 +288,16 @@ RUN set -eux \ {%- else -%} {{ "\n\t" }}\{{ "\n" }} {%- endif %} - && rm -rf /tmp/* \ + \ + {% for f in directory_to_clean %} + && (rm -rf /home/devilbox/{{ f }} || true) \ + {% endfor %} + \ + {% for f in directory_to_clean %} + && (rm -rf /root/{{ f }} || true) \ + {% endfor %} + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -314,18 +320,18 @@ RUN set -eux \ {%- endif -%} {#- Version specific gem version available? -#} {%- if php_version in npm_available[tool] and 'version' in npm_available[tool][php_version] -%} - {{ "\n\t" }}&& su -c '. /opt/nvm/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool][php_version]['version'] }}' devilbox \ + {{ "\n\t" }}&& su -c '. {{ nvm_home }}/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool][php_version]['version'] }}' devilbox \ {#- Generic gem version available? -#} {%- elif 'all' in npm_available[tool] and 'version' in npm_available[tool]['all'] -%} - {{ "\n\t" }}&& su -c '. /opt/nvm/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool]['all']['version'] }}' devilbox \ + {{ "\n\t" }}&& su -c '. {{ nvm_home }}/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool]['all']['version'] }}' devilbox \ {#- No version info available -#} {%- else -%} - {{ "\n\t" }}&& su -c '. /opt/nvm/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }}' devilbox \ + {{ "\n\t" }}&& su -c '. {{ nvm_home }}/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }}' devilbox \ {%- endif -%} {#- Fail fast version -#} {%- if build_fail_fast -%} {%- if 'check' in npm_available[tool] -%} - {{ "\n\t" }}&& PATH=$PATH:/opt/nvm/versions/node/$(/bin/ls -1 /opt/nvm/versions/node/ | sort -V | tail -1)/bin /opt/nvm/versions/node/$(/bin/ls -1 /opt/nvm/versions/node/ | sort -V | tail -1)/bin/{{ npm_available[tool]['check'] }}{{ "\n\n" }} + {{ "\n\t" }}&& PATH=$PATH:{{ nvm_home }}/versions/node/$(/bin/ls -1 {{ nvm_home }}/versions/node/ | sort -V | tail -1)/bin {{ nvm_home }}/versions/node/$(/bin/ls -1 {{ nvm_home }}/versions/node/ | sort -V | tail -1)/bin/{{ npm_available[tool]['check'] }}{{ "\n\n" }} {%- else -%} {{ "\n\t" }}&& true{{ "\n\n" }} {%- endif -%} @@ -340,17 +346,26 @@ RUN set -eux \ {%- else -%} {{ "\n\t" }}\{{ "\n" }} {%- endif %} - && ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ \ - && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ - && rm -rf /home/devilbox/.npm \ - && rm -rf /home/devilbox/.cache \ - && rm -rf /home/devilbox/.config \ - && rm -rf /tmp/* \ + && if [ -f "{{ nvm_home }}/nvm.sh" ]; then \ + ln -sf $(dirname $(su -c '. {{ nvm_home }}/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \ + \ + && su -c '. {{ nvm_home }}/nvm.sh; npm cache clear --force' devilbox \ + && su -c '. {{ nvm_home }}/nvm.sh; nvm cache clear --force' devilbox; \ + fi \ + \ + {% for f in directory_to_clean %} + && (rm -rf /home/devilbox/{{ f }} || true) \ + {% endfor %} + \ + {% for f in directory_to_clean %} + && (rm -rf /root/{{ f }} || true) \ + {% endfor %} + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ - && (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + && (find {{ nvm_home }} -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) ### @@ -394,8 +409,16 @@ RUN set -eux \ {%- else -%} {{ "\n\t" }}\{{ "\n" }} {%- endif %} - && rm -rf /root/.gem \ - && rm -rf /tmp/* \ + \ + {% for f in directory_to_clean %} + && (rm -rf /home/devilbox/{{ f }} || true) \ + {% endfor %} + \ + {% for f in directory_to_clean %} + && (rm -rf /root/{{ f }} || true) \ + {% endfor %} + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -444,8 +467,16 @@ RUN set -eux \ {%- else -%} {{ "\n\t" }}\{{ "\n" }} {%- endif %} - && rm -rf /root/.cache/pip \ - && rm -rf /tmp/* \ + \ + {% for f in directory_to_clean %} + && (rm -rf /home/devilbox/{{ f }} || true) \ + {% endfor %} + \ + {% for f in directory_to_clean %} + && (rm -rf /root/{{ f }} || true) \ + {% endfor %} + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) \ \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ @@ -461,7 +492,7 @@ RUN \ echo 'PATH="${PATH}:/usr/local/bin:/usr/local/sbin"'; \ echo 'PATH="${HOME}/.yarn/bin:${PATH}"'; \ echo 'PATH="${HOME}/.composer/vendor/bin:${PATH}"'; \ - echo 'PATH="/opt/nvm/versions/node/$(nvm version default)/bin:${PATH}"'; \ + echo 'PATH="{{ nvm_home }}/versions/node/$(nvm version default)/bin:${PATH}"'; \ echo "export PATH"; \ echo ". /etc/bash-devilbox"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ @@ -543,14 +574,16 @@ RUN set -eux \ {%- endif -%} {% endfor %}{{ "\n\t" }}\ # -------------------- Cleanup -------------------- - && rm -rf /home/devilbox/.cache/ \ - && rm -rf /home/devilbox/.config/ \ - && rm -rf /root/.ansible \ - && rm -rf /root/.console \ - && rm -rf /root/.composer \ - && rm -rf /root/.drush \ - && rm -rf /root/.pm2 \ - && rm -rf /tmp/* \ + \ + {% for f in directory_to_clean %} + && (rm -rf /home/devilbox/{{ f }} || true) \ + {% endfor %} + \ + {% for f in directory_to_clean %} + && (rm -rf /root/{{ f }} || true) \ + {% endfor %} + \ + && (rm -rf /tmp/* || true) \ && (rm -rf /tmp/.* || true) diff --git a/build/ansible/group_vars/all/mods.yml b/build/ansible/group_vars/all/mods.yml index 6a5e9b8..5186ac6 100644 --- a/build/ansible/group_vars/all/mods.yml +++ b/build/ansible/group_vars/all/mods.yml @@ -12,7 +12,7 @@ # Extensions to enable (in defined order) # ------------------------------------------------------------------------------------------------- extensions_enabled: - # # ioncube must be loaded first + # ioncube must be loaded first - ioncube - amqp - apcu @@ -94,8 +94,6 @@ extensions_enabled: - spl - sqlsrv - ssh2 - # requires sockets to be installed - - swoole - sysvmsg - sysvsem - sysvshm @@ -114,6 +112,9 @@ extensions_enabled: - xlswriter - yaml - zip + # Swoole requires php-json, php-sockets, php-curl, php-mysql (and others) to be installed + # https://openswoole.com/docs/get-started/prerequisites#php-extensions + - swoole # ------------------------------------------------------------------------------------------------- @@ -147,7 +148,6 @@ extensions_enabled: # command: [required] Custom command to install and enable a module extensions_available: amqp: - disabled: [] 5.2: type: pecl version: 1.6.1 @@ -367,7 +367,6 @@ extensions_available: iconv: already_avail: "{{ php_all_versions }}" igbinary: - disabled: [] 5.2: type: pecl version: 2.0.7 @@ -549,47 +548,35 @@ extensions_available: 5.2: type: pecl version: 2.1.0 + run_dep: [libmemcachedutil2, libevent-2.0-5] 5.3: type: pecl version: 2.2.0 + run_dep: [libmemcachedutil2, libevent-2.0-5] 5.4: type: pecl version: 2.2.0 + run_dep: [libmemcachedutil2, libevent-2.0-5] 5.5: type: pecl version: 2.2.0 + run_dep: [libmemcachedutil2, libevent-2.0-5] 5.6: type: pecl version: 2.2.0 - 7.4: - type: git - git_url: https://github.com/php-memcached-dev/php-memcached - git_ref: master - command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install - 8.0: - type: git - git_url: https://github.com/php-memcached-dev/php-memcached - git_ref: master - command: | - true \ - # FIXME: This is a work-around to mitigate compile error with PHP 8.0 - && sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \ - && phpize \ - && ./configure --enable-memcached \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - 8.1: - type: git - git_url: https://github.com/php-memcached-dev/php-memcached - git_ref: master - command: | - true \ - # FIXME: This is a work-around to mitigate compile error with PHP 8.1 - && sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \ - && phpize \ - && ./configure --enable-memcached \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ + run_dep: [libmemcachedutil2, libevent-2.0-5] + 7.0: + type: pecl + command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached + run_dep: [libmemcachedutil2, libevent-2.0-5] + 7.1: + type: pecl + command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached + run_dep: [libmemcachedutil2, libevent-2.1-6] + 7.2: + type: pecl + command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached + run_dep: [libmemcachedutil2, libevent-2.1-6] 8.2: type: git git_url: https://github.com/php-memcached-dev/php-memcached @@ -604,8 +591,9 @@ extensions_available: && make install \ all: type: pecl + command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached build_dep: [zlib1g-dev, libmemcached-dev, libevent-dev] - run_dep: [libmemcachedutil2] + run_dep: [libmemcachedutil2, libevent-2.1-7] mhash: disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] # Deprecated already_avail: [5.2, 5.3, 5.4, 5.5, 5.6] @@ -1159,19 +1147,19 @@ extensions_available: build_dep: [libssh2-1-dev] run_dep: [libssh2-1] swoole: - disabled: [5.2, 8.1, 8.2] + disabled: [5.2, 8.2] 5.3: type: pecl version: 1.9.23 - run_dep: [libnghttp2-5] + run_dep: [libc-ares2, libnghttp2-5, libssl1.0.0] 5.4: type: pecl version: 1.9.23 - run_dep: [libnghttp2-5] + run_dep: [libc-ares2, libnghttp2-5, libssl1.0.0] 5.5: type: pecl version: 1.9.23 - run_dep: [libnghttp2-5] + run_dep: [libc-ares2, libnghttp2-5, libssl1.0.0] 5.6: type: pecl version: 1.9.23 @@ -1183,9 +1171,10 @@ extensions_available: version: 4.4.26 all: type: pecl - command: yes yes | pecl install swoole - build_dep: [libnghttp2-dev, libssl-dev] - run_dep: [libnghttp2-14] + # Note: -D is only supported from PHP 7.2+ + command: pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole + build_dep: [libc-ares-dev, libnghttp2-dev, libssl-dev, libcurl4-openssl-dev] + run_dep: [libc-ares2, libnghttp2-14] sysvmsg: all: type: builtin @@ -1263,96 +1252,18 @@ extensions_available: run_dep: [uuid] build_dep: [uuid-dev] vips: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 8.0, 8.1, 8.2] - 7.0: - build_dep: - - fftw-dev - - gobject-introspection - - gtk-doc-tools - - libexif-dev - - libexpat1-dev - - libfftw3-dev - - libgif-dev - - libglib2.0-dev - - libmagick++-dev - - libmagickcore-6.q16-dev - - libmagickwand-dev - - libpoppler-glib-dev - - librsvg2-dev - - libtool - - libwebp-dev - - libwebpdemux2 - - libwebpmux2 - run_dep: - - fftw2 - - gir1.2-poppler-0.18 - - imagemagick-6.q16 - - libexif12 - - libexpat1 - - libfftw3-3 - - libgif7 - - libglib2.0-0 - - libmagick++-6.q16-7 - - libmagick++-6.q16hdri-7 - - libmagickcore-6.q16-3 - - libmagickcore-6.q16-3-extra - - libmagickwand-6.q16-3 - - libmagickwand-6.q16hdri-3 - - libpoppler-glib8 - - librsvg2-2 - - libwebp6 - - libwebpdemux2 - - libwebpmux2 + # vips requires PHP > 5.6 + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 8.2] + 5.6: + type: pecl + version: 1.0.0 all: type: pecl - pre: | - git clone https://github.com/libvips/libvips /tmp/libvips \ - && cd /tmp/libvips \ - && ./autogen.sh \ - && make -j$(getconf _NPROCESSORS_ONLN) \ - && make install \ - && cd /tmp \ - && rm -rf /tmp/libvips \ build_dep: - - fftw-dev - - gobject-introspection - - gtk-doc-tools - - libexif-dev - - libexpat1-dev - - libfftw3-dev - - libgif-dev - - libglib2.0-dev - - libimagequant-dev - - libmagick++-dev - - libmagickcore-6.q16-dev - - libmagickwand-dev - - libpoppler-glib-dev - - librsvg2-dev - - libtool - - libwebp-dev - - libwebpdemux2 - - libwebpmux3 + - libvips-dev + - libvips42 run_dep: - - fftw2 - - gir1.2-poppler-0.18 - - imagemagick-6.q16 - - libexif12 - - libexpat1 - - libfftw3-3 - - libgif7 - - libglib2.0-0 - - libimagequant0 - - libmagick++-6.q16-8 - - libmagick++-6.q16hdri-8 - - libmagickcore-6.q16-6 - - libmagickcore-6.q16-6-extra - - libmagickwand-6.q16-6 - - libmagickwand-6.q16hdri-6 - - libpoppler-glib8 - - librsvg2-2 - - libwebp6 - - libwebpdemux2 - - libwebpmux3 + - libvips42 wddx: # https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx disabled: [7.4, 8.0, 8.1, 8.2] diff --git a/build/ansible/group_vars/all/work.yml b/build/ansible/group_vars/all/work.yml index 5a0d1e4..cea0d73 100644 --- a/build/ansible/group_vars/all/work.yml +++ b/build/ansible/group_vars/all/work.yml @@ -12,7 +12,26 @@ # Global variables # ------------------------------------------------------------------------------------------------- composer_home: /usr/local/src/composer -nvm_home: /usr/local/src/nvm +nvm_home: /opt/nvm +node_version: --lts + +directory_to_clean: + - .*json + - .ansible + - .cache + - .composer + - .config + - .console + - .drush + - .gem + - .local + - .node + - .npm + - .pm2 + - .subversion + - .v8* + - node_modules + - yarn.lock # ------------------------------------------------------------------------------------------------- @@ -24,7 +43,6 @@ apt_repositories_enabled: - git #- mongo #- pgsql - - yarn # ------------------------------------------------------------------------------------------------- @@ -108,8 +126,6 @@ software_enabled: - symfony - wkhtmltopdf - wpcli - # Cleanup needs to be last - - cleanup # ------------------------------------------------------------------------------------------------- @@ -206,10 +222,6 @@ apt_repositories_available: all: deb: deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - - yarn: - all: - deb: deb http://dl.yarnpkg.com/debian/ stable main - pre: curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - # ------------------------------------------------------------------------------------------------- @@ -418,14 +430,44 @@ software_available: # Composer is a dependency for others composer: disabled: [5.2] - check: composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' + check: composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' + 5.3: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.2.x" \ + post: | + ln -sf /usr/local/bin/composer-1 /usr/local/bin/composer \ + 5.4: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.2.x" \ + 5.5: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.2.x" \ + 5.6: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.2.x" \ + 7.0: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.2.x" \ + 7.1: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.2.x" \ all: + pre: | + COMPOSER_1_VERSION="latest-1.x" \ + && COMPOSER_2_VERSION="latest-2.x" \ command: | - curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ - && curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ + curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \ + && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-2 \ - && ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ + post: | + ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ # pip is a dependency for others pip: 5.2: @@ -512,25 +554,35 @@ software_available: && curl -sS -L --fail https://bootstrap.pypa.io/get-pip.py | python3 \ # nvm is a dependency for others nvm: - check: su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' + check: | + su -c '. {{ nvm_home }}/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ + && su -c '. {{ nvm_home }}/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \ all: pre: | - git clone https://github.com/creationix/nvm /opt/nvm \ - && cd /opt/nvm \ - && git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ + NVM_VERSION="$( \ + curl -sS 'https://github.com/nvm-sh/nvm/releases' \ + | grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \ + | grep -Eo 'v?[.0-9]+' \ + | sort -V \ + | tail -1 \ + )" \ + && mkdir -p {{ nvm_home }} \ + command: | + curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \ + | NVM_DIR="{{ nvm_home }}" bash \ \ && { \ - echo 'export NVM_DIR="/opt/nvm"'; \ + echo 'export NVM_DIR="{{ nvm_home }}"'; \ echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ } >> /home/devilbox/.bashrc \ \ - && chown -R devilbox:devilbox /opt/nvm \ - # Install latest and LTS version - command: | - su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ - && su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ + && chown -R devilbox:devilbox "{{ nvm_home }}" \ + # Install latest and LTS version and yarn + post: | + su -c '. {{ nvm_home }}/nvm.sh; nvm install {{ node_version }}' devilbox \ + && su -c '. {{ nvm_home }}/nvm.sh; nvm use {{ node_version }}' devilbox \ + && su -c '. {{ nvm_home }}/nvm.sh; corepack enable' devilbox \ awesomeci: check: regex-grep --version | grep -E '[0-9][.0-9]+' all: @@ -1032,24 +1084,3 @@ software_available: all: command: curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp post: chmod +x /usr/local/bin/wp - cleanup: - all: - command: | - rm -rf /home/${MY_USER}/.*json \ - && rm -rf /home/${MY_USER}/.cache \ - && rm -rf /home/${MY_USER}/.composer \ - && rm -rf /home/${MY_USER}/.config \ - && rm -rf /home/${MY_USER}/.drush \ - && rm -rf /home/${MY_USER}/.subversion \ - && rm -rf /home/${MY_USER}/.v8* \ - \ - && rm -rf /root/.*json \ - && rm -rf /root/.cache \ - && rm -rf /root/.composer \ - && rm -rf /root/.config \ - && rm -rf /root/.drush \ - && rm -rf /root/.subversion \ - && rm -rf /root/.v8* \ - \ - && rm -rf /tmp/* \ - && (rm -rf /tmp/.* || true) \