# # # @type github workflow # @author Aetherinox # @url https://github.com/Aetherinox # @usage deploys docker container to Gitea and send message to discord # upload this workflow to both the `main` branch of the tvapp2 repository # # @secrets secrets.SELF_TOKEN self github personal access token (fine-grained) # secrets.SELF_TOKEN_CL self github personal access token (classic) # secrets.NPM_TOKEN self npmjs access token # secrets.PYPI_API_TOKEN self Pypi API token (production site) - https://pypi.org/ # secrets.PYPI_API_TEST_TOKEN self Pypi API token (test site) - https://test.pypi.org/ # secrets.SELF_DOCKERHUB_TOKEN self Dockerhub token # secrets.ORG_BINARYNINJA_TOKEN org github personal access token (fine-grained) # secrets.ORG_BINARYNINJA_TOKEN_CL org github personal access token (classic) # secrets.ORG_BINARYNINJA_DOCKERHUB_TOKEN org dockerhub secret # secrets.ORG_BINARYNINJA_GITEA_TOKEN org gitea personal access token (classic) with package:write permission # secrets.BINARYSERV_GPG_KEY_ASC bot gpg private key (armored) | BEGIN PGP PRIVATE KEY BLOCK # secrets.BINARYSERV_GPG_PASSPHRASE bot gpg private key passphrase # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_RELEASES discord webhook to report release notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_WORKFLOWS discord webhook to report workflow notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_UPDATES discord webhook to report activity notifications from github to discord # # @local these workflows can be tested locally through the use of `act` # https://github.com/nektos/act # Extract act to folder # Add system env var with path to act.exe # Run the commands: # git pull https://github.com/username/repo # act -W .github/workflows/deploy-docker-gitea.yml -P ubuntu-latest=catthehacker/ubuntu:full-22.04 # act -W .github/workflows/deploy-docker-gitea.yml -s TOKEN_CL=XXXXXXXXXX --pull=false # # name: "πŸ“¦ Deploy β€Ί Docker β€Ί Gitea" run-name: "πŸ“¦ Deploy β€Ί Docker β€Ί Gitea" # # # Triggers # # on: # # # Trigger β€Ί Workflow Dispatch # # If any values are not provided, will use fallback env variable # # workflow_dispatch: inputs: # # # Image Name # # used in github image path # git.binaryninja.net/${{ env.IMAGE_GITEA_AUTHOR }}/${{ env.IMAGE_NAME }} # # IMAGE_NAME: description: 'πŸ“¦ Image Name' required: true default: 'tvapp2' type: string # # # Registry Name # # options: # - github # - dockerhub # - gitea # # IMAGE_REGISTRY: description: 'πŸ“˜ Registry Name' required: true default: 'gitea' type: string # # # Gitea β€Ί Author # # used in github image path # git.binaryninja.net/${{ env.IMAGE_GITEA_AUTHOR }}/${{ env.IMAGE_NAME }} # # IMAGE_GITEA_AUTHOR: description: 'πŸͺͺ Image Author' required: true default: 'BinaryNinja' type: string # # # Gitea β€Ί Username # # this is the user to sign into gitea as. # # IMAGE_GITEA_USERNAME: description: 'πŸͺͺ Gitea Username' required: true default: 'aetherinox' type: string # # # Gitea β€Ί Website # # this is the gitea website / url to push to # # IMAGE_GITEA_WEBSITE: description: '🌎 Gitea Website' required: true default: 'git.binaryninja.net' type: string # # # Alpine Version # # specifies the alpine base docker image version # # IMAGE_ALPINE_VERSION: description: 'πŸ“€ Alpine Version' required: true default: '3.22' type: string # # # true no changes to the repo will be made # false workflow will behave normally, and push any changes detected to the files # # DRY_RUN: description: 'πŸ› Dry Run (Debug)' required: true default: false type: boolean # # # true released version will be marked as a development build and will have the v1.x.x-development tag instead of -latest # false release version will be marked with -latest docker tag # # DEV_RELEASE: description: 'πŸ§ͺ Development Release' required: true default: false type: boolean # # # Trigger β€Ί Push # # push: tags: - '*' # # # Environment Vars # # env: IMAGE_NAME: ${{ github.event.inputs.IMAGE_NAME || 'tvapp2' }} IMAGE_REGISTRY: ${{ github.event.inputs.IMAGE_REGISTRY || 'gitea' }} IMAGE_GITEA_AUTHOR: ${{ github.event.inputs.IMAGE_GITEA_AUTHOR || 'BinaryNinja' }} IMAGE_GITEA_USERNAME: ${{ github.event.inputs.IMAGE_GITEA_USERNAME || 'BinaryNinja' }} IMAGE_GITEA_WEBSITE: ${{ github.event.inputs.IMAGE_GITEA_WEBSITE || 'git.binaryninja.net' }} IMAGE_ALPINE_VERSION: ${{ github.event.inputs.IMAGE_ALPINE_VERSION || '3.22' }} DISCORD_BOT_NAME: 'Europa' DISCORD_BOT_AVATAR: 'https://i.imgur.com/UqwMom1.jpeg' DISCORD_BOT_EMBED_AUTHOR_ICON: 'https://avatars.githubusercontent.com/u/200161462' DISCORD_BOT_EMBED_THUMBNAIL: 'https://avatars.githubusercontent.com/u/200161462' BOT_NAME_1: EuropaServ BOT_NAME_2: BinaryServ BOT_NAME_DEPENDABOT: dependabot[bot] BOT_NAME_RENOVATE: renovate[bot] # # # Jobs # # The way pushed docker containers on Gitea work, the most recent image built goes at the top. # We will use the order below which builds the :latest image last so that it appears at the very # top of the packages page. # # jobs: # # # Job β€Ί Create Tag # # job-docker-release-tags-create: name: >- πŸ“¦ Release β€Ί Create Tag # runs-on: ubuntu-latest runs-on: apollo-x64 timeout-minutes: 4 outputs: package_version: ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }} permissions: contents: write packages: write attestations: write id-token: write steps: # # # Release β€Ί Tags β€Ί Checkout # # - name: 'β˜‘οΈ Checkout' uses: actions/checkout@v4 with: fetch-depth: 0 # # # Release β€Ί Tags β€Ί Job Information # # - name: >- πŸ”„ Load Job uses: qoomon/actions--context@v4 id: 'context' # # # Release β€Ί Tags β€Ί Set β€Ί Package.json β€Ί Version # # - name: 'πŸ‘οΈβ€πŸ—¨οΈ Package Version β€Ί Set' id: task_initialize_package_getversion working-directory: ./tvapp2 run: | VER=$(cat package.json | jq -r '.version') echo "PACKAGE_VERSION=${VER}" >> $GITHUB_OUTPUT echo "PACKAGE_VERSION=${VER}" >> $GITHUB_ENV # # # Initialize β€Ί Get β€Ί Package.json β€Ί Version # # - name: 'πŸ‘οΈβ€πŸ—¨οΈ Package Version β€Ί Get' run: | echo "VERSION: ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }}" # # # Release β€Ί Tags β€Ί Start # # - name: >- βœ… Start run: | echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo " Starting Job ${{ steps.context.outputs.job_name }}" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" YEAR="$(date +'%Y')" echo "YEAR=${YEAR}" >> $GITHUB_ENV NOW="$(date +'%m-%d-%Y %H:%M:%S')" # 02-25-2025 12:49:48 echo "NOW=${NOW}" >> $GITHUB_ENV NOW_SHORT="$(date +'%m-%d-%Y')" # 02-25-2025 echo "NOW_SHORT=${NOW_SHORT}" >> $GITHUB_ENV NOW_LONG="$(date +'%m-%d-%Y %H:%M')" # 02-25-2025 12:49 echo "NOW_LONG=${NOW_LONG}" >> $GITHUB_ENV NOW_DOCKER="$(date +'%Y%m%d')" # 20250225 echo "NOW_DOCKER=${NOW_DOCKER}" >> $GITHUB_ENV NOW_DOCKER_TS="$(date -u +'%FT%T.%3NZ')" # 2025-02-25T12:50:11.569Z echo "NOW_DOCKER_TS=${NOW_DOCKER_TS}" >> $GITHUB_ENV SHA1="$(git rev-parse HEAD)" # 71fad013cfce9116ec62779e4a7e627fe4c33627 echo "SHA1=${SHA1}" >> $GITHUB_ENV SHA1_GH="$(echo ${GITHUB_SHA})" # 71fad013cfce9116ec62779e4a7e627fe4c33627 echo "SHA1_GH=${SHA1_GH}" >> $GITHUB_ENV PKG_VER_1DIGIT="$(echo ${{ env.PACKAGE_VERSION }} | cut -d '.' -f1-1)" # 3.22 > 3 echo "PKG_VER_1DIGIT=${PKG_VER_1DIGIT}" >> $GITHUB_ENV PKG_VER_2DIGIT="$(echo ${{ env.PACKAGE_VERSION }} | cut -f2 -d ":" | cut -c1-3)" # 3.22 > 3.2 echo "PKG_VER_2DIGIT=${PKG_VER_2DIGIT}" >> $GITHUB_ENV echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" sudo apt -qq update sudo apt -qq install tree echo "β€Ž" echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" echo " Runner .............. ${{ runner.name }}" echo " Workflow ............ ${{ github.workflow }} (#${{ github.workflow_ref }})" echo " Run Number .......... ${{ github.run_number }}" echo " Ref ................. ${{ github.ref }}" echo " Ref Name ............ ${{ github.ref_name }}" echo " Event Name .......... ${{ github.event_name }}" echo " Repo ................ ${{ github.repository }}" echo " Repo Owner .......... ${{ github.repository_owner }}" echo " Run ID .............. https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" echo " Triggered By ........ ${{ github.actor }}" echo " SHA 1 (GITHUB_SHA) .. ${GITHUB_SHA}" echo " SHA 2 (env.SHA1) .. ${{ env.SHA1 }}" echo " SHA 3 (env.SHA1) .... ${SHA1}" echo " SHA 4 (env.SHA1_GH) . ${SHA1_GH}" echo " Workspace ........... ${{ github.workspace }}" echo " PWD ................. ${PWD}" echo " Job Name ............ ${{ steps.context.outputs.job_name }}" echo " Job ID .............. ${{ steps.context.outputs.job_id }}" echo " Job URL ............. ${{ steps.context.outputs.job_url }}" echo " Run ID .............. ${{ steps.context.outputs.run_id }}" echo " Run Attempt ......... ${{ steps.context.outputs.run_attempt }}" echo " Run Number .......... ${{ steps.context.outputs.run_number }}" echo " Run URL ............. ${{ steps.context.outputs.run_url }}" echo " Run Env ............. ${{ steps.context.outputs.environment }}" echo " Run Env URL ......... ${{ steps.context.outputs.environment_url }}" echo " Run Deployment ...... ${{ steps.context.outputs.deployment_id }}" echo " Run Deployment URL .. ${{ steps.context.outputs.deployment_url }}" echo " Run Deployment ...... ${{ steps.context.outputs.deployment_id }}" echo " Run Runner Name ..... ${{ steps.context.outputs.runner_name }}" echo " Run Runner ID ....... ${{ steps.context.outputs.runner_id }}" echo " Year ................ ${YEAR}" echo " Now ................. ${NOW}" echo " Now (Short) ......... ${NOW_SHORT}" echo " Now (Long) .......... ${NOW_LONG}" echo " Now (Docker) ........ ${NOW_DOCKER}" echo " Now (Docker TS) ..... ${NOW_DOCKER_TS}" echo "β€Ž" echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" tree -I node_modules -I .git echo "β€Ž" echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" # # # Release β€Ί Tags β€Ί Fix Permissions # # - name: '#️⃣ Manage Permissions' id: task_release_tags_permissions run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else echo "βœ…βœ…βœ… Executable permissions are OK βœ…βœ…βœ…" fi # # # Release β€Ί Tags β€Ί Create Tag # # only called in dispatch mode # # - uses: rickstaa/action-create-tag@v1 id: task_release_tags_create if: ( github.event_name != 'workflow_dispatch' && inputs.DRY_RUN == false ) with: tag: "${{ env.PACKAGE_VERSION }}" tag_exists_error: false message: '${{ env.IMAGE_NAME }}-${{ env.PACKAGE_VERSION }}' gpg_private_key: ${{ secrets.ADMINSERV_GPG_KEY_ASC }} gpg_passphrase: ${{ secrets.ADMINSERV_GPG_PASSPHRASE }} # # # Job β€Ί Docker Release β€Ί Gitea # # job-docker-release-gitea: name: >- πŸ“¦ Release β€Ί Gitea # runs-on: ubuntu-latest runs-on: apollo-x64 timeout-minutes: 10 needs: [ job-docker-release-tags-create ] permissions: contents: write packages: write attestations: write id-token: write env: PACKAGE_VERSION: ${{ needs.job-docker-release-tags-create.outputs.package_version }} steps: # # # Release β€Ί Gitea β€Ί Checkout # # - name: 'β˜‘οΈ Checkout' uses: actions/checkout@v4 with: fetch-depth: 0 # # # Release β€Ί Gitea β€Ί Job Information # # - name: >- πŸ”„ Load Job uses: qoomon/actions--context@v4 id: 'context' # # # Release β€Ί Gitea β€Ί Start # # - name: >- βœ… Start run: | echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo " Starting Job ${{ steps.context.outputs.job_name }}" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" YEAR="$(date +'%Y')" echo "YEAR=${YEAR}" >> $GITHUB_ENV NOW="$(date +'%m-%d-%Y %H:%M:%S')" # 02-25-2025 12:49:48 echo "NOW=${NOW}" >> $GITHUB_ENV NOW_SHORT="$(date +'%m-%d-%Y')" # 02-25-2025 echo "NOW_SHORT=${NOW_SHORT}" >> $GITHUB_ENV NOW_LONG="$(date +'%m-%d-%Y %H:%M')" # 02-25-2025 12:49 echo "NOW_LONG=${NOW_LONG}" >> $GITHUB_ENV NOW_DOCKER="$(date +'%Y%m%d')" # 20250225 echo "NOW_DOCKER=${NOW_DOCKER}" >> $GITHUB_ENV NOW_DOCKER_TS="$(date -u +'%FT%T.%3NZ')" # 2025-02-25T12:50:11.569Z echo "NOW_DOCKER_TS=${NOW_DOCKER_TS}" >> $GITHUB_ENV SHA1="$(git rev-parse HEAD)" # 71fad013cfce9116ec62779e4a7e627fe4c33627 echo "SHA1=${SHA1}" >> $GITHUB_ENV SHA1_GH="$(echo ${GITHUB_SHA})" # 71fad013cfce9116ec62779e4a7e627fe4c33627 echo "SHA1_GH=${SHA1_GH}" >> $GITHUB_ENV PKG_VER_1DIGIT="$(echo ${{ env.PACKAGE_VERSION }} | cut -d '.' -f1-1)" # 3.22 > 3 echo "PKG_VER_1DIGIT=${PKG_VER_1DIGIT}" >> $GITHUB_ENV PKG_VER_2DIGIT="$(echo ${{ env.PACKAGE_VERSION }} | cut -f2 -d ":" | cut -c1-3)" # 3.22 > 3.2 echo "PKG_VER_2DIGIT=${PKG_VER_2DIGIT}" >> $GITHUB_ENV echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" sudo apt -qq update sudo apt -qq install tree echo "β€Ž" echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" echo " Runner .............. ${{ runner.name }}" echo " Workflow ............ ${{ github.workflow }} (#${{ github.workflow_ref }})" echo " Run Number .......... ${{ github.run_number }}" echo " Ref ................. ${{ github.ref }}" echo " Ref Name ............ ${{ github.ref_name }}" echo " Event Name .......... ${{ github.event_name }}" echo " Repo ................ ${{ github.repository }}" echo " Repo Owner .......... ${{ github.repository_owner }}" echo " Run ID .............. https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" echo " Triggered By ........ ${{ github.actor }}" echo " SHA 1 (GITHUB_SHA) .. ${GITHUB_SHA}" echo " SHA 2 (env.SHA1) .. ${{ env.SHA1 }}" echo " SHA 3 (env.SHA1) .... ${SHA1}" echo " SHA 4 (env.SHA1_GH) . ${SHA1_GH}" echo " Workspace ........... ${{ github.workspace }}" echo " PWD ................. ${PWD}" echo " Job Name ............ ${{ steps.context.outputs.job_name }}" echo " Job ID .............. ${{ steps.context.outputs.job_id }}" echo " Job URL ............. ${{ steps.context.outputs.job_url }}" echo " Run ID .............. ${{ steps.context.outputs.run_id }}" echo " Run Attempt ......... ${{ steps.context.outputs.run_attempt }}" echo " Run Number .......... ${{ steps.context.outputs.run_number }}" echo " Run URL ............. ${{ steps.context.outputs.run_url }}" echo " Run Env ............. ${{ steps.context.outputs.environment }}" echo " Run Env URL ......... ${{ steps.context.outputs.environment_url }}" echo " Run Deployment ...... ${{ steps.context.outputs.deployment_id }}" echo " Run Deployment URL .. ${{ steps.context.outputs.deployment_url }}" echo " Run Deployment ...... ${{ steps.context.outputs.deployment_id }}" echo " Run Runner Name ..... ${{ steps.context.outputs.runner_name }}" echo " Run Runner ID ....... ${{ steps.context.outputs.runner_id }}" echo " Year ................ ${YEAR}" echo " Now ................. ${NOW}" echo " Now (Short) ......... ${NOW_SHORT}" echo " Now (Long) .......... ${NOW_LONG}" echo " Now (Docker) ........ ${NOW_DOCKER}" echo " Now (Docker TS) ..... ${NOW_DOCKER_TS}" echo "β€Ž" echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" tree -I node_modules -I .git echo "β€Ž" echo "β€Ž" echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――" echo "β€Ž" echo "β€Ž" # # # Release β€Ί Gitea β€Ί Set Vars # # - name: 'πŸ•› Set Vars' id: task_release_set_timestamp run: | echo "REGISTRY_REPO_ORG_AUTHOR_LC=`echo ${{ env.IMAGE_GITEA_AUTHOR }}/${{ env.IMAGE_NAME }} | tr '[:upper:]' '[:lower:]'`" >> ${GITHUB_ENV} # thebinaryninja/tvapp2 echo "REGISTRY_REPO_AUTHOR_LC=`echo ${{ env.IMAGE_GITEA_AUTHOR }} | tr '[:upper:]' '[:lower:]'`" >> ${GITHUB_ENV} # thebinaryninja # # # Release β€Ί Gitea β€Ί Install Dependencies # # - name: 'πŸ“¦ Install Dependencies' run: sudo apt-get install -qq dos2unix # # # Release β€Ί Gitea β€Ί Execute dos2unix # # - name: 'πŸ” Apply dos2unix' run: | echo "⚠️⚠️⚠️ Running DOS2UNIX ⚠️⚠️⚠️" find ./ \( -path "./.git" -o -path "./docs" -o -path "./.github" -o -path "*.png" -o -path "*.jpg" \) -prune -o -name '*' -print | xargs dos2unix -- echo "βœ…βœ…βœ… Completed DOS2UNIX βœ…βœ…βœ…" # # # Release β€Ί Gitea β€Ί Fix Permissions # # - name: '#️⃣ Manage Permissions' run: | find ./ -name 'run' -exec chmod 755 {} \; WRONG_PERM=$(find ./ -path "./.git" -prune -o \( -name "run" -o -name "finish" -o -name "check" \) -not -perm -u=x,g=x,o=x -print) if [ -n "${WRONG_PERM}" ]; then echo "⚠️⚠️⚠️ Permissions are invalid ⚠️⚠️⚠️" for i in ${WRONG_PERM}; do echo "::error file=${i},line=1,title=Missing Executable Bit::This file needs to be set as executable!" done exit 1 else echo "βœ…βœ…βœ… Executable permissions are OK βœ…βœ…βœ…" fi # # # Release β€Ί Gitea β€Ί QEMU β€Ί Amd64 # # - name: 'βš™οΈ Set up QEMU' id: task_release_gi_qemu uses: docker/setup-qemu-action@v3 # # # Required to fix insecure SSL error with docker buildx # # - name: 'βš™οΈ Configure Docker daemon to allow insecure registry' run: | echo "Configuring daemon to treat ${REGISTRY_HOST} as insecure" sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json > /dev/null <<'JSON' { "insecure-registries": ["git.binaryninja.net:443"] } JSON # Restart Docker sudo service docker restart env: REGISTRY_HOST: git.binaryninja.net # # # Make sure change in docker daemon config successful # # - name: 'βš™οΈ Check Docker Daemon Configuration' run: cat /etc/docker/daemon.json # # # Release β€Ί Gitea β€Ί Setup BuildX β€Ί Amd64 # # - name: 'βš™οΈ Setup Buildx' id: task_release_gi_buildx uses: docker/setup-buildx-action@v3 with: version: latest driver-opts: 'image=moby/buildkit:latest' install: true use: true # # # Release β€Ί Gitea β€Ί Registry Login β€Ί Amd64 # # - name: 'βš™οΈ Login to Gitea' id: task_release_gi_registry uses: docker/login-action@v3 with: registry: ${{ env.IMAGE_GITEA_WEBSITE }} username: ${{ env.IMAGE_GITEA_USERNAME }} password: ${{ secrets.ORG_BINARYNINJA_GITEA_TOKEN }} # # # Release β€Ί Gitea β€Ί Read Readme # # @usage org.opencontainers.image.description=${{ steps.task_release_gi_readme_cache.outputs.content }} # # - name: 'πŸ“„ Cache README.md' id: task_release_gi_readme_cache uses: actions/github-script@v7 with: github-token: ${{ secrets.ORG_BINARYNINJA_TOKEN_CL }} script: | 'use strict' const { promises: fs } = require('fs') const main = async () => { const path = "README.md" let content = await fs.readFile(path, 'utf8') core.setOutput('content', content) } main().catch(err => core.setFailed(err.message)) # # # Release β€Ί Gitea β€Ί Meta β€Ί amd64 # # this version of meta needs one entry for amd64 and one for arm64 because each # image needs to be uploaded manually, and then merged into a single platform. # # - name: 'πŸ”¨ Gitea: Meta β€Ί amd64' id: task_release_gi_meta_amd64 uses: docker/metadata-action@v5 with: images: | ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_AUTHOR_LC }}/${{ env.IMAGE_NAME }} tags: | # tag latest = yes ( no dev ) type=raw,value=latest,enable=${{ !inputs.DEV_RELEASE }} # tag add tag-amd64 ( PR or push only ) type=ref,enable=${{ github.event_name == 'pull_request' || github.event_name == 'push' }},priority=600,prefix=,suffix=-amd64,event=tag # tag add 1.0.0-amd64 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=500,prefix=,suffix=-amd64,value=${{ env.PACKAGE_VERSION }} # tag add 1.0.0 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=450,prefix=,suffix=,value=${{ env.PACKAGE_VERSION }} # tag add 1.0 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=425,prefix=,suffix=,value=${{ env.PKG_VER_2DIGIT }} # tag add 1 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=400,prefix=,suffix=,value=${{ env.PKG_VER_1DIGIT }} # dispatch add development-amd64 ( dispatch only + only dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == true }},priority=300,prefix=development-,suffix=,value=amd64 # tag add development ( amd64 + only dev ) type=raw,enable=${{ inputs.DEV_RELEASE }},priority=400,prefix=,suffix=,value=development flavor: | latest=false labels: | org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} annotations: |- org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} # # # Release β€Ί Gitea β€Ί Meta β€Ί arm64 # # this version of meta needs one entry for amd64 and one for arm64 because each # image needs to be uploaded manually, and then merged into a single platform. # # - name: 'πŸ”¨ Gitea: Meta β€Ί arm64' id: task_release_gi_meta_arm64 uses: docker/metadata-action@v5 with: images: | ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_AUTHOR_LC }}/${{ env.IMAGE_NAME }} tags: | # tag latest = no type=raw,value=latest,enable=false # tag add tag-arm64 type=ref,enable=${{ github.event_name == 'pull_request' || github.event_name == 'push' }},priority=600,prefix=,suffix=-arm64,event=tag # tag add 1.0.0-arm64 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=500,prefix=,suffix=-arm64,value=${{ env.PACKAGE_VERSION }} # dispatch add development-arm64 ( dispatch only + only dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == true }},priority=300,prefix=,suffix=-arm64,value=development flavor: | latest=false labels: | org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} annotations: |- org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} # # # Release β€Ί Gitea β€Ί Meta β€Ί Release # # this version of meta needs one entry for amd64 and one for arm64 because each # image needs to be uploaded manually, and then merged into a single platform. # # this meta action is for the final image; which has both platforms merged and # will be the final release. # # - name: 'πŸ”¨ Gitea: Meta β€Ί Release' id: task_release_gi_meta_release uses: docker/metadata-action@v5 with: images: | ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_AUTHOR_LC }}/${{ env.IMAGE_NAME }} tags: | # tag latest = yes ( no dev ) type=raw,value=latest,enable=${{ !inputs.DEV_RELEASE }} # tag add pr tag ( PR or push only ) type=ref,enable=${{ github.event_name == 'pull_request' || github.event_name == 'push' }},priority=600,prefix=,suffix=,event=tag # tag add 1.0.0 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=450,prefix=,suffix=,value=${{ env.PACKAGE_VERSION }} # tag add 1.0 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=425,prefix=,suffix=,value=${{ env.PKG_VER_2DIGIT }} # tag add 1 ( dispatch only + no dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == false }},priority=400,prefix=,suffix=,value=${{ env.PKG_VER_1DIGIT }} # tag add development ( dispatch only + only dev ) type=raw,enable=${{ github.event_name == 'workflow_dispatch' && inputs.DEV_RELEASE == true }},priority=300,prefix=,suffix=,value=development # tag add development ( amd64 + only dev ) type=raw,enable=${{ inputs.DEV_RELEASE }},priority=400,prefix=,suffix=,value=development flavor: | latest=false labels: | org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} annotations: |- org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} # # # Release β€Ί Gitea β€Ί Build and Push β€Ί Amd64 # # - name: 'πŸ“¦ Build & Push (linux/amd64)' id: task_release_gi_push_amd64 uses: docker/build-push-action@v6 if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: allow: | network.host network: host context: . file: Dockerfile platforms: linux/amd64 push: ${{ github.event_name != 'pull_request' }} labels: ${{ steps.task_release_gi_meta_amd64.outputs.labels }} provenance: false sbom: false tags: | ${{ steps.task_release_gi_meta_amd64.outputs.tags }} build-args: |- ARCH=amd64 RELEASE=${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }} VERSION=${{ env.PACKAGE_VERSION }} BUILDDATE=${{ env.NOW_DOCKER }} GIT_SHA1=${{ env.SHA1 }} ALPINE_VERSION=${{ env.IMAGE_ALPINE_VERSION }} annotations: |- org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.architecture=amd64 org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-architecture=amd64 org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} # # # Release β€Ί Gitea β€Ί Export Digest β€Ί Amd64 # # - name: 'πŸ“„ Export Digest (linux/amd64)' id: task_release_gi_digest_export_amd64 if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) run: | mkdir -p /tmp/build-digest-amd64 digest="${{ steps.task_release_gi_push_amd64.outputs.digest }}" digest="${digest#sha256:}" touch "/tmp/build-digest-amd64/$digest" shell: bash # # # Release β€Ί Gitea β€Ί Upload Digest β€Ί Amd64 # # - name: 'πŸ”Ό Upload Digest (linux/amd64)' id: task_release_gi_digest_upload_amd64 uses: actions/upload-artifact@v4 if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: name: digest-amd64 path: /tmp/build-digest-amd64/* if-no-files-found: error retention-days: 10 # # # Release β€Ί Gitea β€Ί Build and Push β€Ί Arm64 # # - name: 'πŸ“¦ Build & Push (linux/arm64)' id: task_release_gi_push_arm64 uses: docker/build-push-action@v6 if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: allow: | network.host network: host context: . file: Dockerfile platforms: linux/arm64 push: ${{ github.event_name != 'pull_request' }} labels: ${{ steps.task_release_gi_meta_arm64.outputs.labels }} provenance: false sbom: false tags: | ${{ steps.task_release_gi_meta_arm64.outputs.tags }} build-args: |- ARCH=arm64 RELEASE=${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }} VERSION=${{ env.PACKAGE_VERSION }} BUILDDATE=${{ env.NOW_DOCKER }} GIT_SHA1=${{ env.SHA1 }} ALPINE_VERSION=${{ env.IMAGE_ALPINE_VERSION }} annotations: |- org.opencontainers.image.description=TVApp2 org.opencontainers.image.created=${{ env.NOW_DOCKER_TS }} org.opencontainers.image.version=${{ env.PACKAGE_VERSION }} org.opencontainers.image.licenses=MIT org.opencontainers.image.architecture=arm64 org.opencontainers.image.revision=${{ env.SHA1 }} org.opencontainers.image.vendor=${{ env.REGISTRY_REPO_AUTHOR_LC }} org.opencontainers.image.ref.name=${{ github.ref_name }} org.opencontainers.image.development=${{ inputs.DEV_RELEASE == true && 'true' || 'false' }} org.opencontainers.image.registry=${{ env.IMAGE_REGISTRY }} org.tvapp2.image.build-version="Version: ${{ env.PACKAGE_VERSION }} Date: ${{ env.NOW_DOCKER }}" org.tvapp2.image.build-version-alpine=${{ env.IMAGE_ALPINE_VERSION }} org.tvapp2.image.build-architecture=arm64 org.tvapp2.image.build-release="${{ inputs.DEV_RELEASE == true && 'development' || 'stable' }}" org.tvapp2.image.build-sha1=${{ env.SHA1 }} # # # Release β€Ί Gitea β€Ί Export Digest β€Ί Arm64 # # - name: 'πŸ“„ Export Digest (linux/arm64)' id: task_release_gi_digest_export_arm64 if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) run: | mkdir -p /tmp/build-digest-arm64 digest="${{ steps.task_release_gi_push_arm64.outputs.digest }}" digest="${digest#sha256:}" touch "/tmp/build-digest-arm64/$digest" shell: bash # # # Release β€Ί Gitea β€Ί Upload Digest β€Ί Arm64 # # - name: 'πŸ”Ό Upload Digest (linux/arm64)' id: task_release_gi_digest_upload_arm64 uses: actions/upload-artifact@v4 if: ( github.event_name == 'workflow_dispatch' && inputs.DRY_RUN == false ) || ( github.event_name == 'push' ) with: name: digest-arm64 path: /tmp/build-digest-arm64/* if-no-files-found: error retention-days: 10 # # # Release β€Ί Gitea β€Ί Checkpoint # # - name: '⚠️ Checkpoint' run: | echo "β€Ž" echo "---- [ GITHUB ] ----------------------------------------------------------------------------------------" echo "github.actor.............................. ${{ github.actor }}" echo "github.ref ............................... ${{ github.ref }}" echo "github.ref_name .......................... ${{ github.ref_name }}" echo "github.event_name ........................ ${{ github.event_name }}" echo "github.repository_owner .................. ${{ github.repository_owner }}" echo "github.repository ........................ ${{ github.repository }}" echo "github.sha ............................... ${{ github.sha }}" echo "β€Ž" echo "---- [ INPUTS ] ----------------------------------------------------------------------------------------" echo "inputs.IMAGE_NAME ........................ ${{ inputs.IMAGE_NAME }}" echo "inputs.IMAGE_GITEA_USERNAME .............. ${{ inputs.IMAGE_GITEA_AUTHOR }}" echo "inputs.IMAGE_GITEA_USERNAME .............. ${{ inputs.IMAGE_GITEA_USERNAME }}" echo "inputs.IMAGE_GITEA_WEBSITE ............... ${{ inputs.IMAGE_GITEA_WEBSITE }}" echo "inputs.DEV_RELEASE ....................... ${{ inputs.DEV_RELEASE }}" echo "inputs.DRY_RUN ........................... ${{ inputs.DRY_RUN }}" echo "β€Ž" echo "---- [ ENV ] -------------------------------------------------------------------------------------------" echo "env.IMAGE_NAME ........................... ${{ env.IMAGE_NAME }}" echo "env.PACKAGE_VERSION ...................... ${{ env.PACKAGE_VERSION }}" echo "env.PKG_VER_1DIGIT ....................... ${{ env.PKG_VER_1DIGIT }}" echo "env.PKG_VER_2DIGIT ....................... ${{ env.PKG_VER_2DIGIT }}" echo "env.IMAGE_GITEA_AUTHOR ................... ${{ env.IMAGE_GITEA_AUTHOR }}" echo "env.IMAGE_GITEA_USERNAME ................. ${{ env.IMAGE_GITEA_USERNAME }}" echo "env.IMAGE_GITEA_WEBSITE .................. ${{ env.IMAGE_GITEA_WEBSITE }}" echo "env.NOW .................................. ${{ env.NOW }}" echo "env.NOW_SHORT ............................ ${{ env.NOW_SHORT }}" echo "env.NOW_LONG ............................. ${{ env.NOW_LONG }}" echo "env.NOW_DOCKER ........................... ${{ env.NOW_DOCKER }}" echo "env.NOW_DOCKER_TS ........................ ${{ env.NOW_DOCKER_TS }}" echo "env.REGISTRY_REPO_ORG_AUTHOR_LC .......... ${{ env.REGISTRY_REPO_ORG_AUTHOR_LC }}" echo "env.REGISTRY_REPO_AUTHOR_LC .............. ${{ env.REGISTRY_REPO_AUTHOR_LC }}" echo " SHA 1 (GITHUB_SHA) ...................... ${GITHUB_SHA}" echo " SHA 2 (github.sha) ...................... ${{ github.sha }}" echo " SHA 3 (env.SHA1) ........................ ${{ env.SHA1 }}" echo " SHA 4 (env.SHA1_GH) ..................... ${{ env.SHA1_GH }}" echo "β€Ž" echo "---- [ DOCKER IMAGES ] ---------------------------------------------------------------------------------" echo "registry ................................. Gitea" echo "(amd64) tags ............................. ${{ steps.task_release_gi_meta_amd64.outputs.tags }}" echo "(amd64) labels ........................... ${{ steps.task_release_gi_meta_amd64.outputs.labels }}" echo "(amd64) digest ........................... ${{ steps.task_release_gi_push_amd64.outputs.digest }}" echo "β€Ž" echo "(arm64) tags ............................. ${{ steps.task_release_gi_meta_arm64.outputs.tags }}" echo "(arm64) labels ........................... ${{ steps.task_release_gi_meta_arm64.outputs.labels }}" echo "(arm64) digest ........................... ${{ steps.task_release_gi_push_arm64.outputs.digest }}" echo "β€Ž" echo "(release) tags ........................... ${{ steps.task_release_gi_meta_release.outputs.tags }}" echo "(release) labels ......................... ${{ steps.task_release_gi_meta_release.outputs.labels }}" echo "β€Ž" echo "---- [ DOCKER DIGESTS ] --------------------------------------------------------------------------------" echo "docker image id (amd64) .................. ${{ steps.task_release_gi_push_amd64.outputs.imageid }}" echo "docker digest (amd64) .................... ${{ steps.task_release_gi_push_amd64.outputs.digest }}" echo "docker image id (arm64) .................. ${{ steps.task_release_gi_push_arm64.outputs.imageid }}" echo "docker digest (arm64) .................... ${{ steps.task_release_gi_push_arm64.outputs.digest }}" echo "β€Ž" # # # Release β€Ί Gitea β€Ί Push Manifest # # - name: 'πŸ“¦ Push Manifest' id: task_release_gi_manifest uses: int128/docker-manifest-create-action@v2 with: tags: | ${{ steps.task_release_gi_meta_release.outputs.tags }} sources: | ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_ORG_AUTHOR_LC }}@${{ steps.task_release_gi_push_amd64.outputs.digest }} ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_ORG_AUTHOR_LC }}@${{ steps.task_release_gi_push_arm64.outputs.digest }} index-annotations: | ${{ steps.task_release_gi_meta_release.outputs.labels }} # # # Release β€Ί Gitea β€Ί Get Weekly Commits # # - name: 'πŸ•› Get Weekly Commit List' run: | echo 'WEEKLY_COMMITS<> $GITHUB_ENV git log --format="[\`%h\`](${{ github.server_url }}/${{ github.repository }}/commit/%H) %s - %an" --since=7.days >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV # # # Release β€Ί Gitea β€Ί Notify Gitea # # - name: 'πŸ”” Send Discord Webhook Message' uses: tsickert/discord-webhook@v7.0.0 if: success() with: username: ${{ env.DISCORD_BOT_NAME }} avatar-url: ${{ env.DISCORD_BOT_AVATAR }} webhook-url: ${{ secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_RELEASES }} embed-title: "βš™οΈ ${{ github.workflow_ref }}" embed-url: "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" embed-thumbnail-url: ${{ env.DISCORD_BOT_EMBED_THUMBNAIL }} embed-description: | ### πŸ“¦ α²ΌDeploy (Gitea) α²Ό${{ job.status == 'success' && 'βœ…' || '❌' }}α²Ό β€Ί `${{ env.IMAGE_NAME }}-${{ env.PACKAGE_VERSION }}${{ inputs.DEV_RELEASE == true && '-development' || '' }}` ${{ inputs.DEV_RELEASE == true && '### ⚠️⚠️ Development / Pre-release ⚠️⚠️' || '' }} A new version of the docker container `${{ env.IMAGE_NAME }}` has been released from Github to Gitea. The image is available at: - https://${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.IMAGE_GITEA_USERNAME }}/${{ env.IMAGE_NAME }}/packages - Version: `${{ env.PACKAGE_VERSION }}` - Release Type: `${{ inputs.DEV_RELEASE == true && '⚠️⚠️ Development / Pre-release ⚠️⚠️' || 'Stable' }}` - Pull: `docker pull ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_ORG_AUTHOR_LC }}:${{ inputs.DEV_RELEASE == true && 'development' || env.PACKAGE_VERSION }}` - Pull (amd64): `docker pull ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_ORG_AUTHOR_LC }}@${{ steps.task_release_gi_push_amd64.outputs.digest }}` - Pull (arm64): `docker pull ${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.REGISTRY_REPO_ORG_AUTHOR_LC }}@${{ steps.task_release_gi_push_arm64.outputs.digest }}` - Dry Run: `${{ inputs.DRY_RUN }}` - Source: `Gitea` https://${{ env.IMAGE_GITEA_WEBSITE }}/${{ env.IMAGE_GITEA_USERNAME }}/${{ env.IMAGE_NAME }}/packages - Docker Image: `${{ env.IMAGE_NAME }}-${{ env.PACKAGE_VERSION }}${{ inputs.DEV_RELEASE == true && '-development' || '' }}` - Branch: `${{ github.ref_name }}` - Workflow: `${{ github.workflow }} (#${{github.run_number}})` - Runner: `${{ runner.name }}` - Triggered By: `${{ github.actor }}` - Status: `${{ job.status == 'success' && 'βœ… Successful' || '❌ Failed' }}` ### Tags -# This docker image will use the following tags: ``` ${{ steps.task_release_gi_meta_amd64.outputs.tags }} ``` ### Labels -# This docker image embeds the following labels: ``` ${{ steps.task_release_gi_meta_amd64.outputs.labels }} ``` embed-color: ${{ job.status == 'success' && '5763719' || '15418782' }} embed-footer-text: "Completed at ${{ env.NOW }} UTC" embed-timestamp: "${{ env.NOW_LONG }}" embed-author-name: "${{ github.repository_owner }}" embed-author-url: "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" embed-author-icon-url: ${{ env.DISCORD_BOT_EMBED_AUTHOR_ICON }}