name: release_beta_to_dev on: workflow_dispatch jobs: Release: runs-on: ubuntu-latest env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" UI_DIRECTORY: ./frontend ASSET_DIRECTORY: ./__builds__ FETCH_DEPTH: 15 # Should be enough steps: - name: Validate branch if: ${{ github.ref != 'refs/heads/development' }} run: | echo This action can only be run on development branch, not ${{ github.ref }} exit 1 - name: Checkout uses: actions/checkout@v2 with: fetch-depth: ${{ env.FETCH_DEPTH }} ref: development - name: Setup Git run: | git config --global user.name "github-actions" && git fetch --depth ${{ env.FETCH_DEPTH }} --tags - name: Cache node_modules uses: actions/cache@v2 with: path: '${{ env.UI_DIRECTORY }}/node_modules' key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-modules- - name: Setup NodeJS uses: actions/setup-node@v2 with: node-version: "15.x" - name: Install Global Tools run: npm install -g release-it auto-changelog - name: Install UI Dependencies run: npm install working-directory: ${{ env.UI_DIRECTORY }} - name: Build UI run: npm run build working-directory: ${{ env.UI_DIRECTORY }} # TODO: Wrap this to a standalone plugin - name: Check CI Status id: check_ci shell: bash run: | echo "**** Checking latest status from ${{ env.STATUS_WORKFLOW_NAME }} ****" Raw_Result=$(curl -sSL "https://api.github.com/repos/${{ github.repository }}/actions/workflows/${{ env.STATUS_WORKFLOW_NAME }}/runs?per_page=1&event=push") Result="failed" if [[ $? -eq 0 ]]; then echo $Raw_Result | grep conclusion | grep success > /dev/null 2>&1 if [[ $? -eq 0 ]]; then Result="success" fi else echo "**** Error occurred ****" fi echo "**** Status: $Result ****" echo "::set-output name=result::$Result" - name: Create Release (Conditional) if: ${{ steps.check_ci.outputs.result == 'success' }} run: | revision_count=$(git rev-list --invert-grep --regexp-ignore-case --extended-regexp --grep="^(Release|no log:).*" $(git describe --tags --abbrev=0)..HEAD --count) if [[ $revision_count != 0 ]]; then echo "**** Found $revision_count changes! Releasing... ****" release-it --ci --increment prerelease --preRelease=beta else echo "**** Cannot find changes! Skipping... ****" fi