1+ name : Service Worker CI/CD
2+
3+ on :
4+ push :
5+ paths :
6+ - service-worker/**
7+ - .github/workflows/service-worker-ci-cd.yml
8+
9+ jobs :
10+ build :
11+ runs-on : ubuntu-latest
12+ strategy :
13+ matrix :
14+ node-version : [ lts/* ]
15+ steps :
16+ - uses : actions/checkout@v3
17+ - name : Use Node.js ${{ matrix.node-version }}
18+ uses : actions/setup-node@v3
19+ with :
20+ node-version : ${{ matrix.node-version }}
21+
22+ - run : npm ci
23+ - run : npm test -w service-worker
24+ - run : npm run lint -w service-worker
25+ - run : npm run build -w service-worker
26+
27+ - name : Save @pod-os/service-worker build
28+ if : github.ref == 'refs/heads/main'
29+ uses : actions/upload-artifact@v4
30+ with :
31+ name : service-worker-build
32+ path : |
33+ service-worker/lib/
34+ service-worker/types/
35+ service-worker/package.json
36+ retention-days : 1
37+
38+ npm-publish-service-worker-build :
39+ if : github.ref == 'refs/heads/main'
40+ needs : build
41+ runs-on : ubuntu-latest
42+ outputs :
43+ prereleaseVersion : ${{ steps.prerelease.outputs.version }}
44+ steps :
45+ - uses : actions/download-artifact@v4
46+ with :
47+ name : service-worker-build
48+ - uses : actions/setup-node@v3
49+ with :
50+ node-version : lts/*
51+ - uses : rlespinasse/github-slug-action@v4.4.1
52+ - name : prerelease version
53+ run : |
54+ echo "::set-output name=version::$(npm version prerelease --preid rc.${GITHUB_SHA_SHORT} --no-git-tag-version)"
55+ id : prerelease
56+ - run : echo prerelease version is ${{ steps.prerelease.outputs.version }}
57+ - uses : JS-DevTools/npm-publish@v1
58+ name : Publish @pod-os/service-worker
59+ with :
60+ token : ${{ secrets.NPM_TOKEN }}
61+ tag : ${{ env.GITHUB_REF_SLUG }}
62+
63+ npm-release-latest-service-worker :
64+ if : github.ref == 'refs/heads/main'
65+ needs : build
66+ runs-on : ubuntu-latest
67+ steps :
68+ - uses : actions/download-artifact@v4
69+ with :
70+ name : service-worker-build
71+ - uses : actions/setup-node@v3
72+ with :
73+ node-version : lts/*
74+ - uses : JS-DevTools/npm-publish@v1
75+ name : Release @pod-os/service-worker
76+ with :
77+ token : ${{ secrets.NPM_TOKEN }}
78+ tag : latest
0 commit comments