|
| 1 | +name: External Trigger Main |
| 2 | + |
| 3 | +on: |
| 4 | + workflow_dispatch: |
| 5 | + |
| 6 | +jobs: |
| 7 | + external-trigger-master: |
| 8 | + runs-on: ubuntu-latest |
| 9 | + steps: |
| 10 | + |
| 11 | + |
| 12 | + - name: External Trigger |
| 13 | + if: github.ref == 'refs/heads/master' |
| 14 | + run: | |
| 15 | + if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_OPENVPN_AS_MASTER }}" ]; then |
| 16 | + echo "Github secret PAUSE_EXTERNAL_TRIGGER_OPENVPN_AS_MASTER is set; skipping trigger." |
| 17 | + exit 0 |
| 18 | + fi |
| 19 | + echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_OPENVPN_AS_MASTER\"." |
| 20 | + echo "Retrieving external version" |
| 21 | + EXT_RELEASE=$(curl -sX GET http://as-repository.openvpn.net/as/debian/dists/bionic/main/binary-amd64/Packages.gz | gunzip -c |grep -A 7 -m 1 'Package: openvpn-as' | awk -F ': ' '/Version/{print $2;exit}') |
| 22 | + if [ -z "${EXT_RELEASE}" ]; then |
| 23 | + echo "Can't retrieve external version, exiting" |
| 24 | + FAILURE_REASON="Can't retrieve external version for openvpn-as branch master" |
| 25 | + curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, |
| 26 | + "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], |
| 27 | + "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} |
| 28 | + exit 1 |
| 29 | + fi |
| 30 | + echo "External version: ${EXT_RELEASE}" |
| 31 | + echo "Retrieving last pushed version" |
| 32 | + image="linuxserver/openvpn-as" |
| 33 | + tag="latest" |
| 34 | + token=$(curl -sX GET \ |
| 35 | + "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fopenvpn-as%3Apull" \ |
| 36 | + | jq -r '.token') |
| 37 | + digest=$(curl -s \ |
| 38 | + --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ |
| 39 | + --header "Authorization: Bearer ${token}" \ |
| 40 | + "https://ghcr.io/v2/${image}/manifests/${tag}" \ |
| 41 | + | jq -r '.config.digest') |
| 42 | + image_info=$(curl -sL \ |
| 43 | + --header "Authorization: Bearer ${token}" \ |
| 44 | + "https://ghcr.io/v2/${image}/blobs/${digest}" \ |
| 45 | + | jq -r '.container_config') |
| 46 | + IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') |
| 47 | + IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') |
| 48 | + if [ -z "${IMAGE_VERSION}" ]; then |
| 49 | + echo "Can't retrieve last pushed version, exiting" |
| 50 | + FAILURE_REASON="Can't retrieve last pushed version for openvpn-as tag latest" |
| 51 | + curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, |
| 52 | + "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], |
| 53 | + "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} |
| 54 | + exit 1 |
| 55 | + fi |
| 56 | + echo "Last pushed version: ${IMAGE_VERSION}" |
| 57 | + if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then |
| 58 | + echo "Version ${EXT_RELEASE} already pushed, exiting" |
| 59 | + exit 0 |
| 60 | + else |
| 61 | + echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" |
| 62 | + curl -X POST \ |
| 63 | + https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-openvpn-as/job/master/buildWithParameters?PACKAGE_CHECK=false \ |
| 64 | + --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} |
| 65 | + echo "Notifying Discord" |
| 66 | + TRIGGER_REASON="A version change was detected for openvpn-as tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" |
| 67 | + curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, |
| 68 | + "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n"}], |
| 69 | + "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} |
| 70 | + fi |
0 commit comments