From 3784f2bf8140f50ae50ce49d9d814af1756e6604 Mon Sep 17 00:00:00 2001 From: Ole-Martin Bratteng Date: Thu, 10 Sep 2020 15:47:56 +0200 Subject: [PATCH] ci(gh-actions): add a release workflow --- .github/workflows/release.yml | 92 +++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..f5c46e57 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,92 @@ +name: Release + +on: + push: + branches: + - master + +jobs: + prepare: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['14'] + name: "[v${{ matrix.node-version }}] check" + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2-beta + with: + node-version: ${{ matrix.node-version }} + + # Check if cache exists, based on the hash of the lockfile + - name: Cache node_modules + id: cache-node_modules + uses: actions/cache@v2 + with: + path: node_modules + key: ${{ runner.os }}-node-${{matrix.node-version}}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node-${{matrix.node-version}}- + ${{ runner.os }}-node- + ${{ runner.os }}- + + # If there is no cache available, we run npm installation in CI mode + - name: Install dependencies + if: steps.cache-node_modules.outputs.cache-hit != 'true' + run: npm ci + + - name: Lint + run: npm run lint + + - name: Run tests + run: npm run test + + build-and-release: + runs-on: ubuntu-latest + needs: prepare + strategy: + matrix: + node-version: ['14'] + name: "[v${{ matrix.node-version }}] release" + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2-beta + with: + node-version: ${{ matrix.node-version }} + + # Check if cache exists, based on the hash of the lockfile + - name: Cache node_modules + id: cache-node_modules + uses: actions/cache@v2 + with: + path: node_modules + key: ${{ runner.os }}-node-${{matrix.node-version}}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node-${{matrix.node-version}}- + ${{ runner.os }}-node- + ${{ runner.os }}- + + # If there is no cache available, we run npm installation in CI mode + - name: Install dependencies + if: steps.cache-node_modules.outputs.cache-hit != 'true' + run: npm ci + + # Build and check if it builds ok. + - name: Build + env: + BUNDLESIZE_GITHUB_TOKEN: ${{ secrets.BUNDLESIZE }} + run: npm run build + + - name: Release + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npm run release