Skip to content

Commit

Permalink
Merge pull request #839 from gjsjohnmurray/pre-CI-for-prerelease-branch
Browse files Browse the repository at this point in the history
Add CI for prerelease branch
  • Loading branch information
gjsjohnmurray authored Jan 26, 2022
2 parents eee6456 + 5231d3d commit 241ffdb
Showing 1 changed file with 174 additions and 0 deletions.
174 changes: 174 additions & 0 deletions .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: CI-prerelease

on:
push:
branches:
- prerelease
paths-ignore:
- "docs/**"
- ".vscode/**"
- ".github/**"
- "*.md"
- "**/*.md"
pull_request:
branches:
- prerelease
release:
branches:
- prerelease
types:
- released
jobs:
build:
timeout-minutes: 10
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v2
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Set an output
id: set-version
if: runner.os == 'Linux'
run: |
set -x
VERSION=$(jq -r '.version' package.json | cut -d- -f1)
[ $GITHUB_EVENT_NAME == 'release' ] && VERSION=${{ github.event.release.tag_name }} && VERSION=${VERSION/v/}
CHANGELOG=$(cat CHANGELOG.md | sed -n "/## \[${VERSION}\]/,/## /p" | sed '/^$/d;1d;$d')
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
echo ::set-output name=changelog::$CHANGELOG
git tag -l | cat
[ $GITHUB_EVENT_NAME == 'push' ] && VERSION+=-beta && VERSION+=.$(($(git tag -l "v$VERSION.*" | sort -nt. -k4 2>/dev/null | tail -1 | cut -d. -f4)+1))
[ $GITHUB_EVENT_NAME == 'pull_request' ] && VERSION+=-dev.${{ github.event.pull_request.number }}
echo ::set-output name=version::$VERSION
NAME=$(jq -r '.name' package.json)-$VERSION
echo ::set-output name=name::$NAME
tmp=$(mktemp)
jq --arg version "$VERSION" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
mkdir dist
echo $VERSION > .version
echo $NAME > .name
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: 14.x
- run: npm install
- name: lint
if: runner.os == 'Linux'
run: npm run lint
- run: npm run compile
- name: npm test
uses: GabrielBB/xvfb-action@v1.0
with:
run: npm run test
- name: Build pre-release package
if: runner.os == 'Linux'
run: |
npx vsce package --pre-release -o ${{ steps.set-version.outputs.name }}.vsix
- uses: actions/upload-artifact@v2
if: runner.os == 'Linux'
with:
name: ${{ steps.set-version.outputs.name }}.vsix
path: ${{ steps.set-version.outputs.name }}.vsix
- uses: actions/upload-artifact@v2
if: runner.os == 'Linux'
with:
name: meta
path: |
.name
.version
beta:
if: (github.event_name == 'push')
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v2
with:
name: meta
path: .
- name: Set an output
id: set-version
if: runner.os == 'Linux'
run: |
set -x
echo ::set-output name=version::`cat .version`
echo ::set-output name=name::`cat .name`
- uses: actions/download-artifact@v2
with:
name: ${{ steps.set-version.outputs.name }}.vsix
- name: Create Pre-Release
id: create_release
uses: actions/create-release@v1
if: runner.os == 'Linux'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.set-version.outputs.version }}
release_name: v${{ steps.set-version.outputs.version }}
prerelease: ${{ github.event_name != 'release' }}
body: |
Changes in this pre-release
${{ steps.set-version.outputs.changelog }}
- name: Upload Pre-Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
if: runner.os == 'Linux'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ steps.set-version.outputs.name }}.vsix
asset_name: ${{ steps.set-version.outputs.name }}.vsix
asset_content_type: application/zip
publish:
if: github.event_name == 'release'
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
with:
ref: prerelease
token: ${{ secrets.TOKEN }}
- uses: actions/download-artifact@v2
with:
name: meta
path: .
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: 14.x
- name: Prepare pre-release build
id: set-version
run: |
VERSION=`cat .version`
NEXT_VERSION=`cat .version | awk -F. '/[0-9]+\./{$NF++;print}' OFS=.`
echo ::set-output name=name::`cat .name`
tmp=$(mktemp)
git config --global user.name 'ProjectBot'
git config --global user.email 'bot@users.noreply.github.com'
jq --arg version "${NEXT_VERSION}-SNAPSHOT" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
git add package.json
git commit -m 'auto bump version after pre-release'
jq --arg version "$VERSION" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
npm install
jq 'del(.enableProposedApi,.enabledApiProposals)' package.json > "$tmp" && mv "$tmp" package.json
git push
- name: Build pre-release package
run: |
npx vsce package --pre-release -o ${{ steps.set-version.outputs.name }}.vsix
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
if: runner.os == 'Linux'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ steps.set-version.outputs.name }}.vsix
asset_name: ${{ steps.set-version.outputs.name }}.vsix
asset_content_type: application/zip
- name: Publish to VSCode Marketplace
run: |
[ -n "${{ secrets.VSCE_TOKEN }}" ] && \
npx vsce publish --pre-release --packagePath ${{ steps.set-version.outputs.name }}.vsix -p ${{ secrets.VSCE_TOKEN }} || true

0 comments on commit 241ffdb

Please sign in to comment.