From e0c765d40c8d15c96ea0797d3b799a423e56ede4 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Fri, 20 Dec 2024 14:34:07 -0700 Subject: [PATCH 1/3] ci(docker): update deployment workflows add additional checks to run dos2unix and permission checks --- .github/workflows/deploy-docker-dockerhub.yml | 185 +++++++++++------- .../workflows/deploy-docker-github-sync.yml | 25 +-- .github/workflows/deploy-docker-github.yml | 174 ++++++++++------ 3 files changed, 239 insertions(+), 145 deletions(-) diff --git a/.github/workflows/deploy-docker-dockerhub.yml b/.github/workflows/deploy-docker-dockerhub.yml index 252e242de..4fbdce4ec 100644 --- a/.github/workflows/deploy-docker-dockerhub.yml +++ b/.github/workflows/deploy-docker-dockerhub.yml @@ -34,7 +34,7 @@ on: # # IMAGE_NAME: - description: "📦 Image Name" + description: '📦 Image Name' required: true default: 'keeweb' type: string @@ -47,7 +47,7 @@ on: # # IMAGE_AUTHOR: - description: "🪪 Image Author" + description: '🪪 Image Author' required: true default: 'antelle' type: string @@ -59,7 +59,7 @@ on: # # IMAGE_VERSION: - description: "🏷️ Image Version" + description: '🏷️ Image Version' required: true default: '1.19.0' type: string @@ -71,32 +71,32 @@ on: # # IMAGE_DOCKERHUB_USERNAME: - description: "🪪 Dockerhub Username" - required: true - default: 'antelle' - type: string + description: '🪪 Dockerhub Username' + required: true + default: 'antelle' + type: string # # - # true: runs all actions, even ones not scheduled - # false: only scheduled tasks will run + # true no changes to the repo will be made + # false workflow will behave normally, and push any changes detected to the files # # - PRINT_ONLY: - description: "📑 Print Debugs Only" - required: true - default: false - type: boolean + DRY_RUN: + description: '🐛 Dry Run (Debug)' + required: true + default: false + type: boolean # # - # ENABLE: released version will be marked as beta and receive beta tag for docker - # DISABLE: release version will be marked as stable / normal release + # true released version will be marked as a development build and will have the v1.x.x-development tag instead of -latest + # false release version will be marked with -latest docker tag # # DEV_RELEASE: - description: "🧪 Development Release" - required: true - default: false - type: boolean + description: '🧪 Development Release' + required: true + default: false + type: boolean # # # Trigger › Push @@ -134,7 +134,7 @@ jobs: job-docker-release-tags-create: name: >- - 📦 Release › Create Tag + 📦 Release › Create Tag runs-on: ubuntu-latest permissions: contents: write @@ -147,8 +147,8 @@ jobs: # Release › Tags › Start # # - - name: "✅ Start" - id: task_ctags_start + - name: '🏳️ Start' + id: task_release_tags_start run: | echo "Creating Tag" @@ -156,27 +156,29 @@ jobs: # Release › Tags › Checkout # # - - name: "☑️ Checkout" - id: task_ctags_checkout + - name: '✅ Checkout' + id: task_release_tags_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # - # Release › Tags › Check Permissions + # Release › Tags › Fix Permissions # # - - name: 'Check Permissions' + - name: '#️⃣ Manage Permissions' + id: task_release_tags_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # @@ -186,8 +188,8 @@ jobs: # # - uses: rickstaa/action-create-tag@v1 - id: task_ctags_create - if: ( github.event_name != 'workflow_dispatch' && inputs.PRINT_ONLY == false ) + id: task_release_tags_create + if: ( github.event_name != 'workflow_dispatch' && inputs.DRY_RUN == false ) with: tag: "${{ env.IMAGE_VERSION }}" tag_exists_error: false @@ -199,9 +201,9 @@ jobs: # Job › Docker Release › Dockerhub › Arm64 # # - job-docker-release-github-arm64: + job-docker-release-dockerhub-arm64: name: >- - 📦 Release › Dockerhub › Arm64 + 📦 Release › Dockerhub › Arm64 runs-on: ubuntu-latest needs: [ job-docker-release-tags-create ] permissions: @@ -215,43 +217,65 @@ jobs: # Release › Dockerhub › Start › Arm64 # # - - name: "✅ Start" + - name: '🏳️ Start' id: task_release_dh_start run: | - echo "Starting Dockerhub Docker arm64" + echo "Starting Dockerhub arm64" # # # Release › Dockerhub › Checkout › Arm64 # # - - name: "☑️ Checkout" + - name: '✅ Checkout' id: task_release_dh_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # - # Release › Dockerhub › Check Permissions + # Release › Dockerhub › Install Dependencies + # # + + - name: '📦 Install Dependencies' + id: task_release_dh_dependencies + run: + sudo apt-get install -qq dos2unix + + # # + # Release › Dockerhub › Execute dos2unix # # - - name: 'Check Permissions' + - name: '🔐 Apply dos2unix' + id: task_release_dh_dos2unix + run: | + echo "⚠️⚠️⚠️ Running DOS2UNIX ⚠️⚠️⚠️" + find ./ \( -path "./.git" -o -path "./docs" -o -path "./.github" -o -path "*.png" -o -path "*.jpg" \) -prune -o -name '*' -print | xargs dos2unix -- + echo "✅✅✅ Completed DOS2UNIX ✅✅✅" + + # # + # Release › Dockerhub › Fix Permissions + # # + + - name: '#️⃣ Manage Permissions' + id: task_release_dh_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # # Release › Dockerhub › QEMU › Arm64 # # - - name: "⚙️ Set up QEMU" + - name: '⚙️ Set up QEMU' id: task_release_dh_qemu uses: docker/setup-qemu-action@v3 @@ -259,18 +283,18 @@ jobs: # Release › Dockerhub › Setup BuildX › Arm64 # # - - name: "⚙️ Setup Buildx" + - name: '⚙️ Setup Buildx' id: task_release_dh_buildx uses: docker/setup-buildx-action@v3 with: version: latest - driver-opts: 'image=moby/buildkit:v0.10.5' + driver-opts: 'image=moby/buildkit:latest' # # # Release › Dockerhub › Registry Login › Arm64 # # - - name: "⚙️ Login to Dockerhub" + - name: '⚙️ Login to Dockerhub' id: task_release_dh_registry uses: docker/login-action@v3 with: @@ -281,14 +305,13 @@ jobs: # Release › Dockerhub › Meta › Arm64 # # - - name: "🔨 Dockerhub: Meta - Arm64" + - name: '🔨 Dockerhub: Meta - Arm64' id: task_release_dh_meta uses: docker/metadata-action@v5 with: images: | ${{ env.IMAGE_AUTHOR }}/${{ env.IMAGE_NAME }} tags: | - # latest no type=raw,value=latest,enable=false @@ -304,17 +327,18 @@ jobs: latest=false # # - # Release › Dockerhub › Debug › Arm64 + # Release › Dockerhub › Checkpoint › Arm64 # # - - name: "🪪 Debug › Print" - id: task_release_dh_print + - name: '⚠️ Checkpoint' + id: task_release_dh_checkpoint run: | - echo "registry ............. Dockerhub" + echo "registry ............. Github" echo "github.actor.......... ${{ github.actor }}" echo "github.ref ........... ${{ github.ref }}" + echo "github.ref_name ...... ${{ github.ref_name }}" echo "github.event_name .... ${{ github.event_name }}" - echo "inputs.PRINT_ONLY .... ${{ inputs.PRINT_ONLY }}" + echo "inputs.DRY_RUN ....... ${{ inputs.DRY_RUN }}" echo "env.AUTHOR ........... ${{ env.IMAGE_AUTHOR }}" echo "tags ................. ${{ steps.task_release_dh_meta.outputs.tags }}" echo "labels ............... ${{ steps.task_release_dh_meta.outputs.labels }}" @@ -323,10 +347,10 @@ jobs: # Release › Dockerhub › Build and Push › Arm64 # # - - name: "📦 Build & Push (linux/arm64)" + - name: '📦 Build & Push (linux/arm64)' id: task_release_dh_push uses: docker/build-push-action@v6 - if: ( github.event_name == 'workflow_dispatch' && inputs.PRINT_ONLY == false ) || ( github.event_name == 'push' ) + if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: context: . file: Dockerfile.aarch64 @@ -339,7 +363,7 @@ jobs: # Job › Docker Release › Dockerhub › Amd64 # # - job-docker-release-github-amd64: + job-docker-release-dockerhub-amd64: name: >- 📦 Release › Dockerhub › Amd64 runs-on: ubuntu-latest @@ -348,14 +372,14 @@ jobs: packages: write attestations: write id-token: write - needs: [ job-docker-release-tags-create, job-docker-release-github-arm64 ] + needs: [ job-docker-release-tags-create, job-docker-release-dockerhub-arm64 ] steps: # # # Release › Dockerhub › Start › Amd64 # # - - name: "✅ Start" + - name: '🏳️ Start' id: task_release_dh_start run: | echo "Starting Dockerhub docker release" @@ -364,34 +388,54 @@ jobs: # Release › Dockerhub › Checkout › Amd64 # # - - name: "☑️ Checkout" + - name: '✅ Checkout' id: task_release_dh_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # - # Release › Dockerhub › Check Permissions + # Release › Dockerhub › Install Dependencies + # # + + - name: '📦 Install Dependencies' + id: task_release_dh_dependencies + run: + sudo apt-get install -qq dos2unix + + # # + # Release › Dockerhub › Execute dos2unix + # # + + - name: '🔐 Apply dos2unix' + id: task_release_dh_dos2unix + run: | + find ./ \( -path "./.git" -o -path "./docs" -o -path "./.github" -o -path "*.png" -o -path "*.jpg" \) -prune -o -name '*' -print | xargs dos2unix -- + + # # + # Release › Dockerhub › Fix Permissions # # - - name: 'Check Permissions' + - name: '#️⃣ Manage Permissions' + id: task_release_dh_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # # Release › Dockerhub › QEMU › Amd64 # # - - name: "⚙️ Set up QEMU" + - name: '⚙️ Set up QEMU' id: task_release_dh_qemu uses: docker/setup-qemu-action@v3 @@ -399,18 +443,18 @@ jobs: # Release › Dockerhub › Setup BuildX › Amd64 # # - - name: "⚙️ Setup Buildx" + - name: '⚙️ Setup Buildx' id: task_release_dh_buildx uses: docker/setup-buildx-action@v3 with: version: latest - driver-opts: 'image=moby/buildkit:v0.10.5' + driver-opts: 'image=moby/buildkit:latest' # # # Release › Dockerhub › Registry Login › Amd64 # # - - name: "⚙️ Login to Dockerhub" + - name: '⚙️ Login to Dockerhub' id: task_release_dh_registry uses: docker/login-action@v3 with: @@ -421,7 +465,7 @@ jobs: # Release › Dockerhub › Meta › Amd64 # # - - name: "🔨 Dockerhub: Meta - Amd64" + - name: '🔨 Dockerhub: Meta - Amd64' id: task_release_dh_meta uses: docker/metadata-action@v5 with: @@ -446,17 +490,18 @@ jobs: latest=${{ !inputs.DEV_RELEASE }} # # - # Release › Dockerhub › Debug › Amd64 + # Release › Dockerhub › Checkpoint › Amd64 # # - - name: "🪪 Debug › Print" - id: task_release_dh_print + - name: '⚠️ Checkpoint' + id: task_release_dh_checkpoint run: | - echo "registry ............. Dockerhub" + echo "registry ............. Github" echo "github.actor.......... ${{ github.actor }}" echo "github.ref ........... ${{ github.ref }}" + echo "github.ref_name ...... ${{ github.ref_name }}" echo "github.event_name .... ${{ github.event_name }}" - echo "inputs.PRINT_ONLY .... ${{ inputs.PRINT_ONLY }}" + echo "inputs.DRY_RUN ....... ${{ inputs.DRY_RUN }}" echo "env.AUTHOR ........... ${{ env.IMAGE_AUTHOR }}" echo "tags ................. ${{ steps.task_release_dh_meta.outputs.tags }}" echo "labels ............... ${{ steps.task_release_dh_meta.outputs.labels }}" @@ -465,10 +510,10 @@ jobs: # Release › Dockerhub › Build and Push › Amd64 # # - - name: "📦 Build & Push (linux/amd64)" + - name: '📦 Build & Push (linux/amd64)' id: task_release_dh_push uses: docker/build-push-action@v6 - if: ( github.event_name == 'workflow_dispatch' && inputs.PRINT_ONLY == false ) || ( github.event_name == 'push' ) + if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: context: . file: Dockerfile diff --git a/.github/workflows/deploy-docker-github-sync.yml b/.github/workflows/deploy-docker-github-sync.yml index 9ace2873c..73f03d498 100644 --- a/.github/workflows/deploy-docker-github-sync.yml +++ b/.github/workflows/deploy-docker-github-sync.yml @@ -43,10 +43,10 @@ on: # # BRANCH_SRC: - description: '📂 Repo › Source' - required: true - default: 'docker/keeweb' - type: string + description: '↪️ Branch › Source' + required: true + default: 'docker/keeweb' + type: string # # # Folder › Destination @@ -128,7 +128,7 @@ jobs: # Sync › Start # # - - name: "✅ Start" + - name: '🏳️ Start' id: task_sync_start run: | echo "Starting branch sync" @@ -137,7 +137,7 @@ jobs: # Sync › Checkout # # - - name: "☑️ Checkout" + - name: '✅ Checkout' id: task_sync_checkout uses: actions/checkout@v4 with: @@ -147,7 +147,7 @@ jobs: # Sync › Install Dependencies # # - - name: "📦 Install Dependencies" + - name: '📦 Install Dependencies' id: task_sync_dependencies run: sudo apt-get install -qq dos2unix @@ -158,7 +158,7 @@ jobs: # attempts to get the name of the default branch so that we don't have to manually changes # # - - name: "🔍 Find Default Branch Name" + - name: '🔍 Find Default Branch Name' id: task_sync_branch_default_get run: echo "BRANCH_MAIN=${{ github.event.repository.default_branch }}" >> $GITHUB_ENV @@ -183,7 +183,7 @@ jobs: - name: '⚠️ Env Variable › Confirm' id: task_sync_vars_confirm run: | - echo "BRANCH_DEST is now ${{ env.BRANCH_DEST }}" + echo "✅✅✅ BRANCH_DEST is now ${{ env.BRANCH_DEST }} ✅✅✅" # # # Sync › Checkpoint › 1 @@ -248,12 +248,13 @@ jobs: find ${{ env.FOLDER_DEST }} -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ${{ env.FOLDER_DEST }} -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # @@ -263,7 +264,9 @@ jobs: - name: '🔐 Apply dos2unix' id: task_sync_fix_dos2unix run: | - find ${{ env.FOLDER_DEST }} -type f | grep -Ev '.git|.github|*.jpg|*.jpeg|*.png' | xargs dos2unix -- + echo "⚠️⚠️⚠️ Running DOS2UNIX ⚠️⚠️⚠️" + find ${{ env.FOLDER_DEST }} \( -path "./.git" -o -path "./docs" -o -path "./.github" -o -path "*.png" -o -path "*.jpg" \) -prune -o -name '*' -print | xargs dos2unix -- + echo "✅✅✅ Completed DOS2UNIX ✅✅✅" # # # Sync › Show Differences diff --git a/.github/workflows/deploy-docker-github.yml b/.github/workflows/deploy-docker-github.yml index 997d7b1e7..1ff1b0c8e 100644 --- a/.github/workflows/deploy-docker-github.yml +++ b/.github/workflows/deploy-docker-github.yml @@ -34,7 +34,7 @@ on: # # IMAGE_NAME: - description: "📦 Image Name" + description: '📦 Image Name' required: true default: 'keeweb' type: string @@ -47,7 +47,7 @@ on: # # IMAGE_AUTHOR: - description: "🪪 Image Author" + description: '🪪 Image Author' required: true default: 'keeweb' type: string @@ -59,7 +59,7 @@ on: # # IMAGE_VERSION: - description: "🏷️ Image Version" + description: '🏷️ Image Version' required: true default: '1.19.0' type: string @@ -71,32 +71,32 @@ on: # # IMAGE_GHCR_USERNAME: - description: "🪪 ghcr.io Username" - required: true - default: 'keeweb' - type: string + description: '🪪 ghcr.io Username' + required: true + default: 'keeweb' + type: string # # - # true: runs all actions, even ones not scheduled - # false: only scheduled tasks will run + # true no changes to the repo will be made + # false workflow will behave normally, and push any changes detected to the files # # - PRINT_ONLY: - description: "📑 Print Debugs Only" - required: true - default: false - type: boolean + DRY_RUN: + description: '🐛 Dry Run (Debug)' + required: true + default: false + type: boolean # # - # ENABLE: released version will be marked as beta and receive beta tag for docker - # DISABLE: release version will be marked as stable / normal release + # true released version will be marked as a development build and will have the v1.x.x-development tag instead of -latest + # false release version will be marked with -latest docker tag # # DEV_RELEASE: - description: "🧪 Development Release" - required: true - default: false - type: boolean + description: '🧪 Development Release' + required: true + default: false + type: boolean # # # Trigger › Push @@ -134,7 +134,7 @@ jobs: job-docker-release-tags-create: name: >- - 📦 Release › Create Tag + 📦 Release › Create Tag runs-on: ubuntu-latest permissions: contents: write @@ -147,8 +147,8 @@ jobs: # Release › Tags › Start # # - - name: "✅ Start" - id: task_ctags_start + - name: '🏳️ Start' + id: task_release_tags_start run: | echo "Creating Tag" @@ -156,27 +156,29 @@ jobs: # Release › Tags › Checkout # # - - name: "☑️ Checkout" - id: task_ctags_checkout + - name: '✅ Checkout' + id: task_release_tags_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # - # Release › Tags › Check Permissions + # Release › Tags › Fix Permissions # # - - name: 'Check Permissions' + - name: '#️⃣ Manage Permissions' + id: task_release_tags_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # @@ -186,8 +188,8 @@ jobs: # # - uses: rickstaa/action-create-tag@v1 - id: task_ctags_create - if: ( github.event_name != 'workflow_dispatch' && inputs.PRINT_ONLY == false ) + id: task_release_tags_create + if: ( github.event_name != 'workflow_dispatch' && inputs.DRY_RUN == false ) with: tag: "${{ env.IMAGE_VERSION }}" tag_exists_error: false @@ -201,7 +203,7 @@ jobs: job-docker-release-github-arm64: name: >- - 📦 Release › Github › Arm64 + 📦 Release › Github › Arm64 runs-on: ubuntu-latest needs: [ job-docker-release-tags-create ] permissions: @@ -215,7 +217,7 @@ jobs: # Release › Github › Start › Arm64 # # - - name: "✅ Start" + - name: '🏳️ Start' id: task_release_gh_start run: | echo "Starting Github Docker arm64" @@ -224,34 +226,56 @@ jobs: # Release › Github › Checkout › Arm64 # # - - name: "☑️ Checkout" + - name: '✅ Checkout' id: task_release_gh_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # - # Release › Github › Check Permissions + # Release › Github › Install Dependencies + # # + + - name: '📦 Install Dependencies' + id: task_release_gh_dependencies + run: + sudo apt-get install -qq dos2unix + + # # + # Release › Github › Execute dos2unix # # - - name: 'Check Permissions' + - name: '🔐 Apply dos2unix' + id: task_release_gh_dos2unix + run: | + echo "⚠️⚠️⚠️ Running DOS2UNIX ⚠️⚠️⚠️" + find ./ \( -path "./.git" -o -path "./docs" -o -path "./.github" -o -path "*.png" -o -path "*.jpg" \) -prune -o -name '*' -print | xargs dos2unix -- + echo "✅✅✅ Completed DOS2UNIX ✅✅✅" + + # # + # Release › Github › Fix Permissions + # # + + - name: '#️⃣ Manage Permissions' + id: task_release_gh_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # # Release › Github › QEMU › Arm64 # # - - name: "⚙️ Set up QEMU" + - name: '⚙️ Set up QEMU' id: task_release_gh_qemu uses: docker/setup-qemu-action@v3 @@ -259,18 +283,18 @@ jobs: # Release › Github › Setup BuildX › Arm64 # # - - name: "⚙️ Setup Buildx" + - name: '⚙️ Setup Buildx' id: task_release_gh_buildx uses: docker/setup-buildx-action@v3 with: version: latest - driver-opts: 'image=moby/buildkit:v0.10.5' + driver-opts: 'image=moby/buildkit:latest' # # # Release › Github › Registry Login › Arm64 # # - - name: "⚙️ Login to Github" + - name: '⚙️ Login to Github' id: task_release_gh_registry uses: docker/login-action@v3 with: @@ -282,7 +306,7 @@ jobs: # Release › Github › Meta › Arm64 # # - - name: "🔨 Github: Meta - Arm64" + - name: '🔨 Github: Meta - Arm64' id: task_release_gh_meta uses: docker/metadata-action@v5 with: @@ -301,17 +325,18 @@ jobs: latest=false # # - # Release › Github › Debug › Arm64 + # Release › Github › Checkpoint › Arm64 # # - - name: "🪪 Debug › Print" - id: task_release_gh_print + - name: '⚠️ Checkpoint' + id: task_release_gh_checkpoint run: | echo "registry ............. Github" echo "github.actor.......... ${{ github.actor }}" echo "github.ref ........... ${{ github.ref }}" + echo "github.ref_name ...... ${{ github.ref_name }}" echo "github.event_name .... ${{ github.event_name }}" - echo "inputs.PRINT_ONLY .... ${{ inputs.PRINT_ONLY }}" + echo "inputs.DRY_RUN ....... ${{ inputs.DRY_RUN }}" echo "env.AUTHOR ........... ${{ env.IMAGE_AUTHOR }}" echo "tags ................. ${{ steps.task_release_gh_meta.outputs.tags }}" echo "labels ............... ${{ steps.task_release_gh_meta.outputs.labels }}" @@ -320,10 +345,10 @@ jobs: # Release › Github › Build and Push › Arm64 # # - - name: "📦 Build & Push (linux/arm64)" + - name: '📦 Build & Push (linux/arm64)' id: task_release_gh_push uses: docker/build-push-action@v6 - if: ( github.event_name == 'workflow_dispatch' && inputs.PRINT_ONLY == false ) || ( github.event_name == 'push' ) + if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: context: . file: Dockerfile.aarch64 @@ -338,7 +363,7 @@ jobs: job-docker-release-github-amd64: name: >- - 📦 Release › Github › Amd64 + 📦 Release › Github › Amd64 runs-on: ubuntu-latest permissions: contents: write @@ -352,7 +377,7 @@ jobs: # Release › Github › Start › Amd64 # # - - name: "✅ Start" + - name: '🏳️ Start' id: task_release_gh_start run: | echo "Starting Github docker release" @@ -361,34 +386,54 @@ jobs: # Release › Github › Checkout › Amd64 # # - - name: "☑️ Checkout" + - name: '✅ Checkout' id: task_release_gh_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # - # Release › Github › Check Permissions + # Release › Github › Install Dependencies + # # + + - name: '📦 Install Dependencies' + id: task_release_gh_dependencies + run: + sudo apt-get install -qq dos2unix + + # # + # Release › Github › Execute dos2unix + # # + + - name: '🔐 Apply dos2unix' + id: task_release_gh_dos2unix + run: | + find ./ \( -path "./.git" -o -path "./docs" -o -path "./.github" -o -path "*.png" -o -path "*.jpg" \) -prune -o -name '*' -print | xargs dos2unix -- + + # # + # Release › Github › Fix Permissions # # - - name: 'Check Permissions' + - name: '#️⃣ Manage Permissions' + id: task_release_gh_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then + echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else - echo "**** Executable permissions are OK ****" + echo "✅✅✅ Executable permissions are OK ✅✅✅" fi # # # Release › Github › QEMU › Amd64 # # - - name: "⚙️ Set up QEMU" + - name: '⚙️ Set up QEMU' id: task_release_gh_qemu uses: docker/setup-qemu-action@v3 @@ -396,18 +441,18 @@ jobs: # Release › Github › Setup BuildX › Amd64 # # - - name: "⚙️ Setup Buildx" + - name: '⚙️ Setup Buildx' id: task_release_gh_buildx uses: docker/setup-buildx-action@v3 with: version: latest - driver-opts: 'image=moby/buildkit:v0.10.5' + driver-opts: 'image=moby/buildkit:latest' # # # Release › Github › Registry Login › Amd64 # # - - name: "⚙️ Login to Github" + - name: '⚙️ Login to Github' id: task_release_gh_registry uses: docker/login-action@v3 with: @@ -419,7 +464,7 @@ jobs: # Release › Github › Meta › Amd64 # # - - name: "🔨 Github: Meta - Amd64" + - name: '🔨 Github: Meta - Amd64' id: task_release_gh_meta uses: docker/metadata-action@v5 with: @@ -440,17 +485,18 @@ jobs: latest=${{ !inputs.DEV_RELEASE }} # # - # Release › Github › Debug › Amd64 + # Release › Github › Checkpoint › Amd64 # # - - name: "🪪 Debug › Print" - id: task_release_gh_print + - name: '⚠️ Checkpoint' + id: task_release_gh_checkpoint run: | echo "registry ............. Github" echo "github.actor.......... ${{ github.actor }}" echo "github.ref ........... ${{ github.ref }}" + echo "github.ref_name ...... ${{ github.ref_name }}" echo "github.event_name .... ${{ github.event_name }}" - echo "inputs.PRINT_ONLY .... ${{ inputs.PRINT_ONLY }}" + echo "inputs.DRY_RUN ....... ${{ inputs.DRY_RUN }}" echo "env.AUTHOR ........... ${{ env.IMAGE_AUTHOR }}" echo "tags ................. ${{ steps.task_release_gh_meta.outputs.tags }}" echo "labels ............... ${{ steps.task_release_gh_meta.outputs.labels }}" @@ -459,10 +505,10 @@ jobs: # Release › Github › Build and Push › Amd64 # # - - name: "📦 Build & Push (linux/amd64)" + - name: '📦 Build & Push (linux/amd64)' id: task_release_gh_push uses: docker/build-push-action@v6 - if: ( github.event_name == 'workflow_dispatch' && inputs.PRINT_ONLY == false ) || ( github.event_name == 'push' ) + if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: context: . file: Dockerfile From 99d616118e25a4cee0f1eaaa2ae0344a20617e2f Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Fri, 20 Dec 2024 15:37:52 -0700 Subject: [PATCH 2/3] ci(issue-template): update issue template `bug_report` to add missing platforms was missing platforms docker, mobile, and operating systems iOS / Android --- .github/ISSUE_TEMPLATE/bug_report.yaml | 372 ++++++++++++++----------- 1 file changed, 205 insertions(+), 167 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 7c943216e..80b4a37f4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -1,169 +1,207 @@ -name: "🐛 Bug Report" +name: '🐛 Bug Report' description: Create a report to help us improve KeeWeb! -title: "🐛 Bug: " -labels: [ - "Type ◦ Bug" -] +title: '🐛 Bug: <title>' +labels: ['Type ◦ Bug'] body: - - type: markdown - attributes: - value: | - 1. Please speak `English`. - 2. Make sure you are using the latest version and take a moment to check that your issue hasn't been reported before. - 3. It's really important to provide pertinent details and logs, - incomplete details will be handled as an invalid report. - - <br /> - - - type: dropdown - id: priority-type - attributes: - label: Priority - description: | - How critical is the issue? - Do not abuse this. Issues that completely break KeeWeb would be classified as critical. - If you are requesting a new feature, then it would be low or normal. - options: - - "Low" - - "Normal" - - "High" - - "Urgent" - validations: - required: true - - - type: input - id: ver-keeweb - attributes: - label: "Version: KeeWeb" - description: | - Version of KeeWeb you are running - Version is located in Settings › Help › App Information - placeholder: "Ex: v1.18.7" - validations: - required: true - - - type: dropdown - id: build-env - attributes: - label: Environment - description: | - What environment are you running KeeWeb as? - options: - - "Web" - - "Desktop" - - - type: dropdown - id: build-os - attributes: - label: Operating System - description: | - Select which OS you are running: - options: - - "Windows" - - "Mac" - - "Linux" - - - type: dropdown - id: issue-target - attributes: - label: Range of issue - description: | - Where does this issue occur? - Before submitting your bug report, try to see if the issue also occurs on the official demo site at https://app.keeweb.info/ - options: - - "The issue occurs on my own setup AND demo site" - - "The issue only occurs on my own setup, demo site works correctly" - - - type: dropdown - id: issue-db-type - attributes: - label: Database Type - description: | - What type of database are you having this issue with? - options: - - "Issue occurs only on new databases" - - "Issue occurs only on existing databases" - - "Issue occurs on both new and existing databases" - - - type: textarea - id: logs-env - attributes: - label: Environment Copy/Paste - description: | - Copy all information from Settings › Help inside KeeWeb - render: shell - - - type: textarea - id: description - attributes: - label: Description - description: | - Please provide a description of your issue here. - validations: - required: true - - - type: textarea - id: steps-reproduce - attributes: - label: Steps To Reproduce - description: | - Describe the steps that need taken by the developer(s) to get the error / issue you're experiencing. - value: | - - - - - - - - - validations: - required: true - - - type: textarea - id: expected-behavior - attributes: - label: Expected Behavior - description: | - Describe what you expect KeeWeb to actually do if it were working properly - value: | - - - - - - - - - validations: - required: true - - - type: textarea - id: logs-console - attributes: - label: Logs - description: | - List any error messages you received in the developer console. - Developer console for **web** can be opened with **SHIFT + CTRL + I** - Open **dev tools** in your browser and attach output log from **CONSOLE** tab. If you are using a desktop app, devtools can be opened from Settings › General › Advanced. - render: shell - - - type: textarea - id: references - attributes: - label: Referenced Issues - description: | - List any existing issues this ticket may be associated with. - Structure each issue as: - - #NUMBER - - #3 - value: | - - # - - - type: textarea - id: attachment-db - attributes: - label: "Attachments: Database kdbx File" - description: | - Attach a test database below that does give you the described issue. - Ensure it has no real security information within it as it will be publicly visible to all. - - - type: textarea - id: attachment-screenshots - attributes: - label: "Attachments: Screenshots" - description: | - Please provide screenshots of any errors or the issue you're having. - Gifs are even better. + - type: markdown + attributes: + value: | + 1. Please speak `English`. + 2. Make sure you are using the latest version and take a moment to check that your issue hasn't been reported before. + 3. It's really important to provide pertinent details and logs, + incomplete details will be handled as an invalid report. + + <br /> + + - type: dropdown + id: priority-type + attributes: + label: Priority + description: | + How critical is the issue? + Do not abuse this. Issues that completely break KeeWeb would be classified as critical. + If you are requesting a new feature, then it would be **Low** + **`Required`** + options: + - 'Low' + - 'Medium' + - 'High' + - 'Urgent' + validations: + required: true + + - type: input + id: ver-keeweb + attributes: + label: 'Version: KeeWeb' + description: | + Version of KeeWeb you are running + Version is located in Settings › Help › App Information + **`Required`** + placeholder: 'Ex: v1.19.0' + validations: + required: true + + - type: input + id: ver-docker + attributes: + label: 'Version: Docker' + description: | + If you are running Keeweb on docker, provide the docker version. + Type in console `docker version` + If you are not running Keeweb on docker; **skip** + **`Not Required`** + placeholder: 'Ex: v27.2.0' + + - type: dropdown + id: host-platform + attributes: + label: Environment + description: | + How is your KeeWeb hosted? + **`Required`** + options: + - 'Application' + - 'Docker' + - 'Web' + validations: + required: true + + - type: dropdown + id: host-os + attributes: + label: Operating System (Build) + description: | + What OS is your KeeWeb running on? + This is for users hosting Keeweb but using it from elsewhere. + If you have Keeweb installed on Docker under Linux, but access it on Windows, your answer would be **Linux** + **`Required`** + options: + - 'Android' + - 'iOS' + - 'Linux' + - 'Mac' + - 'Windows' + validations: + required: true + + - type: dropdown + id: user-os + attributes: + label: Operating System (User) + description: | + What OS are you using to use KeeWeb? + If you have Keeweb installed on Docker under Linux, but access it on Windows, your answer would be **Windows** + If you are running Keeweb and using it on the same machine, the above answer and this answer would be the same. + **`Required`** + options: + - 'Android' + - 'iOS' + - 'Linux' + - 'Mac' + - 'Windows' + validations: + required: true + + - type: dropdown + id: issue-range + attributes: + label: Range of issue + description: | + Where does this issue occur? + Before submitting your bug report, try to see if the issue also occurs on the official demo site at https://app.keeweb.info/ + **`Required`** + options: + - 'Issue occurs on my own install AND demo site' + - 'Issue occurs only on my own install, demo site works correctly' + validations: + required: true + + - type: dropdown + id: issue-db-affect + attributes: + label: Database + description: | + Do different database files fix the issue? + **`Required`** + options: + - 'Issue occurs only with new databases' + - 'Issue occurs only with existing databases' + - 'Issue occurs with both new + existing databases' + validations: + required: true + + - type: textarea + id: logs-env + attributes: + label: Copy/Paste Environment Details + description: | + Copy all information from Settings › Help inside KeeWeb + **`Required`** + render: shell + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Please provide a description of your issue here. + **`Required`** + validations: + required: true + + - type: textarea + id: steps-reproduce + attributes: + label: Steps To Reproduce + description: | + Describe the steps that need taken by the developer(s) to get the error / issue you're experiencing. + **`Required`** + value: | + 1. + 2. + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: | + What do you expect KeeWeb to actually do if it were working properly + **`Required`** + value: | + - + - + validations: + required: true + + - type: textarea + id: logs-console + attributes: + label: Logs + description: | + List any error messages you receive in the developer console. Developer console for **web** can be opened with **SHIFT + CTRL + I** + Open **dev tools** in your browser and attach output log from **CONSOLE** tab. If you are using a desktop app, devtools can be opened from Settings › General › Advanced. + **`Not Required`** + render: shell + + - type: textarea + id: attachment-db + attributes: + label: 'Attachments: Database kdbx File' + description: | + Attach a test database below that does give you the described issue. + Ensure it has no real security information within it as it will be publicly visible to all. + **`Not Required`** + + - type: textarea + id: attachment-screenshots + attributes: + label: 'Attachments: Screenshots' + description: | + Please provide screenshots of any errors or the issue you're having. + Gifs are even better. + **`Not Required`** From 33f8e4863591d303cc1e83ce2226f76120957e80 Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Fri, 20 Dec 2024 15:41:12 -0700 Subject: [PATCH 3/3] ci(issue-template): merge screenshots and attachments fields into one do not need so many fields, merge attachments and screenshots into a single textarea --- .github/ISSUE_TEMPLATE/bug_report.yaml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 80b4a37f4..d19f7c168 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -90,7 +90,7 @@ body: attributes: label: Operating System (User) description: | - What OS are you using to use KeeWeb? + What OS are you accessing KeeWeb from? If you have Keeweb installed on Docker under Linux, but access it on Windows, your answer would be **Windows** If you are running Keeweb and using it on the same machine, the above answer and this answer would be the same. **`Required`** @@ -189,19 +189,11 @@ body: render: shell - type: textarea - id: attachment-db + id: attachments attributes: - label: 'Attachments: Database kdbx File' + label: 'Attachments' description: | - Attach a test database below that does give you the described issue. - Ensure it has no real security information within it as it will be publicly visible to all. - **`Not Required`** - - - type: textarea - id: attachment-screenshots - attributes: - label: 'Attachments: Screenshots' - description: | - Please provide screenshots of any errors or the issue you're having. - Gifs are even better. + Add attachments here. + Attach a test database below if your issue is with a specific database. Ensure it has no real security information within it as it will be publicly visible to all. + Provide screenshots of any errors or the issue you're having. Gifs are even better. **`Not Required`**