mirror of
https://github.com/linuxserver/docker-swag.git
synced 2024-07-01 00:51:27 +00:00
1bdf9a98e2
add gehirn and sakuracloud dns validation add conf checker add trigger workflows remove deprecated certbot option for public ip logging
91 lines
5.6 KiB
YAML
91 lines
5.6 KiB
YAML
name: External Trigger Main
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
external-trigger-master:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2.3.3
|
|
|
|
- name: External Trigger
|
|
if: github.ref == 'refs/heads/master'
|
|
run: |
|
|
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_SWAG_MASTER }}" ]; then
|
|
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_SWAG_MASTER is set; skipping trigger. ****"
|
|
exit 0
|
|
fi
|
|
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_SWAG_MASTER\". ****"
|
|
echo "**** Retrieving external version ****"
|
|
EXT_RELEASE=$(curl -sL "https://pypi.python.org/pypi/certbot/json" |jq -r '. | .info.version')
|
|
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
|
echo "**** Can't retrieve external version, exiting ****"
|
|
FAILURE_REASON="Can't retrieve external version for swag branch master"
|
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
|
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
|
exit 1
|
|
fi
|
|
echo "**** External version: ${EXT_RELEASE} ****"
|
|
echo "**** Retrieving last pushed version ****"
|
|
image="linuxserver/swag"
|
|
tag="latest"
|
|
token=$(curl -sX GET \
|
|
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fswag%3Apull" \
|
|
| jq -r '.token')
|
|
multidigest=$(curl -s \
|
|
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
|
--header "Authorization: Bearer ${token}" \
|
|
"https://ghcr.io/v2/${image}/manifests/${tag}" \
|
|
| jq -r 'first(.manifests[].digest)')
|
|
digest=$(curl -s \
|
|
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
|
--header "Authorization: Bearer ${token}" \
|
|
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
|
|
| jq -r '.config.digest')
|
|
image_info=$(curl -sL \
|
|
--header "Authorization: Bearer ${token}" \
|
|
"https://ghcr.io/v2/${image}/blobs/${digest}" \
|
|
| jq -r '.container_config')
|
|
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
|
|
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
|
|
if [ -z "${IMAGE_VERSION}" ]; then
|
|
echo "**** Can't retrieve last pushed version, exiting ****"
|
|
FAILURE_REASON="Can't retrieve last pushed version for swag tag latest"
|
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
|
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
|
exit 1
|
|
fi
|
|
echo "**** Last pushed version: ${IMAGE_VERSION} ****"
|
|
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
|
|
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
|
|
exit 0
|
|
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
|
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
|
|
exit 0
|
|
else
|
|
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
|
|
response=$(curl -iX POST \
|
|
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/buildWithParameters?PACKAGE_CHECK=false \
|
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
|
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
|
echo "**** Sleeping 10 seconds until job starts ****"
|
|
sleep 10
|
|
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
|
buildurl="${buildurl%$'\r'}"
|
|
echo "**** Jenkins job build url: ${buildurl} ****"
|
|
echo "**** Attempting to change the Jenkins job description ****"
|
|
curl -iX POST \
|
|
"${buildurl}submitDescription" \
|
|
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
|
|
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
|
--data-urlencode "Submit=Submit"
|
|
echo "**** Notifying Discord ****"
|
|
TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
|
|
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
|
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
|
|
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
|
fi
|