-
Notifications
You must be signed in to change notification settings - Fork 2
153 lines (152 loc) · 5.16 KB
/
Copy pathgoreleaser.yml
File metadata and controls
153 lines (152 loc) · 5.16 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
on:
workflow_call:
inputs:
cosign-version:
required: false
type: string
default: "v2.6.2"
enable-packages-upload:
required: false
type: boolean
default: false
enable-gpg-sign:
required: false
type: boolean
default: false
goprivate:
required: false
type: string
default: go.step.sm/,github.com/smallstep/
go-version:
required: false
type: string
default: "stable"
is-prerelease:
required: false
type: boolean
default: true
os-dependencies:
required: false
type: string
runs-on:
required: false
type: string
default: "ubuntu-latest"
secrets:
SSH_PRIVATE_KEY:
required: false
GORELEASER_PAT:
required: true
GORELEASER_KEY:
required: true
PAT:
required: false
AWS_S3_BUCKET:
required: false
AWS_S3_REGION:
required: true
AWS_ACCESS_KEY_ID:
required: false
AWS_SECRET_ACCESS_KEY:
required: false
GPG_PRIVATE_KEY:
required: false
GPG_PRIVATE_KEY_PASSWORD:
required: false
GOOGLE_CLOUD_WORKLOAD_IDENTITY_PROVIDER:
required: false
GOOGLE_CLOUD_GITHUB_SERVICE_ACCOUNT:
required: false
GOOGLE_CLOUD_PACKAGES_PROJECT_ID:
required: false
jobs:
goreleaser:
name: Upload Assets To Github w/ goreleaser
runs-on: ${{ inputs.runs-on }}
permissions:
id-token: write
contents: write
packages: write
env:
GOPRIVATE: ${{ inputs.goprivate }}
GPG_PRIVATE_KEY_FILE: "0x889B19391F774443-Certify.key"
steps:
- name: Set IS_PRERELEASE
run: echo "IS_PRERELEASE=${{ inputs.is-prerelease }}" >> "$GITHUB_ENV"
- name: Install Dependencies # Some dependencies require this package
if: ${{ inputs.os-dependencies != '' }}
env:
OS_DEPS: ${{ inputs.os-dependencies }}
run: |
sudo apt-get update
# shellcheck disable=SC2086
sudo apt-get install ${OS_DEPS}
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- run: git fetch --force --tags
- name: Set up Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version: "${{ inputs.go-version }}"
check-latest: true
- name: Setup SSH key for private dependencies
uses: webfactory/ssh-agent@e83874834305fe9a4a2997156cb26c5de65a8555 # v0.10.0
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
if: ${{ env.SSH_PRIVATE_KEY != '' }}
with:
ssh-private-key: |
${{ secrets.SSH_PRIVATE_KEY }}
- name: Reconfigure Git for private repos
env:
PAT: ${{ secrets.PAT }}
if: ${{ env.PAT != '' }}
run: |
git config --global url.https://${{ secrets.PAT }}@github.com/.insteadOf git+ssh://[email protected]
git config --global [email protected]:.insteadOf https://github.com/
- name: Install cosign
uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
with:
cosign-release: "${{ inputs.cosign-version }}"
- name: Get Release Date
id: release_date
run: |
RELEASE_DATE=$(date -u +"%y-%m-%d")
echo "RELEASE_DATE=${RELEASE_DATE}" >> "${GITHUB_ENV}"
- name: Authenticate to Google Cloud
if: inputs.enable-packages-upload
id: gcloud-auth
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3
with:
token_format: access_token
workload_identity_provider: ${{ secrets.GOOGLE_CLOUD_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GOOGLE_CLOUD_GITHUB_SERVICE_ACCOUNT }}
- name: Set up Google Cloud SDK
if: inputs.enable-packages-upload
uses: google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db # v3
with:
project_id: ${{ secrets.GOOGLE_CLOUD_PACKAGES_PROJECT_ID }}
- name: Write GPG private key to file
if: inputs.enable-packages-upload || inputs.enable-gpg-sign
run: |
echo "${GPG_PRIVATE_KEY}" > "${GPG_PRIVATE_KEY_FILE}"
shell: bash
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
- name: Run GoReleaser Pro
uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7.2.3
with:
distribution: goreleaser-pro
version: "v2.10.2"
args: release --clean
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_S3_REGION: ${{ secrets.AWS_S3_REGION }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_TOKEN: ${{ secrets.GORELEASER_PAT }}
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
NFPM_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSWORD }}
RELEASE_DATE: ${{ env.RELEASE_DATE }}