1+ name : Build and Release 
2+ 
3+ on :
4+   push :
5+     branches : [ fabisev/artifact-publishing ] 
6+     tags : [ 'v*' ] 
7+   pull_request :
8+     branches : [ main ] 
9+ 
10+ jobs :
11+   #  lint:
12+   #    runs-on: ubuntu-latest
13+   #    steps:
14+   #    - uses: actions/checkout@v4
15+   #    - name: Setup Node.js
16+   #      uses: actions/setup-node@v4
17+   #      with:
18+   #        node-version: '20'
19+   #        cache: 'npm'
20+   #    - name: Install and lint
21+   #      run: |
22+   #        npm ci
23+   #        npm run lint
24+   #        npm run format
25+ 
26+   build :
27+     runs-on : ubuntu-latest 
28+     outputs :
29+       version : ${{ steps.version.outputs.version }} 
30+     steps :
31+     - uses : actions/checkout@v4 
32+     
33+     - name : Setup Node.js 
34+       uses : actions/setup-node@v4 
35+       with :
36+         node-version : ' 20' 
37+         cache : ' npm' 
38+     
39+     - name : Get version 
40+       id : version 
41+       run : | 
42+         BASE_VERSION=$(node -p "require('./package.json').version") 
43+         VERSION="${BASE_VERSION}" 
44+         echo "version=$VERSION" >> $GITHUB_OUTPUT 
45+ 
46+     - name : Cache native dependencies 
47+       uses : actions/cache@v4 
48+       with :
49+         path : | 
50+           deps/ 
51+           build/ 
52+ key : native-deps-${{ runner.os }}-${{ hashFiles('deps/versions', 'binding.gyp') }} 
53+     
54+     - name : Install and build 
55+       run : | 
56+         npm ci 
57+         npm run build 
58+         npm pack 
59+ 
60+     - name : Generate checksums and signatures 
61+       run : | 
62+         PACKAGE_FILE=$(ls aws-lambda-ric-*.tgz) 
63+         sha256sum $PACKAGE_FILE > checksums.sha256 
64+         sha512sum $PACKAGE_FILE > checksums.sha512 
65+         cat checksums.sha256 checksums.sha512 > checksums.txt 
66+         echo "Package: $PACKAGE_FILE with version prefix: ${{ steps.version.outputs.version }}" >> checksums.txt 
67+ 
68+     - name : Upload artifacts 
69+       uses : actions/upload-artifact@v4 
70+       with :
71+         name : package-${{ steps.version.outputs.version }} 
72+         path : | 
73+           aws-lambda-ric-*.tgz 
74+           checksums.* 
75+ retention-days : 30 
76+ 
77+   test :
78+     runs-on : ubuntu-latest 
79+     needs : [build]  # don't forget to add lint later
80+     strategy :
81+       matrix :
82+         node-version : [18, 20, 22] 
83+     steps :
84+     - uses : actions/checkout@v4 
85+     
86+     - name : Run unit tests - Node ${{ matrix.node-version }} 
87+       run : | 
88+         docker build -f test/unit/Dockerfile.nodejs${{ matrix.node-version }}.x -t unit/nodejs.${{ matrix.node-version }}x . 
89+         docker run --rm unit/nodejs.${{ matrix.node-version }}x 
90+ 
91+ 
92+ 
93+   publish :
94+     if : startsWith(github.ref, 'refs/tags/v') 
95+     runs-on : ubuntu-latest 
96+     needs : [build, test] 
97+     permissions :
98+       contents : write 
99+     steps :
100+     - uses : actions/checkout@v4 
101+     
102+     - name : Download artifacts 
103+       uses : actions/download-artifact@v4 
104+       with :
105+         name : package-${{ needs.build.outputs.version }} 
106+     
107+     - name : Verify checksums 
108+       run : | 
109+         sha256sum -c checksums.sha256 
110+         sha512sum -c checksums.sha512 
111+ 
112+     - name : Setup Node.js 
113+       uses : actions/setup-node@v4 
114+       with :
115+         node-version : ' 20' 
116+         registry-url : ' https://registry.npmjs.org' 
117+     
118+     #  - name: Publish to npm
119+     #    run: npm publish aws-lambda-ric-*.tgz
120+     #    env:
121+     #      NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
122+     
123+     - name : Create GitHub Release 
124+       uses : softprops/action-gh-release@v2 
125+       with :
126+         files : | 
127+           aws-lambda-ric-*.tgz 
128+           checksums.sha256 
129+           checksums.sha512 
130+           checksums.txt 
131+ generate_release_notes : true 
0 commit comments