Detect IBC Releases #402
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Detect IBC Releases | |
on: | |
schedule: | |
- cron: "0 6 * * *" | |
workflow_dispatch: | |
defaults: | |
run: | |
shell: "bash -Eeuo pipefail -x {0}" | |
env: | |
IBC_REPO: https://github.com/IbcAlpha/IBC.git | |
BRANCH_PREFIX: IBC-update | |
jobs: | |
detect-release: | |
name: Detect Release | |
runs-on: ubuntu-latest | |
outputs: | |
update: ${{ steps.verify_latest.outputs.update }} | |
strategy: | |
fail-fast: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get Current Version | |
id: version | |
run: | | |
CURRENT_IBC="$(grep 'ENV IBC_VERSION' Dockerfile.template|cut -d '=' -f 2)" | |
echo "CURRENT_IBC=$CURRENT_IBC" >> $GITHUB_OUTPUT | |
- name: Get IBC latest version | |
id: ibc_version | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
IBC_LATEST="$(gh release list -R ${{ env.IBC_REPO }} --exclude-drafts --exclude-pre-releases |grep 'Latest'|cut -f1)" | |
if [ -n ${IBC_LATEST} ] | |
then | |
echo "IBC_LATEST=$IBC_LATEST" >> $GITHUB_OUTPUT | |
else | |
echo "IBC_LATEST=" >> $GITHUB_OUTPUT | |
fi | |
- name: Verify latest version | |
id: verify_latest | |
run: | | |
current=${{ steps.version.outputs.CURRENT_IBC }} | |
latest=${{ steps.ibc_version.outputs.IBC_LATEST }} | |
if [[ "$current" = "$latest" ]]; then | |
update="false" | |
else | |
update="true" | |
fi | |
echo "update=$update" >> $GITHUB_OUTPUT | |
- name: Check if branch already exists | |
id: verify_branch | |
if: ${{ steps.verify_latest.outputs.update == 'true' }} | |
run: | | |
latest=${{ steps.ibc_version.outputs.IBC_LATEST }} | |
prefix=${{ env.BRANCH_PREFIX }} | |
search=${prefix}-${latest} | |
if [ "$(git branch --list | grep ${search})" ]; then | |
echo "BRANCH_EXISTS=true" >> $GITHUB_OUTPUT | |
else | |
echo "BRANCH_EXISTS=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Create Pull Request | |
if: ${{ steps.verify_branch.outputs.BRANCH_EXISTS == 'false' }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
ver=${{ steps.version.outputs.CURRENT_IBC }} | |
latest=${{ steps.ibc_version.outputs.IBC_LATEST}} | |
prefix=${{ env.BRANCH_PREFIX }} | |
branch="${prefix}-${latest}" | |
git config user.name github-actions | |
git config user.email [email protected] | |
git pull | |
git checkout -b "$branch" origin/master | |
# update Dockerfile.template, but don't run update.sh | |
# next ib gateway release will run update.sh | |
echo ".> updating Dockerfile.template" | |
sed -i "s/IBC_VERSION=${ver}/IBC_VERSION=${latest}/g" Dockerfile.template | |
echo ".> updating Dockerfile.tws.template" | |
sed -i "s/IBC_VERSION=${ver}/IBC_VERSION=${latest}/g" Dockerfile.tws.template | |
git add Dockerfile.template Dockerfile.tws.template | |
git commit -m "Update IBC from ${ver} to ${latest}" | |
git push --set-upstream origin "$branch" | |
gh pr create --base master --fill | |
build: | |
name: Call build workflow | |
needs: detect-release | |
if: needs.detect-release.outputs.update == 'true' | |
strategy: | |
matrix: | |
channel: ['stable', 'latest'] | |
uses: gnzsnz/ib-gateway-docker/.github/workflows/build.yml@master | |
with: | |
channel: ${{ matrix.channel }} |