Skip to content

Create Version and Tag #1

Create Version and Tag

Create Version and Tag #1

Workflow file for this run

name: Create Version and Tag
# If you change this name, don't forget to change the name in 'deploy.yml'!
on:
schedule:
- cron: '0 3 * * 1' # Every Monday at 3am UTC
workflow_dispatch: # For manual triggering
env:
JAVA_VERSION: '11'
NODE_VERSION: '12.x'
jobs:
run-tests: # redux of usual CI defined in `ci.yml`
name: Run tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'zulu'
cache: 'sbt'
- name: Set up NodeJS ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install MLton
run: |
curl -L https://github.com/MLton/mlton/releases/download/on-20210117-release/mlton-20210117-1.amd64-linux-glibc2.31.tgz --output mlton.tgz
tar -xzf mlton.tgz
mv mlton-20210117-1.amd64-linux-glibc2.31 $GITHUB_WORKSPACE/mlton
chmod +x $GITHUB_WORKSPACE/mlton/bin/mlton
echo "Trying to call directly"
$GITHUB_WORKSPACE/mlton/bin/mlton
echo "Adding mlton to path"
echo "$GITHUB_WORKSPACE/mlton/bin" >> $GITHUB_PATH
- name: Install Chez Scheme, LLVM & libuv
run: sudo apt-get install -y chezscheme llvm-15 libuv1-dev
- name: Run tests with retry
uses: nick-fields/retry@v3
with:
timeout_minutes: 120 # NOTE: This needs _some_ value. As of writing this, 2 hours should be future-proof. :)
max_attempts: 3
retry_on: error
command: sbt clean test
new_command_on_retry: sbt testQuick # should only rerun failed tests
bump-version-and-tag:
name: Bump Version and Create Tag
runs-on: ubuntu-latest
needs: [run-tests]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
# No need to setup environment again
- name: Bump Effekt version using sbt
id: set-version
run: |
# Capture the output of 'sbt bumpMinorVersion'
full_output=$(sbt 'bumpMinorVersion' -error)
# Extract the actual version number using grep
new_version=$(echo "$full_output" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | tail -n 1)
# Trim any potential whitespace
new_version=$(echo "$new_version" | xargs)
# Check that the new_version is actually non-empty and looks like a version number
if [[ ! $new_version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Version bump failed. Invalid version number: '${new_version}'"
echo "Full output was:"
echo "$full_output"
exit 1
fi
echo "VERSION=${new_version}" >> $GITHUB_OUTPUT
echo "Successfully set new version: ${new_version}"
- name: Update Effekt version in NPM and MVN via sbt
run: sbt updateVersions
- name: Commit and push changes
run: |
git config --local user.email "[email protected]"
git config --local user.name "github-actions[bot]"
git add project/EffektVersion.scala
git add package.json
git add pom.xml
git commit -m "Bump version to ${{ steps.set-version.outputs.VERSION }}"
git push
- name: Create and push tag
run: |
git tag v${{ steps.set-version.outputs.VERSION }}
git push origin v${{ steps.set-version.outputs.VERSION }}