overhaul the workflows

This commit is contained in:
Nogweii
2023-05-20 18:11:04 -07:00
parent e0aaaa91bf
commit 77f891d439
11 changed files with 125 additions and 933 deletions

View File

@@ -4,161 +4,32 @@ on:
branches: [ main ] branches: [ main ]
paths-ignore: paths-ignore:
- '**/README.md' - '**/README.md'
- '**/Dockerfile'
- '**/save_docker_pull_count.yml'
- '**/build_test_images.yml'
- '**/Test_Git_Actions-Dockerfile'
pull_request:
branches: [ main ]
workflow_dispatch: workflow_dispatch:
inputs: inputs:
tachidesk_release_type: tachidesk_release_type:
required: false required: true
default: 'stable' default: 'preview'
description: 'Tachidesk Release Type' description: 'Suwayomi Release Type'
publish_images_manually: type: choice
required: false options:
default: 'no' - stable
description: 'Force Publish Images Manually' - preview
env: env:
build_repo_docker: 'tachidesk' server_repo: ${{ inputs.tachidesk_release_type == 'stable' && 'Tachidesk-Server' || 'Tachidesk-Server-prevew' }}
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 }}
if: "!startsWith(github.event.head_commit.message, '[SKIP CI]')" jobs:
steps: build_stable:
- 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
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
new_release_check: ${{ steps.release_version_check.outputs.new_release_check }} steps:
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:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
ref: main ref: main
path: main path: main
fetch-depth: 0 fetch-depth: 0
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v2
@@ -166,500 +37,92 @@ jobs:
id: buildx id: buildx
uses: docker/setup-buildx-action@v2 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 - name: get latest release metadata
id: get_latest_release_metadata id: get_latest_release_metadata
run: | run: |
cd main cd main
release_url=$(curl -s ${{ env.tachidesk_webui_stable_url }} | egrep -o "https://.*./releases/download.*.Tachidesk-Server.*.jar") latest_release_json=$(curl -s https://api.github.com/repos/suwayomi/${{ env.server_repo }}/releases/latest)
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_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_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_commit=$(echo $release_var | cut -f2 -d"r")
release_filename=Tachidesk-Server-${release_var}.jar release_filename=Tachidesk-Server-${release_var}.jar
release_version=$(echo $release_tag | cut -c2-) 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_url=$release_url" >> $GITHUB_OUTPUT
echo "release_commit=$release_commit" >> $GITHUB_OUTPUT
echo "release_tag=$release_tag" >> $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_filename=$release_filename" >> $GITHUB_OUTPUT
echo "release_version=$release_version" >> $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 echo "tachidesk_docker_git_commit=$tachidesk_docker_git_commit" >> $GITHUB_OUTPUT
build_date=$(date "+%F")
echo "build_date=$build_date" >> $GITHUB_OUTPUT 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 id: docker_build_release_ubuntu
uses: docker/build-push-action@v3 uses: docker/build-push-action@v3
with: with:
file: scripts/dockerfiles/Git_Actions-Dockerfile 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: | build-args: |
BASE_IMAGE=${{ env.build_base_image_temurin }}
BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }}
IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} 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_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.release_commit }}
TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }} TACHIDESK_RELEASE_TAG=${{ steps.get_latest_release_metadata.outputs.release_tag }}
TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }} TACHIDESK_RELEASE_DOWNLOAD_URL=${{ steps.get_latest_release_metadata.outputs.release_url }}
TACHIDESK_FILENAME=${{ steps.get_latest_release_metadata.outputs.release_filename }} 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 }} TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }}
tags: | tags: |
test-image:stable ghcr.io/suwayomi/tachidesk:latest
outputs: type=docker,dest=/tmp/test_image_stable.tar 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 }}
- 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
cache-from: type=local,src=/tmp/.buildx-cache cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache
- name: Build and push stable alpine # - name: Docker Run Test Stable Ubuntu Image
id: docker_build_release_alpine # id: docker_run_test_image_stable
uses: docker/build-push-action@v3 # run: |
with: # docker load --input /tmp/test_image_stable.tar
file: scripts/dockerfiles/Git_Actions-Dockerfile # mkdir -p /home/runner/work/_temp/tachidesk
platforms: ${{ env.build_base_image_alpine_platform }} # chmod -R 777 /home/runner/work/_temp/tachidesk
push: ${{ needs.check_stable.outputs.enable_build_publish == 'true' }} # 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
build-args: | # sleep 15
BASE_IMAGE=${{ env.build_base_image_alpine }} # cat /home/runner/work/_temp/tachidesk/logfile.log
BUILD_DATE=${{ needs.check_stable.outputs.build_date }} # 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)
IMAGE_VERSION=${{ needs.check_stable.outputs.release_version }} # if [[ $val == "Tachidesk" ]]; then
IMAGE_TYPE=stable-alpine # echo ""
TACHIDESK_GIT_COMMIT=${{ needs.check_stable.outputs.release_commit }} # echo "Tachidesk stable ubuntu run successfully"
TACHIDESK_RELEASE_TAG=${{ needs.check_stable.outputs.release_tag }} # echo "value=true" >> $GITHUB_OUTPUT
TACHIDESK_RELEASE_DOWNLOAD_URL=${{ needs.check_stable.outputs.release_url }} # docker stop test_image_stable
TACHIDESK_FILENAME=${{ needs.check_stable.outputs.release_filename }} # else
STARTUP_SCRIPT_URL=${{ env.startup_script_url }} # echo ""
TACHIDESK_DOCKER_GIT_COMMIT=${{ needs.check_stable.outputs.tachidesk_docker_git_commit }} # echo "Tachidesk stable ubuntu run Failed"
IMAGE_OWNER=${{ needs.check_stable.outputs.repository_owner_lower }} # echo "value=false" >> $GITHUB_OUTPUT
tags: | # curl \
ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:latest-alpine # -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 }}"}' \
ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:stable-alpine # -F "file1=@/home/runner/work/_temp/tachidesk/logfile.log" \
ghcr.io/${{ needs.check_stable.outputs.repository_owner_lower }}/${{ env.build_repo_docker }}:${{ needs.check_stable.outputs.release_tag }}-alpine # "https://discord.com/api/webhooks/${{ secrets.DISCORD_TACHIDESK_WEBHOOK_ID }}/${{ secrets.DISCORD_TACHIDESK_TOKEN }}"
cache-from: type=local,src=/tmp/.buildx-cache # fi
cache-to: type=local,dest=/tmp/.buildx-cache # exit 1
# fi
- 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: discord webhook preview - name: discord webhook preview
if: ${{ needs.check_preview.outputs.enable_discord_hook == 'true' }} if: ${{ inputs.tachidesk_release_type == 'preview' }}
id: discord_webhook_preview id: discord_webhook_preview
run: | 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 }}"

