sanger/limber

View on GitHub
.github/workflows/automated_release.yml

Summary

Maintainability
Test Coverage
name: Automated build of project and release creation

on:
  push:
    branches:
      - master
      - develop

env:
  BUNDLE_WITHOUT: 'test lint'

jobs:
  build-and-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: nelonoel/branch-name@v1.0.1

      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true # runs 'bundle install' and caches installed gems automatically

      # Actually run our build
      - name: Create Build
        run: ./compile-build

      # Create a release tag based on the branch name and .release-version file
      - name: Set release tag
        # https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
        # On the develop branch this might create RELEASE_VERSION=2.4.6-987654321-develop
        # On the master branch this would then only create RELEASE_VERSION=2.4.6
        run: echo "RELEASE_VERSION=$(printf -- '%s%s\n' $(cat .release-version) $([ ${BRANCH_NAME} = "develop" ] && printf -- '-%s-develop' ${GITHUB_RUN_ID} || echo ""))" >> $GITHUB_ENV

      # Create a GitHub release with the release asset as an artifact
      - name: Create release and upload release.tar.gz
        uses: ncipollo/release-action@v1.8.8
        with:
          name: ${{ env.RELEASE_VERSION }}
          tag: v${{ env.RELEASE_VERSION }}
          prerelease: ${{ !(github.ref == 'refs/heads/master') }}
          commit: ${{ github.sha }}
          artifacts: release.tar.gz
          artifactErrorsFailBuild: true