Skip to content

Check for New Release and Build Docker #208

Check for New Release and Build Docker

Check for New Release and Build Docker #208

Workflow file for this run

name: Check for New Release and Build Docker
on:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
- cron: '0 12 * * *' # Runs every day at 12:00 PM
workflow_dispatch:
jobs:
check-release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get latest release info
id: get_release
run: |
latest_release=$(curl -s https://api.github.com/repos/hufrea/byedpi/releases/latest)
echo "Latest release info: $latest_release"
echo "tag=$(echo $latest_release | jq -r .tag_name)" >> $GITHUB_ENV
echo "published_at=$(echo $latest_release | jq -r .published_at)" >> $GITHUB_ENV
- name: Compare with last known release
id: compare_release
run: |
last_known_release=$(cat .last_known_release 2>/dev/null || echo "")
latest_release=$(echo ${{ env.published_at }})
if [ "$latest_release" != "$last_known_release" ]; then
echo "New release found: $latest_release"
echo "new_release=true" >> $GITHUB_ENV
echo $latest_release > .last_known_release
else
echo "No new release. Last known release: $last_known_release"
echo "new_release=false" >> $GITHUB_ENV
fi
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build multi arch if new release
if: env.new_release == 'true'
run: |
echo "New release detected, building and pushing Docker..."
docker buildx build \
--platform linux/amd64 \
--platform linux/arm/v7 \
--platform linux/aarch64 \
--platform linux/ppc64le \
-t ${{ secrets.DOCKER_USERNAME }}/byedpi:test \
-t ${{ secrets.DOCKER_USERNAME }}/byedpi:${{ env.tag }} \
-t ${{ secrets.DOCKER_USERNAME }}/byedpi:latest \
--push \
.