Skip to content

Build and release when new app version is out. #119

Build and release when new app version is out.

Build and release when new app version is out. #119

name: Build and release when new app version is out.
on:
push:
branches:
- main
- master
schedule:
- cron: '0 10 * * *'
workflow_dispatch:
jobs:
get-version:
runs-on: ubuntu-latest
outputs:
modified: ${{ steps.git-check.outputs.modified }}
release_tag: ${{ steps.build.outputs.REDUCE_RELEASE_TAG }}
steps:
- uses: actions/checkout@v4
- name: Fetch release version
run: |
latest_version=$(curl -sL https://api.github.com/repos/rlabduke/reduce/tags | jq -r ".[0].name")
if [[ $latest_version != "null" ]]
then
echo "$latest_version" > release-versions/reduce-latest.txt
fi
- name: Check for modified files
id: git-check
run: echo modified="$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")" >> $GITHUB_OUTPUT
- name: Commit latest release version
if: steps.git-check.outputs.modified == 'true'
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git commit -am "New release version"
git push
- name: Build the Docker image
if: steps.git-check.outputs.modified == 'true'
id: build
working-directory: .
run: |
REDUCE_RELEASE_TAG=$(cat release-versions/reduce-latest.txt)
echo "REDUCE_RELEASE_TAG=$REDUCE_RELEASE_TAG" >> $GITHUB_OUTPUT
docker build . -t reduce --build-arg REDUCE_RELEASE_TAG=$REDUCE_RELEASE_TAG
docker create -ti --name reducecontainer reduce bash
docker cp reducecontainer:/opt/build/reduce.appimage .
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: build
path: reduce.appimage
macos:
runs-on: macos-latest
needs: [get-version]
if: needs.get-version.outputs.modified == 'true'
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- run: |
bash build_mac.sh ${{ needs.get-version.outputs.release_tag }}
cd build && tar czf reduce-macos-${{ matrix.target }}.tar.gz *
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: build
path: build/reduce-macos-${{ matrix.target }}.tar.gz
release:
name: Release
runs-on: ubuntu-latest
needs: [get-version, macos]
if: needs.get-version.outputs.modified == 'true'
steps:
- uses: actions/download-artifact@v3
with:
name: build
- uses: ncipollo/release-action@v1
with:
allowUpdates: True
tag: ${{ needs.get-version.outputs.release_tag }}
name: ${{ needs.get-version.outputs.release_tag }}
prerelease: False
artifacts: 'reduce.appimage,reduce-macos-x86_64.tar.gz,reduce-macos-aarch64.tar.gz'
token: ${{ secrets.GITHUB_TOKEN }}