View File

@@ -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

View File

@@ -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

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
data/

View File

@@ -1,17 +1,39 @@
FROM eclipse-temurin:11-jre-focal FROM eclipse-temurin:11-jre-jammy
RUN groupadd --gid 1000 suwayomi && useradd --uid 1000 --gid suwayomi --no-log-init suwayomi; ARG BUILD_DATE
ARG IMAGE_VERSION
RUN mkdir -p /home/suwayomi && chown -R suwayomi:suwayomi /home/suwayomi ARG TACHIDESK_GIT_COMMIT
ARG TACHIDESK_RELEASE_TAG
USER suwayomi ARG TACHIDESK_FILENAME
ARG TACHIDESK_RELEASE_DOWNLOAD_URL
WORKDIR /home/suwayomi ARG TACHIDESK_DOCKER_GIT_COMMIT
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 LABEL maintainer="suwayomi" \
org.opencontainers.image.title="Suwayomi Docker" \
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 org.opencontainers.image.authors="https://github.com/suwayomi" \
org.opencontainers.image.url="https://github.com/suwayomi/docker-tachidesk/pkgs/container/tachidesk" \
EXPOSE 4567 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" \
CMD ["/bin/sh", "/home/suwayomi/startup/startup_script.sh"] 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:

View File

@@ -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:
- /<path to folder>/docker-config/tachidesk:/home/suwayomi/.local/share/Tachidesk # edit <path to folder> 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

16
docker-compose.yml Normal file
View File

@@ -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 <path to folder> to your mapped folder
ports:
- "4567:4567"
restart: on-failure:3

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -1,5 +0,0 @@
{
"stable": "v0.7.0",
"preview": "v0.7.0-r1268",
"total_downloads": "50k+"
}

8
scripts/startup_script.sh → startup_script.sh Normal file → Executable file
View File

@@ -14,9 +14,5 @@ echo ""
echo "Tachidesk data location inside the container -> /home/suwayomi/.local/share/Tachidesk" echo "Tachidesk data location inside the container -> /home/suwayomi/.local/share/Tachidesk"
echo "" echo ""
echo "The server is running by default configuration on http://localhost:4567" 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"; 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