diff --git a/.github/workflows/build_container_images.yml b/.github/workflows/build_container_images.yml index 3f79f5b..af9ca7d 100644 --- a/.github/workflows/build_container_images.yml +++ b/.github/workflows/build_container_images.yml @@ -17,6 +17,7 @@ on: env: server_repo: ${{ inputs.tachidesk_release_type == 'stable' && 'Tachidesk-Server' || 'Tachidesk-Server-prevew' }} + test_image_tag: ghcr.io/suwayomi/tachidesk:testing jobs: build_stable: @@ -34,7 +35,6 @@ jobs: 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 @@ -44,7 +44,7 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - - name: get latest release metadata + - name: Get latest release metadata id: get_latest_release_metadata run: | cd main @@ -66,11 +66,53 @@ jobs: echo "tachidesk_docker_git_commit=$tachidesk_docker_git_commit" >> $GITHUB_OUTPUT echo "build_date=$build_date" >> $GITHUB_OUTPUT - - name: Build container image - id: docker_build_release_ubuntu + # this only builds the amd64 version of the image, which is fine as that's + # all that is needed to test the container on Github Actions' build servers (which are running amd64 CPUs) + - name: Build container image to test + uses: docker/build-push-action@v3 + with: + load: true # this is important, as this tells build-push-action to save the container to the local docker daemon + build-args: | + BUILD_DATE=${{ steps.get_latest_release_metadata.outputs.build_date }} + IMAGE_VERSION=${{ steps.get_latest_release_metadata.outputs.release_version }} + 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 }} + TACHIDESK_DOCKER_GIT_COMMIT=${{ steps.get_latest_release_metadata.outputs.tachidesk_docker_git_commit }} + tags: ${{ env.test_image_tag }} + + # Launch the container and then hit the about API to verifiy that it can start up correctly. + - name: Test new container image + run: | + 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 ${{ env.test_image_tag }} + 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<@106949211932606464>\nDocker ${{ inputs.tachidesk_release_type }} 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 + + # Now we build for all of the platforms we support here. NB: the amd64 + # won't be rebuilt since the local docker daemon has that still cached + - name: Push container image to registry uses: docker/build-push-action@v3 with: - file: scripts/dockerfiles/Git_Actions-Dockerfile platforms: linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x push: true build-args: | @@ -85,44 +127,13 @@ jobs: 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: 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 + - name: Send a Discord message through the webhook (preview build) 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/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 + - name: Send a Discord message through the webhook (stable build) 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 }}"