-
Notifications
You must be signed in to change notification settings - Fork 1
132 lines (123 loc) · 5.53 KB
/
publish.yml
File metadata and controls
132 lines (123 loc) · 5.53 KB
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
name: Publish Datadog Serverless Compat NPM packages
on:
workflow_dispatch:
inputs:
publish:
description: 'Build or Build and Publish?'
required: true
type: choice
default: 'Build'
options:
- 'Build'
- 'Build and Publish'
version:
description: 'NPM package version (x.y.z) — required when running on a branch; auto-parsed from tag when running on a datadog-serverless-compat/v<x.y.z> tag'
required: false
type: string
permissions:
id-token: write # For OIDC npm publishing with provenance
jobs:
build:
strategy:
fail-fast: false
matrix:
runner: [ubuntu-24.04, ubuntu-24.04-arm, windows-2022, macos-14]
uses: ./.github/workflows/build-datadog-serverless-compat.yml
with:
runner: ${{ matrix.runner }}
package:
runs-on: ubuntu-24.04
needs: build
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
sparse-checkout: npm
sparse-checkout-cone-mode: false
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0
with:
name: linux-amd64
path: target/linux-amd64
- run: |
chmod +x target/linux-amd64/datadog-serverless-compat
upx target/linux-amd64/datadog-serverless-compat --lzma
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0
with:
name: linux-arm64
path: target/linux-arm64
- run: |
chmod +x target/linux-arm64/datadog-serverless-compat
upx target/linux-arm64/datadog-serverless-compat --lzma
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0
with:
name: windows-amd64
path: target/windows-amd64
- run: upx target/windows-amd64/datadog-serverless-compat.exe --lzma
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0
with:
name: windows-ia32
path: target/windows-ia32
- run: upx target/windows-ia32/datadog-serverless-compat.exe --lzma
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0
with:
name: darwin-arm64
path: target/darwin-arm64
- run: chmod +x target/darwin-arm64/datadog-serverless-compat
- name: Determine version
id: determine-version
env:
INPUT_VERSION: ${{ inputs.version }}
run: |
if [[ "$GITHUB_REF" == refs/tags/datadog-serverless-compat/v* ]]; then
VERSION="${GITHUB_REF#refs/tags/datadog-serverless-compat/v}"
elif [[ -n "$INPUT_VERSION" ]]; then
VERSION="$INPUT_VERSION"
else
echo "Error: version input is required when not running on a datadog-serverless-compat/v<x.y.z> tag"
exit 1
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
- name: Package binaries into npm packages
env:
VERSION: ${{ steps.determine-version.outputs.version }}
run: |
mkdir -p npm/datadog-serverless-compat-linux-x64/bin
cp target/linux-amd64/datadog-serverless-compat npm/datadog-serverless-compat-linux-x64/bin/
npm --prefix npm/datadog-serverless-compat-linux-x64 pkg set version="$VERSION"
mkdir -p npm/datadog-serverless-compat-linux-arm64/bin
cp target/linux-arm64/datadog-serverless-compat npm/datadog-serverless-compat-linux-arm64/bin/
npm --prefix npm/datadog-serverless-compat-linux-arm64 pkg set version="$VERSION"
mkdir -p npm/datadog-serverless-compat-win32-x64/bin
cp target/windows-amd64/datadog-serverless-compat.exe npm/datadog-serverless-compat-win32-x64/bin/
npm --prefix npm/datadog-serverless-compat-win32-x64 pkg set version="$VERSION"
mkdir -p npm/datadog-serverless-compat-win32-ia32/bin
cp target/windows-ia32/datadog-serverless-compat.exe npm/datadog-serverless-compat-win32-ia32/bin/
npm --prefix npm/datadog-serverless-compat-win32-ia32 pkg set version="$VERSION"
mkdir -p npm/datadog-serverless-compat-darwin-arm64/bin
cp target/darwin-arm64/datadog-serverless-compat npm/datadog-serverless-compat-darwin-arm64/bin/
npm --prefix npm/datadog-serverless-compat-darwin-arm64 pkg set version="$VERSION"
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2
with:
name: npm-packages
path: npm/
retention-days: 3
publish:
if: ${{ inputs.publish == 'Build and Publish' }}
runs-on: ubuntu-24.04
environment: Production
needs: package
steps:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0
with:
name: npm-packages
path: npm/
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: "22.x"
registry-url: 'https://registry.npmjs.org'
- name: Publish npm packages
run: |
npm publish ./npm/datadog-serverless-compat-linux-x64 --provenance --access public
npm publish ./npm/datadog-serverless-compat-linux-arm64 --provenance --access public
npm publish ./npm/datadog-serverless-compat-win32-x64 --provenance --access public
npm publish ./npm/datadog-serverless-compat-win32-ia32 --provenance --access public
npm publish ./npm/datadog-serverless-compat-darwin-arm64 --provenance --access public