-
Notifications
You must be signed in to change notification settings - Fork 2
133 lines (111 loc) · 4 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Build
on: [push, pull_request]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node-version: [12.x]
os: [ubuntu-latest]
steps:
- id: setup-node
name: Setup Node
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Check out code repository source code
uses: actions/checkout@v2
- name: Install dependencies
run: yarn
- name: Verify that Docker image builds
run: docker build .
npm:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: test
outputs:
didpublishnpm: ${{ steps.build-and-publish.outputs.didpublishnpm }}
strategy:
fail-fast: false
matrix:
node: [12]
steps:
- name: Initialize Output
run: echo "::set-output name=didpublishnpm::false"
- name: Check out repo
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Check if publish needed
run: |
name="$(jq -r .name package.json)"
npmver="$(npm show $name version || echo v0.0.0)"
pkgver="$(jq -r .version package.json)"
echo "pkgver=$pkgver" >> $GITHUB_ENV
if [ "$npmver" = "$pkgver" ]
then
echo "Package version ($pkgver) is the same as last published NPM version ($npmver), skipping publish."
else
echo "Package version ($pkgver) is different from latest NPM version ($npmver), publishing!"
echo "shouldpublishnpm=true" >> $GITHUB_ENV
fi
- name: Setup Node
if: env.shouldpublishnpm
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Build and Publish
id: build-and-publish
if: env.shouldpublishnpm
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
run: |
echo "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}" > .npmrc
yarn install
npm publish --access public
echo "::set-output name=didpublishnpm::true"
docker:
runs-on: ubuntu-latest
needs: [test]
steps:
- name: Check out source code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Login to GitHub Container Registry
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- uses: actions/setup-dotnet@v2
with:
dotnet-version: '6.0.x'
# Generate tag for chart without "v" prefix
- name: Install GitVersion
uses: gittools/actions/gitversion/[email protected]
with:
versionSpec: '5.x'
- name: Determine Version
id: gitversion
uses: gittools/actions/gitversion/[email protected]
with:
useConfigFile: true
configFilePath: GitVersion.yml
- name: Display GitVersion outputs
run: |
echo "ShortSha: ${{ steps.gitversion.outputs.ShortSha }}"
- name: Build and Tag the Docker image (This commit - ShortSHA)
run: |
docker build . --file Dockerfile --tag ghcr.io/jupiterone/node-cdx-bom:${{ steps.gitversion.outputs.ShortSha }}
- name: Push the current Docker image tag
run: |
docker push ghcr.io/jupiterone/node-cdx-bom:${{ steps.gitversion.outputs.ShortSha }}
- name: Build and Tag the Docker image - Only main branch (Respect version from package.json)
if: github.ref == 'refs/heads/main'
run: |
pkgver="$(jq -r .version package.json)"
echo "pkgver=$pkgver" >> $GITHUB_ENV
docker build . --file Dockerfile --tag ghcr.io/jupiterone/node-cdx-bom:latest --tag ghcr.io/jupiterone/node-cdx-bom:$pkgver
- name: Push the latest and stable Docker image tags
if: github.ref == 'refs/heads/main'
run: |
docker push ghcr.io/jupiterone/node-cdx-bom:latest
docker push ghcr.io/jupiterone/node-cdx-bom:${{ env.pkgver }}