diff --git a/.github/workflows/build_container_images.yml b/.github/workflows/build_container_images.yml index 0e231ee..3f79f5b 100644 --- a/.github/workflows/build_container_images.yml +++ b/.github/workflows/build_container_images.yml @@ -4,161 +4,32 @@ on: branches: [ main ] paths-ignore: - '**/README.md' - - '**/Dockerfile' - - '**/save_docker_pull_count.yml' - - '**/build_test_images.yml' - - '**/Test_Git_Actions-Dockerfile' - pull_request: - branches: [ main ] workflow_dispatch: inputs: tachidesk_release_type: - required: false - default: 'stable' - description: 'Tachidesk Release Type' - publish_images_manually: - required: false - default: 'no' - description: 'Force Publish Images Manually' + required: true + default: 'preview' + description: 'Suwayomi Release Type' + type: choice + options: + - stable + - preview env: - build_repo_docker: 'tachidesk' - build_base_image_temurin: 'eclipse-temurin:11-jre-jammy' - build_base_image_temurin_platform: 'linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x' - build_base_image_temurin_platform_testing: 'linux/amd64' - build_base_image_alpine: 'alpine:3.16' - build_base_image_alpine_platform: 'linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x' - build_base_image_alpine_platform_testing: 'linux/amd64' - startup_script_url: 'https://raw.githubusercontent.com/${{ github.repository }}/main/scripts/startup_script.sh' - tachidesk_webui_stable_url: 'https://api.github.com/repos/suwayomi/Tachidesk-Server/releases/latest' - tachidesk_webui_preview_url: 'https://api.github.com/repos/suwayomi/Tachidesk-Server-preview/releases/latest' - -jobs: - check_workflow: - runs-on: ubuntu-latest - outputs: - enable_discord_hook: ${{ steps.run_job_steps.outputs.enable_discord_hook }} - enable_build_publish: ${{ steps.run_job_steps.outputs.enable_discord_hook }} - run_check_stable: ${{ steps.run_job_steps.outputs.run_check_stable }} - run_check_preview: ${{ steps.run_job_steps.outputs.run_check_preview }} - run_build_stable: ${{ steps.run_job_steps.outputs.run_build_stable }} - run_build_preview: ${{ steps.run_job_steps.outputs.run_build_preview }} + server_repo: ${{ inputs.tachidesk_release_type == 'stable' && 'Tachidesk-Server' || 'Tachidesk-Server-prevew' }} - if: "!startsWith(github.event.head_commit.message, '[SKIP CI]')" - steps: - - name: run job and steps check - id: run_job_steps - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - if [[ "${{ github.event.inputs.tachidesk_release_type }}" == "stable" ]]; then - if [[ "${{ github.actor }}" == "AriaMoradi" ]]; then - echo "run_check_stable=true" >> $GITHUB_OUTPUT - echo "run_build_stable=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=true" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" == "arbuilder" && "${{ github.repository_owner }}" == "arbuilder" ]]; then - echo "run_check_stable=true" >> $GITHUB_OUTPUT - echo "run_build_stable=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=true" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" == "arbuilder" && "${{ github.repository_owner }}" == "Suwayomi" && "${{ github.event.inputs.publish_images_manually }}" == "yes" ]]; then - echo "run_check_stable=true" >> $GITHUB_OUTPUT - echo "run_build_stable=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=true" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" == "arbuilder" && "${{ github.repository_owner }}" == "Suwayomi" && "${{ github.event.inputs.publish_images_manually }}" == "no" ]]; then - echo "run_check_stable=true" >> $GITHUB_OUTPUT - echo "run_build_stable=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=false" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" != "arbuilder" && "${{ github.event.inputs.publish_images_manually }}" == "yes" ]]; then - echo "run_check_stable=true" >> $GITHUB_OUTPUT - echo "run_build_stable=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - else - echo "run_check_stable=false" >> $GITHUB_OUTPUT - echo "run_build_stable=false" >> $GITHUB_OUTPUT - echo "enable_build_publish=false" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - fi - fi - if [[ "${{ github.event.inputs.tachidesk_release_type }}" == "preview" ]]; then - if [[ "${{ github.actor }}" == "AriaMoradi" ]]; then - echo "run_check_preview=true" >> $GITHUB_OUTPUT - echo "run_build_preview=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=true" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" == "arbuilder" && "${{ github.repository_owner }}" == "arbuilder" ]]; then - echo "run_check_preview=true" >> $GITHUB_OUTPUT - echo "run_build_preview=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=true" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" == "arbuilder" && "${{ github.repository_owner }}" == "Suwayomi" && "${{ github.event.inputs.publish_images_manually }}" == "yes" ]]; then - echo "run_check_preview=true" >> $GITHUB_OUTPUT - echo "run_build_preview=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=true" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" == "arbuilder" && "${{ github.repository_owner }}" == "Suwayomi" && "${{ github.event.inputs.publish_images_manually }}" == "no" ]]; then - echo "run_check_preview=true" >> $GITHUB_OUTPUT - echo "run_build_preview=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=false" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - elif [[ "${{ github.actor }}" != "arbuilder" && "${{ github.event.inputs.publish_images_manually }}" == "yes" ]]; then - echo "run_check_preview=true" >> $GITHUB_OUTPUT - echo "run_build_preview=true" >> $GITHUB_OUTPUT - echo "enable_build_publish=true" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - else - echo "run_check_preview=false" >> $GITHUB_OUTPUT - echo "run_build_preview=false" >> $GITHUB_OUTPUT - echo "enable_build_publish=false" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - fi - fi - elif [[ "${{ github.event_name }}" == "pull_request" || "${{ github.event_name }}" == "push" ]]; then - echo "run_check_stable=true" >> $GITHUB_OUTPUT - echo "run_build_stable=false" >> $GITHUB_OUTPUT - echo "run_check_preview=false" >> $GITHUB_OUTPUT - echo "run_build_preview=false" >> $GITHUB_OUTPUT - echo "enable_build_publish=false" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - else - echo "run_check_stable=false" >> $GITHUB_OUTPUT - echo "run_build_stable=false" >> $GITHUB_OUTPUT - echo "run_check_preview=false" >> $GITHUB_OUTPUT - echo "run_build_preview=false" >> $GITHUB_OUTPUT - echo "enable_build_publish=false" >> $GITHUB_OUTPUT - echo "enable_discord_hook=false" >> $GITHUB_OUTPUT - fi - - check_stable: - needs: check_workflow +jobs: + build_stable: runs-on: ubuntu-latest - outputs: - new_release_check: ${{ steps.release_version_check.outputs.new_release_check }} - release_url: ${{ steps.get_latest_release_metadata.outputs.release_url }} - release_commit: ${{ steps.get_latest_release_metadata.outputs.release_commit }} - release_tag: ${{ steps.get_latest_release_metadata.outputs.release_tag }} - release_filename: ${{ steps.get_latest_release_metadata.outputs.release_filename }} - release_version: ${{ steps.get_latest_release_metadata.outputs.release_version }} - release_var: ${{ steps.get_latest_release_metadata.outputs.release_var }} - tachidesk_docker_git_commit: ${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - build_date: ${{ steps.get_latest_release_metadata.outputs.build_date }} - repository_owner_lower: ${{ steps.get_latest_release_metadata.outputs.repository_owner_lower }} - run_build_stable : ${{ needs.check_workflow.outputs.run_build_stable }} - enable_discord_hook: ${{ needs.check_workflow.outputs.enable_discord_hook }} - enable_build_publish: ${{ needs.check_workflow.outputs.enable_build_publish }} - - if: needs.check_workflow.outputs.run_check_stable == 'true' - steps: + + steps: - name: Checkout uses: actions/checkout@v3 with: ref: main path: main fetch-depth: 0 - + - name: Set up QEMU uses: docker/setup-qemu-action@v2 @@ -166,500 +37,92 @@ jobs: id: buildx uses: docker/setup-buildx-action@v2 + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: get latest release metadata id: get_latest_release_metadata run: | cd main - release_url=$(curl -s ${{ env.tachidesk_webui_stable_url }} | egrep -o "https://.*./releases/download.*.Tachidesk-Server.*.jar") - release_tag=$(curl -s ${{ env.tachidesk_webui_stable_url }} | egrep -o "tag_name.*.v[0-9]+.[0-9]+.[0-9]+" | egrep -o "v[0-9]+.[0-9]+.[0-9]+") + latest_release_json=$(curl -s https://api.github.com/repos/suwayomi/${{ env.server_repo }}/releases/latest) + release_url=$(echo $latest_release_json | egrep -o "https://.*./releases/download.*.Tachidesk-Server.*.jar") + release_tag=$(echo $latest_release_json | egrep -o "tag_name.*.v[0-9]+.[0-9]+.[0-9]+" | egrep -o "v[0-9]+.[0-9]+.[0-9]+") release_var=$(echo $release_url | egrep -o "Tachidesk-Server-$release_tag-r[0-9]+.jar" | egrep -o "$release_tag-r[0-9]+") release_commit=$(echo $release_var | cut -f2 -d"r") release_filename=Tachidesk-Server-${release_var}.jar release_version=$(echo $release_tag | cut -c2-) + tachidesk_docker_git_commit=$(git rev-list --count HEAD) + build_date=$(date "+%F") echo "release_url=$release_url" >> $GITHUB_OUTPUT - echo "release_commit=$release_commit" >> $GITHUB_OUTPUT echo "release_tag=$release_tag" >> $GITHUB_OUTPUT + echo "release_var=$release_var" >> $GITHUB_OUTPUT + echo "release_commit=$release_commit" >> $GITHUB_OUTPUT echo "release_filename=$release_filename" >> $GITHUB_OUTPUT echo "release_version=$release_version" >> $GITHUB_OUTPUT - echo "release_var=$release_var" >> $GITHUB_OUTPUT - tachidesk_docker_git_commit=$(git rev-list --count HEAD) echo "tachidesk_docker_git_commit=$tachidesk_docker_git_commit" >> $GITHUB_OUTPUT - build_date=$(date "+%F") echo "build_date=$build_date" >> $GITHUB_OUTPUT - echo "repository_owner_lower=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT - - name: Build and save stable ubuntu + - name: Build container image id: docker_build_release_ubuntu uses: docker/build-push-action@v3 with: file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_temurin_platform_testing }} + platforms: linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x + push: true build-args: | - BASE_IMAGE=${{ env.build_base_image_temurin }} BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} - IMAGE_TYPE=stable-ubuntu TACHIDESK_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }} TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} tags: | - test-image:stable - outputs: type=docker,dest=/tmp/test_image_stable.tar - - - name: Docker Run Test Stable Ubuntu Image - id: docker_run_test_image_stable - run: | - docker load --input /tmp/test_image_stable.tar - mkdir -p /home/runner/work/_temp/tachidesk - chmod -R 777 /home/runner/work/_temp/tachidesk - docker run --rm -d -p 127.0.0.1:4568:4567 -v /home/runner/work/_temp/tachidesk:/home/suwayomi/.local/share/Tachidesk --name=test_image_stable test-image:stable - sleep 15 - cat /home/runner/work/_temp/tachidesk/logfile.log - curl -s 127.0.0.1:4568/api/v1/settings/about/ && val=$(curl -s 127.0.0.1:4568/api/v1/settings/about/ | grep -o "Tachidesk" | sort --unique) - if [[ $val == "Tachidesk" ]]; then - echo "" - echo "Tachidesk stable ubuntu run successfully" - echo "value=true" >> $GITHUB_OUTPUT - docker stop test_image_stable - else - echo "" - echo "Tachidesk stable ubuntu run Failed" - echo "value=false" >> $GITHUB_OUTPUT - if [[ ${{ needs.check_workflow.outputs.enable_discord_hook }} == 'true' ]]; then - curl \ - -F 'payload_json={"username": "Github", "content": "<@255018340244914177>\n<@785012853178499073>\nDocker Stable Ubuntu Image Dry Run Failed Version - ${{ steps.get_latest_release_metadata.outputs.release_tag }}"}' \ - -F "file1=@/home/runner/work/_temp/tachidesk/logfile.log" \ - "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" - fi - exit 1 - fi - - - name: Build and save stable alpine - id: docker_build_release_alpine - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_alpine_platform_testing }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_alpine }} - BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} - IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} - IMAGE_TYPE=stable-alpine - TACHIDESK_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} - TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - tags: | - test-image:stable-alpine - outputs: type=docker,dest=/tmp/test_image_stable_alpine.tar - - - name: Docker Run Test Stable Alpine Image - id: docker_run_test_image_stable_alpine - run: | - docker load --input /tmp/test_image_stable_alpine.tar - mkdir -p /home/runner/work/_temp/tachidesk_alpine - chmod -R 777 /home/runner/work/_temp/tachidesk_alpine - docker run --rm -d -p 127.0.0.1:4568:4567 -v /home/runner/work/_temp/tachidesk_alpine:/home/suwayomi/.local/share/Tachidesk --name=test_image_stable_alpine test-image:stable-alpine - sleep 15 - cat /home/runner/work/_temp/tachidesk_alpine/logfile.log - curl -s 127.0.0.1:4568/api/v1/settings/about/ && val=$(curl -s 127.0.0.1:4568/api/v1/settings/about/ | grep -o "Tachidesk" | sort --unique) - if [[ $val == "Tachidesk" ]]; then - echo "" - echo "Tachidesk stable alpine run successfully" - echo "value=true" >> $GITHUB_OUTPUT - docker stop test_image_stable_alpine - else - echo "" - echo "Tachidesk stable alpine run Failed" - echo "value=false" >> $GITHUB_OUTPUT - if [[ ${{ needs.check_workflow.outputs.enable_discord_hook }} == 'true' ]]; then - curl \ - -F 'payload_json={"username": "Github", "content": "<@255018340244914177>\n<@785012853178499073>\nDocker Stable Alpine Image Dry Run Failed Version - ${{ steps.get_latest_release_metadata.outputs.release_tag }}"}' \ - -F "file1=@/home/runner/work/_temp/tachidesk_alpine/logfile.log" \ - "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" - fi - exit 1 - fi - - - name: Delete docker files - run: | - rm -f /tmp/test_image_stable.tar - rm -f /tmp/test_image_stable_alpine.tar - #rm -rf /home/runner/work/_temp/tachidesk - #rm -rf /home/runner/work/_temp/tachidesk_alpine - - - build_stable: - needs: check_stable - runs-on: ubuntu-latest - - if: needs.check_stable.outputs.run_build_stable == 'true' - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: main - path: main - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push stable ubuntu - id: docker_build_release_ubuntu - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_temurin_platform }} - push: ${{ needs.check_stable.outputs.enable_build_publish == 'true' }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_temurin }} - BUILD_DATE=${{ needs.check_stable.outputs.build_date }} - IMAGE_VERSION=${{ needs.check_stable.outputs.release_version }} - IMAGE_TYPE=stable-ubuntu - TACHIDESK_GIT_COMMIT=${{ needs.check_stable.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ needs.check_stable.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ needs.check_stable.outputs.release_url }} - TACHIDESK_FILENAME=${{ needs.check_stable.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ needs.check_stable.outputs.tachidesk_docker_git_commit }} - IMAGE_OWNER=${{ needs.check_stable.outputs.repository_owner_lower }} - tags: | - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:latest - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:stable - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:${{ needs.check_stable.outputs.release_tag }} - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:latest-ubuntu - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:stable-ubuntu - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:${{ needs.check_stable.outputs.release_tag }}-ubuntu + ghcr.io/suwayomi/tachidesk:latest + ghcr.io/suwayomi/tachidesk:${{ inputs.tachidesk_release_type }} + ghcr.io/suwayomi/tachidesk:${{ inputs.tachidesk_release_type == 'stable' && steps.get_latest_release_metadata.outputs.release_tag || steps.get_latest_release_metadata.outputs.release_var }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - - name: Build and push stable alpine - id: docker_build_release_alpine - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_alpine_platform }} - push: ${{ needs.check_stable.outputs.enable_build_publish == 'true' }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_alpine }} - BUILD_DATE=${{ needs.check_stable.outputs.build_date }} - IMAGE_VERSION=${{ needs.check_stable.outputs.release_version }} - IMAGE_TYPE=stable-alpine - TACHIDESK_GIT_COMMIT=${{ needs.check_stable.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ needs.check_stable.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ needs.check_stable.outputs.release_url }} - TACHIDESK_FILENAME=${{ needs.check_stable.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ needs.check_stable.outputs.tachidesk_docker_git_commit }} - IMAGE_OWNER=${{ needs.check_stable.outputs.repository_owner_lower }} - tags: | - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:latest-alpine - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:stable-alpine - ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:${{ needs.check_stable.outputs.release_tag }}-alpine - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - - name: save stable release - run: | - cd main - git pull - echo "`jq '.stable="${{ needs.check_stable.outputs.release_tag }}"' scripts/tachidesk_version.json`" > scripts/tachidesk_version.json - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions[bot]" - git status - if [ -n "$(git status --porcelain)" ]; then - git pull - git add . - git commit -m "Update stable release version" - git push - else - echo "No changes to commit" - fi - - - name: discord webhook stable - if: ${{ needs.check_stable.outputs.enable_discord_hook == 'true' }} - id: discord_webhook_stable - run: | - curl -H "Content-Type: application/json" -d '{"content": "Docker Stable Image Published!","embeds":[{"color":16729344,"author":{"name":"${{ github.repository_owner }}","icon_url":"https://avatars.githubusercontent.com/u/81182076","url":"https://github.com/${{ github.repository_owner }}"},"title":"Docker Stable Release","url":"https://github.com/${{ github.repository_owner }}/docker-tachidesk","fields":[{"name":"docker update","value":"docker pull ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/tachidesk","inline":false},{"name":"docker run","value":"docker run -p 4567:4567 ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/tachidesk","inline":false}],"thumbnail":{"url": "https://www.docker.com/sites/default/files/d8/2019-07/vertical-logo-monochromatic.png"},"description":"Tachidesk version - ${{ needs.check_stable.outputs.release_tag }}"}]}' "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" - - check_preview: - needs: check_workflow - runs-on: ubuntu-latest - outputs: - new_release_check: ${{ steps.release_version_check.outputs.new_release_check }} - release_url: ${{ steps.get_latest_release_metadata.outputs.release_url }} - release_commit: ${{ steps.get_latest_release_metadata.outputs.release_commit }} - release_tag: ${{ steps.get_latest_release_metadata.outputs.release_tag }} - release_filename: ${{ steps.get_latest_release_metadata.outputs.release_filename }} - release_version: ${{ steps.get_latest_release_metadata.outputs.release_version }} - release_var: ${{ steps.get_latest_release_metadata.outputs.release_var }} - tachidesk_docker_git_commit: ${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - build_date: ${{ steps.get_latest_release_metadata.outputs.build_date }} - repository_owner_lower: ${{ steps.get_latest_release_metadata.outputs.repository_owner_lower }} - run_build_preview : ${{ needs.check_workflow.outputs.run_build_preview }} - enable_discord_hook: ${{ needs.check_workflow.outputs.enable_discord_hook }} - enable_build_publish: ${{ needs.check_workflow.outputs.enable_build_publish }} - - if: needs.check_workflow.outputs.run_check_preview == 'true' - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: main - path: main - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - - - name: get latest release metadata - id: get_latest_release_metadata - run: | - cd main - release_url=$(curl -s ${{ env.tachidesk_webui_preview_url }} | egrep -o "https://.*./releases/download.*.Tachidesk-Server.*.jar") - release_tag=$(curl -s ${{ env.tachidesk_webui_preview_url }} | egrep -o "tag_name.*.v[0-9]+.[0-9]+.[0-9]+-r[0-9]+" | egrep -o "v[0-9]+.[0-9]+.[0-9]+-r[0-9]+") - release_var=$(echo $release_url | grep -o "Tachidesk-Server-$release_tag.jar" | grep -o "$release_tag" ) - release_commit=$(echo $release_var | cut -f2 -d"r") - release_filename=Tachidesk-Server-${release_var}.jar - release_version=$(echo $release_tag | cut -c2-) - echo "release_url=$release_url" >> $GITHUB_OUTPUT - echo "release_commit=$release_commit" >> $GITHUB_OUTPUT - echo "release_tag=$release_tag" >> $GITHUB_OUTPUT - echo "release_filename=$release_filename" >> $GITHUB_OUTPUT - echo "release_version=$release_version" >> $GITHUB_OUTPUT - echo "release_var=$release_var" >> $GITHUB_OUTPUT - tachidesk_docker_git_commit=$(git rev-list --count HEAD) - echo "tachidesk_docker_git_commit=$tachidesk_docker_git_commit" >> $GITHUB_OUTPUT - build_date=$(date "+%F") - echo "build_date=$build_date" >> $GITHUB_OUTPUT - echo "repository_owner_lower=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT - - - name: Build and save preview ubuntu - id: docker_build_release_ubuntu - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_temurin_platform_testing }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_temurin }} - BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} - IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} - IMAGE_TYPE=preview-ubuntu - TACHIDESK_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} - TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - tags: | - test-image:preview - outputs: type=docker,dest=/tmp/test_image_preview.tar - - - name: Docker Run Test Preview Image Ubuntu - id: docker_run_test_image_preview - run: | - docker load --input /tmp/test_image_preview.tar - mkdir -p /home/runner/work/_temp/tachidesk - chmod -R 777 /home/runner/work/_temp/tachidesk - docker run --rm -d -p 127.0.0.1:4569:4567 -v /home/runner/work/_temp/tachidesk:/home/suwayomi/.local/share/Tachidesk --name=test_image_preview test-image:preview - sleep 15 - cat /home/runner/work/_temp/tachidesk/logfile.log - curl -s 127.0.0.1:4569/api/v1/settings/about/ && val=$(curl -s 127.0.0.1:4569/api/v1/settings/about/ | grep -o "Tachidesk" | sort --unique) - if [[ $val == "Tachidesk" ]]; then - echo "" - echo "Tachidesk preview run successfully" - echo "value=true" >> $GITHUB_OUTPUT - docker stop test_image_preview - run_check="true" - else - echo "" - echo "Tachidesk preview run Failed" - echo "value=false" >> $GITHUB_OUTPUT - if [[ ${{ needs.check_workflow.outputs.enable_discord_hook }} == 'true' ]]; then - curl \ - -F 'payload_json={"username": "Github", "content": "<@255018340244914177>\n<@785012853178499073>\nDocker Preview Image Dry Run Failed Version - ${{ steps.get_latest_release_metadata.outputs.release_tag }}"}' \ - -F "file1=@/home/runner/work/_temp/tachidesk/logfile.log" \ - "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" - fi - exit 1 - fi - docker system prune -a -f --volumes - - - name: Build and save preview alpine - id: docker_build_release_alpine - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_alpine_platform_testing }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_alpine }} - BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} - IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} - IMAGE_TYPE=preview-alpine - TACHIDESK_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} - TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - tags: | - test-image:preview-alpine - outputs: type=docker,dest=/tmp/test_image_preview_alpine.tar - - - - name: Docker Run Test Preview Image Alpine - id: docker_run_test_image_preview_alpine - run: | - docker load --input /tmp/test_image_preview_alpine.tar - mkdir -p /home/runner/work/_temp/tachidesk_alpine - chmod -R 777 /home/runner/work/_temp/tachidesk_alpine - docker run --rm -d -p 127.0.0.1:4569:4567 -v /home/runner/work/_temp/tachidesk_alpine:/home/suwayomi/.local/share/Tachidesk --name=test_image_preview_alpine test-image:preview-alpine - sleep 15 - cat /home/runner/work/_temp/tachidesk_alpine/logfile.log - curl -s 127.0.0.1:4569/api/v1/settings/about/ && val=$(curl -s 127.0.0.1:4569/api/v1/settings/about/ | grep -o "Tachidesk" | sort --unique) - if [[ $val == "Tachidesk" ]]; then - echo "" - echo "Tachidesk preview alpine run successfully" - echo "value=true" >> $GITHUB_OUTPUT - docker stop test_image_preview_alpine - run_check="true" - else - echo "" - echo "Tachidesk preview alpine run Failed" - echo "value=false" >> $GITHUB_OUTPUT - if [[ ${{ needs.check_workflow.outputs.enable_discord_hook }} == 'true' ]]; then - curl \ - -F 'payload_json={"username": "Github", "content": "<@255018340244914177>\n<@785012853178499073>\nDocker Preview Alpine Image Dry Run Failed Version - ${{ steps.get_latest_release_metadata.outputs.release_tag }}"}' \ - -F "file1=@/home/runner/work/_temp/tachidesk_alpine/logfile.log" \ - "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" - fi - exit 1 - fi - docker system prune -a -f --volumes - - - name: Delete docker files - run: | - rm -f /tmp/test_image_preview.tar - rm -f /tmp/test_image_preview_alpine.tar - #rm -rf /home/runner/work/_temp/tachidesk - #rm -rf /home/runner/work/_temp/tachidesk_alpine - - build_preview: - needs: check_preview - runs-on: ubuntu-latest - - if: needs.check_preview.outputs.run_build_preview == 'true' - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: main - path: main - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push preview ubuntu - id: docker_build_release_ubuntu - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_temurin_platform }} - push: ${{ needs.check_preview.outputs.enable_build_publish == 'true' }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_temurin }} - BUILD_DATE=${{ needs.check_preview.outputs.build_date }} - IMAGE_VERSION=${{ needs.check_preview.outputs.release_version }} - IMAGE_TYPE=preview-ubuntu - TACHIDESK_GIT_COMMIT=${{ needs.check_preview.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ needs.check_preview.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ needs.check_preview.outputs.release_url }} - TACHIDESK_FILENAME=${{ needs.check_preview.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ needs.check_preview.outputs.tachidesk_docker_git_commit }} - IMAGE_OWNER=${{ needs.check_preview.outputs.repository_owner_lower }} - tags: | - ghcr.io/${{ needs.check_preview.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:preview - ghcr.io/${{ needs.check_preview.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:preview-ubuntu - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - - name: Build and push preview alpine - id: docker_build_release_alpine - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_alpine_platform }} - push: ${{ needs.check_preview.outputs.enable_build_publish == 'true' }} - build-args: | - BASE_IMAGE=${{ env.build_base_image_alpine }} - BUILD_DATE=${{ needs.check_preview.outputs.build_date }} - IMAGE_VERSION=${{ needs.check_preview.outputs.release_version }} - IMAGE_TYPE=preview-alpine - TACHIDESK_GIT_COMMIT=${{ needs.check_preview.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ needs.check_preview.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ needs.check_preview.outputs.release_url }} - TACHIDESK_FILENAME=${{ needs.check_preview.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ needs.check_preview.outputs.tachidesk_docker_git_commit }} - IMAGE_OWNER=${{ needs.check_preview.outputs.repository_owner_lower }} - tags: | - ghcr.io/${{ needs.check_preview.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:preview-alpine - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - - name: save preview release - run: | - cd main - git pull - echo "`jq '.preview="${{ needs.check_preview.outputs.release_tag }}"' scripts/tachidesk_version.json`" > scripts/tachidesk_version.json - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions[bot]" - git status - if [ -n "$(git status --porcelain)" ]; then - git pull - git add . - git commit -m "Update current preview version" - git push - else - echo "No changes to commit" - fi + # - name: Docker Run Test Stable Ubuntu Image + # id: docker_run_test_image_stable + # run: | + # docker load --input /tmp/test_image_stable.tar + # mkdir -p /home/runner/work/_temp/tachidesk + # chmod -R 777 /home/runner/work/_temp/tachidesk + # docker run --rm -d -p 127.0.0.1:4568:4567 -v /home/runner/work/_temp/tachidesk:/home/suwayomi/.local/share/Tachidesk --name=test_image_stable test-image:stable + # sleep 15 + # cat /home/runner/work/_temp/tachidesk/logfile.log + # curl -s 127.0.0.1:4568/api/v1/settings/about/ && val=$(curl -s 127.0.0.1:4568/api/v1/settings/about/ | grep -o "Tachidesk" | sort --unique) + # if [[ $val == "Tachidesk" ]]; then + # echo "" + # echo "Tachidesk stable ubuntu run successfully" + # echo "value=true" >> $GITHUB_OUTPUT + # docker stop test_image_stable + # else + # echo "" + # echo "Tachidesk stable ubuntu run Failed" + # echo "value=false" >> $GITHUB_OUTPUT + # curl \ + # -F 'payload_json={"username": "Github", "content": "<@255018340244914177>\n<@785012853178499073>\nDocker Stable Ubuntu Image Dry Run Failed Version - ${{ steps.get_latest_release_metadata.outputs.release_tag }}"}' \ + # -F "file1=@/home/runner/work/_temp/tachidesk/logfile.log" \ + # "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" + # fi + # exit 1 + # fi - name: discord webhook preview - if: ${{ needs.check_preview.outputs.enable_discord_hook == 'true' }} + if: ${{ inputs.tachidesk_release_type == 'preview' }} id: discord_webhook_preview run: | - curl -H "Content-Type: application/json" -d '{"content": "Docker Preview Image Published!","embeds":[{"color":16729344,"author":{"name":"${{ github.repository_owner }}","icon_url":"https://avatars.githubusercontent.com/u/81182076","url":"https://github.com/${{ github.repository_owner }}"},"title":"Docker Preview Release","url":"https://github.com/${{ github.repository_owner }}/docker-tachidesk","fields":[{"name":"docker update","value":"docker pull ghcr.io/${{ needs.check_preview.outputs.repository_owner_lower }}/tachidesk:preview","inline":false},{"name":"docker run","value":"docker run -p 4567:4567 ghcr.io/${{ needs.check_preview.outputs.repository_owner_lower }}/tachidesk:preview","inline":false}],"thumbnail":{"url": "https://www.docker.com/sites/default/files/d8/2019-07/vertical-logo-monochromatic.png"},"description":"Tachidesk version - ${{ needs.check_preview.outputs.release_tag }}"}]}' "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" + curl -H "Content-Type: application/json" -d '{"content": "Docker Preview Image Published!","embeds":[{"color":16729344,"author":{"name":"${{ github.repository_owner }}","icon_url":"https://avatars.githubusercontent.com/u/81182076","url":"https://github.com/${{ github.repository_owner }}"},"title":"Docker Preview Release","url":"https://github.com/${{ github.repository_owner }}/docker-tachidesk","fields":[{"name":"docker update","value":"docker pull ghcr.io/suwayomi/tachidesk:preview","inline":false},{"name":"docker run","value":"docker run -p 4567:4567 ghcr.io/suwayomi/tachidesk:preview","inline":false}],"thumbnail":{"url": "https://www.docker.com/sites/default/files/d8/2019-07/vertical-logo-monochromatic.png"},"description":"Tachidesk version - ${{ steps.get_latest_release_metadata.outputs.release_var }}"}]}' "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" + + - name: discord webhook stable + if: ${{ inputs.tachidesk_release_type == 'stable' }} + id: discord_webhook_stable + run: | + curl -H "Content-Type: application/json" -d '{"content": "Docker Stable Image Published!","embeds":[{"color":5409028,"author":{"name":"${{ github.repository_owner }}","icon_url":"https://avatars.githubusercontent.com/u/81182076","url":"https://github.com/${{ github.repository_owner }}"},"title":"Docker Stable Release","url":"https://github.com/${{ github.repository_owner }}/docker-tachidesk","fields":[{"name":"docker update","value":"docker pull ghcr.io/suwayomi/tachidesk:stable","inline":false},{"name":"docker run","value":"docker run -p 4567:4567 ghcr.io/suwayomi/tachidesk","inline":false}],"thumbnail":{"url": "https://www.docker.com/sites/default/files/d8/2019-07/vertical-logo-monochromatic.png"},"description":"Tachidesk version - ${{ steps.get_latest_release_metadata.outputs.release_tag }}"}]}' "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}" diff --git a/.github/workflows/build_test_images.yml b/.github/workflows/build_test_images.yml deleted file mode 100644 index bce8929..0000000 --- a/.github/workflows/build_test_images.yml +++ /dev/null @@ -1,122 +0,0 @@ -name: Build Test Images -on: - push: - branches: [ main ] - paths-ignore: - - '**/README.md' - - '**/Dockerfile' - - '**/save_docker_pull_count.yml' - - '**/build_container_images.yml' - - '**/Git_Actions-Dockerfile' - pull_request: - branches: [ main ] - schedule: - - cron: '10 5 * * 2,5' - workflow_dispatch: - - -env: - build_repo_docker: 'tachidesk' - build_base_image_temurin: 'eclipse-temurin:11-jre-jammy' - build_base_image_temurin_platform: 'linux/amd64' - build_base_image_alpine: 'alpine:3.16' - build_base_image_alpine_platform: 'linux/amd64' - startup_script_url: 'https://raw.githubusercontent.com/${{ github.repository }}/main/scripts/startup_script.sh' - tachidesk_webui_stable_url: 'https://api.github.com/repos/suwayomi/Tachidesk-Server/releases/latest' - -jobs: - - build_stable: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: main - path: main - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: get latest release metadata - id: get_latest_release_metadata - run: | - cd main - release_url=$(curl -s ${{ env.tachidesk_webui_stable_url }} | egrep -o "https://.*./releases/download.*.Tachidesk-Server.*.jar") - release_tag=$(curl -s ${{ env.tachidesk_webui_stable_url }} | egrep -o "tag_name.*.v[0-9]+.[0-9]+.[0-9]+" | egrep -o "v[0-9]+.[0-9]+.[0-9]+") - release_var=$(echo $release_url | egrep -o "Tachidesk-Server-$release_tag-r[0-9]+.jar" | egrep -o "$release_tag-r[0-9]+") - release_commit=$(echo $release_var | cut -f2 -d"r") - release_filename=Tachidesk-Server-${release_var}.jar - release_version=$(echo $release_tag | cut -c2-) - echo "release_url=$release_url" >> $GITHUB_OUTPUT - echo "release_commit=$release_commit" >> $GITHUB_OUTPUT - echo "release_tag=$release_tag" >> $GITHUB_OUTPUT - echo "release_filename=$release_filename" >> $GITHUB_OUTPUT - echo "release_version=$release_version" >> $GITHUB_OUTPUT - echo "release_var=$release_var" >> $GITHUB_OUTPUT - tachidesk_docker_git_commit=$(git rev-list --count HEAD) - echo "tachidesk_docker_git_commit=$tachidesk_docker_git_commit" >> $GITHUB_OUTPUT - build_date=$(date "+%F") - echo "build_date=$build_date" >> $GITHUB_OUTPUT - echo "repository_owner_lower=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT - - - name: Build and push stable ubuntu - id: docker_build_release_ubuntu - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Test_Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_temurin_platform }} - push: true - build-args: | - BASE_IMAGE=${{ env.build_base_image_temurin }} - BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} - IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} - IMAGE_TYPE=develop-ubuntu - TACHIDESK_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} - TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - IMAGE_OWNER=${{ steps.get_latest_release_metadata.outputs.repository_owner_lower }} - tags: | - ghcr.io/${{ steps.get_latest_release_metadata.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:develop - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - - name: Build and push stable alpine - id: docker_build_release_alpine - uses: docker/build-push-action@v3 - with: - file: scripts/dockerfiles/Test_Git_Actions-Dockerfile - platforms: ${{ env.build_base_image_alpine_platform }} - push: true - build-args: | - BASE_IMAGE=${{ env.build_base_image_alpine }} - BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} - IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} - IMAGE_TYPE=develop-alpine - TACHIDESK_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }} - TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} - TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} - TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} - STARTUP_SCRIPT_URL=${{ env.startup_script_url }} - TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} - IMAGE_OWNER=${{ steps.get_latest_release_metadata.outputs.repository_owner_lower }} - tags: | - ghcr.io/${{ steps.get_latest_release_metadata.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:develop-alpine - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache diff --git a/.github/workflows/save_docker_pull_count.yml b/.github/workflows/save_docker_pull_count.yml deleted file mode 100644 index 2cae9ff..0000000 --- a/.github/workflows/save_docker_pull_count.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Save Docker Pull Count -on: - workflow_dispatch: -# schedule: -# - cron: "0 11 * * *" - -jobs: - save_pull_count: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: main - path: main - fetch-depth: 0 - - - name: save total downloads - run: | - cd main - total_downloads_previous=$(jq -r '.total_downloads' scripts/tachidesk_version.json) - total_downloads=$(curl -s https://github.com/Suwayomi/docker-tachidesk/pkgs/container/tachidesk | grep -A1 "Total downloads" | tr -d \\n | egrep -o "Total download.*.=\"[0-9]+\">" | cut -f2 -d"=" | egrep -o "[0-9]+") - if [[ $total_downloads != $total_downloads_previous ]]; then - git pull - echo "`jq --arg value "$total_downloads" '.total_downloads=$value' scripts/tachidesk_version.json`" > scripts/tachidesk_version.json - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions[bot]" - git status - if [ -n "$(git status --porcelain)" ]; then - git pull - git add . - git commit -a -m "Update docker pull count" - git push - else - echo "No changes to commit" - fi - fi diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8fce603 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +data/ diff --git a/Dockerfile b/Dockerfile index bcb7b45..29556c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,39 @@ -FROM eclipse-temurin:11-jre-focal - -RUN groupadd --gid 1000 suwayomi && useradd --uid 1000 --gid suwayomi --no-log-init suwayomi; - -RUN mkdir -p /home/suwayomi && chown -R suwayomi:suwayomi /home/suwayomi - -USER suwayomi - -WORKDIR /home/suwayomi - -RUN curl -s --create-dirs -L https://raw.githubusercontent.com/suwayomi/docker-tachidesk/main/scripts/startup_script.sh -o /home/suwayomi/startup/startup_script.sh - -RUN curl -L $(curl -s https://api.github.com/repos/suwayomi/tachidesk-server/releases/latest | grep -o "https.*jar") -o /home/suwayomi/startup/tachidesk_latest.jar - -EXPOSE 4567 - -CMD ["/bin/sh", "/home/suwayomi/startup/startup_script.sh"] +FROM eclipse-temurin:11-jre-jammy + +ARG BUILD_DATE +ARG IMAGE_VERSION +ARG TACHIDESK_GIT_COMMIT +ARG TACHIDESK_RELEASE_TAG +ARG TACHIDESK_FILENAME +ARG TACHIDESK_RELEASE_DOWNLOAD_URL +ARG TACHIDESK_DOCKER_GIT_COMMIT + +LABEL maintainer="suwayomi" \ + org.opencontainers.image.title="Suwayomi Docker" \ + org.opencontainers.image.authors="https://github.com/suwayomi" \ + org.opencontainers.image.url="https://github.com/suwayomi/docker-tachidesk/pkgs/container/tachidesk" \ + org.opencontainers.image.source="https://github.com/suwayomi/docker-tachidesk" \ + org.opencontainers.image.description="This image is used to start suwayomi server in a container" \ + org.opencontainers.image.vendor="suwayomi" \ + org.opencontainers.image.created=$BUILD_DATE \ + org.opencontainers.image.version=$IMAGE_VERSION \ + tachidesk.git_commit=$TACHIDESK_GIT_COMMIT \ + tachidesk.docker_commit=$TACHIDESK_DOCKER_GIT_COMMIT \ + tachidesk.release_tag=$TACHIDESK_RELEASE_TAG \ + tachidesk.filename=$TACHIDESK_FILENAME \ + download_url=$TACHIDESK_RELEASE_DOWNLOAD_URL \ + org.opencontainers.image.licenses="MPL-2.0" + +RUN groupadd --gid 1000 suwayomi && \ + useradd --uid 1000 --gid suwayomi --no-log-init suwayomi && \ + mkdir -p /home/suwayomi && \ + chown -R suwayomi:suwayomi /home/suwayomi +USER suwayomi +WORKDIR /home/suwayomi +RUN curl -s --create-dirs -L $TACHIDESK_RELEASE_DOWNLOAD_URL -o /home/suwayomi/startup/tachidesk_latest.jar +COPY startup_script.sh /home/suwayomi/startup_script.sh + +EXPOSE 4567 +CMD ["/bin/sh", "/home/suwayomi/startup_script.sh"] + +# vim: set ft=dockerfile: diff --git a/compose.yml b/compose.yml deleted file mode 100644 index 159aa3c..0000000 --- a/compose.yml +++ /dev/null @@ -1,30 +0,0 @@ ---- -version: '3.7' - -services: - - tachidesk-docker: - image: ghcr.io/suwayomi/tachidesk - container_name: tachidesk-docker - networks: - custom_network1: - ipv4_address: 172.22.2.11 - environment: - - PUID=1000 # ( dont change, require uid to be 1000 ) - - PGID=1000 # ( dont change, require gid to be 1000 ) - - TZ=< change it to your timezone > # Use TZ database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - - LOGGING=file - volumes: - - //docker-config/tachidesk:/home/suwayomi/.local/share/Tachidesk # edit to your mapped folder - ports: - - "4567:4567" - restart: on-failure:3 - -networks: - custom_network1: - driver: bridge - ipam: - driver: default - config: - - subnet: 172.22.2.0/24 - gateway: 172.22.2.1 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8cab3b7 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +--- +version: '3.7' + +services: + + tachidesk-docker: + image: ghcr.io/suwayomi/tachidesk:stable + environment: + - PUID=1000 # ( dont change, require uid to be 1000 ) + - PGID=1000 # ( dont change, require gid to be 1000 ) + - TZ=Etc/UTC # Use TZ database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + volumes: + - ./data:/home/suwayomi/.local/share/Tachidesk # edit to your mapped folder + ports: + - "4567:4567" + restart: on-failure:3 diff --git a/scripts/dockerfiles/Git_Actions-Dockerfile b/scripts/dockerfiles/Git_Actions-Dockerfile deleted file mode 100644 index 96b577c..0000000 --- a/scripts/dockerfiles/Git_Actions-Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -ARG BASE_IMAGE=none - -FROM $BASE_IMAGE - -ARG BASE_IMAGE -ARG BUILD_DATE -ARG IMAGE_VERSION -ARG IMAGE_TYPE -ARG TACHIDESK_GIT_COMMIT -ARG TACHIDESK_RELEASE_TAG -ARG TACHIDESK_FILENAME -ARG TACHIDESK_RELEASE_DOWNLOAD_URL -ARG TACHIDESK_DOCKER_GIT_COMMIT -ARG STARTUP_SCRIPT_URL - -RUN if echo "$BASE_IMAGE" | grep -q "openjdk"; then useradd -ms /bin/sh suwayomi; \ - elif echo "$BASE_IMAGE" | grep -q "eclipse-temurin"; then \ - if echo "$BASE_IMAGE" | grep -q "alpine"; then \ - apk --update add curl tzdata && addgroup -g 1000 -S suwayomi && adduser -u 1000 -S suwayomi -G suwayomi; \ - else \ - groupadd --gid 1000 suwayomi && useradd --uid 1000 --gid suwayomi --no-log-init suwayomi; fi; \ - elif echo "$BASE_IMAGE" | grep -q "alpine"; then apk --update add curl openjdk8-jre-base tzdata && addgroup -g 1000 -S suwayomi && adduser -u 1000 -S suwayomi -G suwayomi; \ - else echo "wrong base image"; \ - fi - -LABEL maintainer="suwayomi" \ - org.opencontainers.image.title="Tachidesk Docker" \ - org.opencontainers.image.authors="https://github.com/suwayomi" \ - org.opencontainers.image.url="https://github.com/suwayomi/docker-tachidesk/pkgs/container/tachidesk" \ - org.opencontainers.image.source="https://github.com/suwayomi/docker-tachidesk" \ - org.opencontainers.image.description="This image is used to start tachidesk jar executable in a container" \ - base_image=$BASE_IMAGE \ - org.opencontainers.image.vendor="suwayomi" \ - org.opencontainers.image.created=$BUILD_DATE \ - org.opencontainers.image.version=$IMAGE_VERSION \ - image_type=$IMAGE_TYPE \ - "tachidesk.git_commit"=$TACHIDESK_GIT_COMMIT \ - "tachidesk.release_tag"=$TACHIDESK_RELEASE_TAG \ - "tachidesk.filename"=$TACHIDESK_FILENAME \ - download_url=$TACHIDESK_RELEASE_DOWNLOAD_URL \ - org.opencontainers.image.licenses="MPL-2.0" - -RUN mkdir -p /home/suwayomi && chown -R suwayomi:suwayomi /home/suwayomi -USER suwayomi:suwayomi -WORKDIR /home/suwayomi -RUN echo $TACHIDESK_FILENAME -RUN curl -s --create-dirs -L $TACHIDESK_RELEASE_DOWNLOAD_URL -o /home/suwayomi/startup/tachidesk_latest.jar -RUN echo $TACHIDESK_DOCKER_GIT_COMMIT -RUN curl -s --create-dirs -L $STARTUP_SCRIPT_URL -o /home/suwayomi/startup/startup_script.sh - -EXPOSE 4567 -CMD ["/bin/sh", "/home/suwayomi/startup/startup_script.sh"] diff --git a/scripts/dockerfiles/Test_Git_Actions-Dockerfile b/scripts/dockerfiles/Test_Git_Actions-Dockerfile deleted file mode 100644 index 85fae42..0000000 --- a/scripts/dockerfiles/Test_Git_Actions-Dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -ARG BASE_IMAGE=none - -FROM $BASE_IMAGE - -ARG BASE_IMAGE -ARG BUILD_DATE -ARG IMAGE_VERSION -ARG IMAGE_TYPE -ARG TACHIDESK_GIT_COMMIT -ARG TACHIDESK_RELEASE_TAG -ARG TACHIDESK_FILENAME -ARG TACHIDESK_RELEASE_DOWNLOAD_URL -ARG TACHIDESK_DOCKER_GIT_COMMIT -ARG STARTUP_SCRIPT_URL - -RUN if echo "$BASE_IMAGE" | grep -q "openjdk"; then useradd -ms /bin/sh suwayomi; \ - elif echo "$BASE_IMAGE" | grep -q "eclipse-temurin"; then \ - if echo "$BASE_IMAGE" | grep -q "alpine"; then \ - apk --update add curl tzdata && addgroup -g 1000 -S suwayomi && adduser -u 1000 -S suwayomi -G suwayomi; \ - else \ - groupadd --gid 1000 suwayomi && useradd --uid 1000 --gid suwayomi --no-log-init suwayomi; fi; \ - elif echo "$BASE_IMAGE" | grep -q "alpine"; then apk --update add curl openjdk8-jre-base tzdata && addgroup -g 1000 -S suwayomi && adduser -u 1000 -S suwayomi -G suwayomi; \ - else echo "wrong base image"; \ - fi - -LABEL maintainer="suwayomi" \ - org.opencontainers.image.title="Tachidesk Docker" \ - org.opencontainers.image.authors="https://github.com/suwayomi" \ - org.opencontainers.image.url="https://github.com/suwayomi/docker-tachidesk/pkgs/container/tachidesk" \ - org.opencontainers.image.source="https://github.com/suwayomi/docker-tachidesk" \ - org.opencontainers.image.description="This image is used to start tachidesk jar executable in a container" \ - base_image=$BASE_IMAGE \ - org.opencontainers.image.vendor="suwayomi" \ - org.opencontainers.image.created=$BUILD_DATE \ - org.opencontainers.image.version=$IMAGE_VERSION \ - image_type=$IMAGE_TYPE \ - "tachidesk.git_commit"=$TACHIDESK_GIT_COMMIT \ - "tachidesk.release_tag"=$TACHIDESK_RELEASE_TAG \ - "tachidesk.filename"=$TACHIDESK_FILENAME \ - download_url=$TACHIDESK_RELEASE_DOWNLOAD_URL \ - org.opencontainers.image.licenses="MPL-2.0" - -RUN USER=suwayomi && \ - GROUP=suwayomi && \ - curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.5.1/fixuid-0.5.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \ - chown root:root /usr/local/bin/fixuid && \ - chmod 4755 /usr/local/bin/fixuid && \ - mkdir -p /etc/fixuid && \ - printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml - -USER suwayomi:suwayomi -WORKDIR /home/suwayomi -RUN echo $TACHIDESK_FILENAME -RUN curl -s --create-dirs -L $TACHIDESK_RELEASE_DOWNLOAD_URL -o /home/suwayomi/startup/tachidesk_latest.jar -RUN echo $TACHIDESK_DOCKER_GIT_COMMIT -RUN curl -s --create-dirs -L $STARTUP_SCRIPT_URL -o /home/suwayomi/startup/startup_script.sh - -EXPOSE 4567 -ENTRYPOINT ["fixuid"] -CMD ["/bin/sh", "/home/suwayomi/startup/startup_script.sh"] diff --git a/scripts/tachidesk_version.json b/scripts/tachidesk_version.json deleted file mode 100644 index 529141f..0000000 --- a/scripts/tachidesk_version.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "stable": "v0.7.0", - "preview": "v0.7.0-r1268", - "total_downloads": "50k+" -} diff --git a/scripts/startup_script.sh b/startup_script.sh old mode 100644 new mode 100755 similarity index 73% rename from scripts/startup_script.sh rename to startup_script.sh index 235ffc1..41d3a58 --- a/scripts/startup_script.sh +++ b/startup_script.sh @@ -14,9 +14,5 @@ echo "" echo "Tachidesk data location inside the container -> /home/suwayomi/.local/share/Tachidesk" echo "" echo "The server is running by default configuration on http://localhost:4567" -if [ "${LOGGING:-file}" != "file" ]; then - exec java -jar "/home/suwayomi/startup/tachidesk_latest.jar"; -else - echo "log file location inside the container -> /home/suwayomi/.local/share/Tachidesk/logfile.log" - exec java -jar "/home/suwayomi/startup/tachidesk_latest.jar" > /home/suwayomi/.local/share/Tachidesk/logfile.log 2>&1; -fi + +exec java -jar "/home/suwayomi/startup/tachidesk_latest.jar";