|
|
|
name: release
|
|
|
|
|
|
|
|
on:
|
|
|
|
push:
|
|
|
|
tags: [ 'v*' ]
|
|
|
|
|
|
|
|
permissions:
|
|
|
|
contents: write # needed to write releases
|
|
|
|
id-token: write # needed for keyless signing
|
|
|
|
packages: write # needed for ghcr access
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
goreleaser:
|
|
|
|
permissions: # TODO: Segment these jobs to minimize which actions are recieving escalated perms
|
|
|
|
contents: write # needed to write releases
|
|
|
|
id-token: write # needed for keyless signing
|
|
|
|
packages: write # needed for ghcr access
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Unshallow
|
|
|
|
run: git fetch --prune --unshallow
|
|
|
|
- name: Setup Go
|
|
|
|
uses: actions/setup-go@v3
|
|
|
|
with:
|
|
|
|
go-version: 1.19.x
|
|
|
|
- name: Setup QEMU
|
|
|
|
uses: docker/setup-qemu-action@v2
|
|
|
|
- name: Setup Docker Buildx
|
|
|
|
id: buildx
|
|
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
- name: Setup Syft
|
|
|
|
uses: anchore/sbom-action/download-syft@v0
|
|
|
|
- name: Setup Cosign
|
|
|
|
uses: sigstore/cosign-installer@main
|
|
|
|
- name: Setup Kustomize
|
|
|
|
uses: fluxcd/pkg//actions/kustomize@main
|
|
|
|
- name: Login to GitHub Container Registry
|
|
|
|
uses: docker/login-action@v2
|
|
|
|
with:
|
|
|
|
registry: ghcr.io
|
|
|
|
username: fluxcdbot
|
|
|
|
password: ${{ secrets.GHCR_TOKEN }}
|
|
|
|
- name: Login to Docker Hub
|
|
|
|
uses: docker/login-action@v2
|
|
|
|
with:
|
|
|
|
username: fluxcdbot
|
|
|
|
password: ${{ secrets.DOCKER_FLUXCD_PASSWORD }}
|
|
|
|
- name: Generate manifests
|
|
|
|
run: |
|
|
|
|
make cmd/flux/.manifests.done
|
|
|
|
./manifests/scripts/bundle.sh "" ./output manifests.tar.gz
|
|
|
|
kustomize build ./manifests/install > ./output/install.yaml
|
|
|
|
- name: Build CRDs
|
|
|
|
run: |
|
|
|
|
kustomize build manifests/crds > all-crds.yaml
|
|
|
|
# Pinned to commit before https://github.com/fluxcd/pkg/pull/189 due to
|
|
|
|
# introduction faulty behavior.
|
|
|
|
- name: Generate OpenAPI JSON schemas from CRDs
|
|
|
|
uses: fluxcd/pkg//actions/crdjsonschema@49e26aa2ee9e734c3233c560253fd9542afe18ae
|
|
|
|
with:
|
|
|
|
crd: all-crds.yaml
|
|
|
|
output: schemas
|
|
|
|
- name: Archive the OpenAPI JSON schemas
|
|
|
|
run: |
|
|
|
|
tar -czvf ./output/crd-schemas.tar.gz -C schemas .
|
|
|
|
- name: Download release notes utility
|
|
|
|
env:
|
|
|
|
GH_REL_URL: https://github.com/buchanae/github-release-notes/releases/download/0.2.0/github-release-notes-linux-amd64-0.2.0.tar.gz
|
|
|
|
run: cd /tmp && curl -sSL ${GH_REL_URL} | tar xz && sudo mv github-release-notes /usr/local/bin/
|
|
|
|
- name: Generate release notes
|
|
|
|
run: |
|
|
|
|
NOTES="./output/notes.md"
|
|
|
|
echo '## CLI Changelog' > ${NOTES}
|
|
|
|
github-release-notes -org fluxcd -repo flux2 -since-latest-release -include-author >> ${NOTES}
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Run GoReleaser
|
|
|
|
uses: goreleaser/goreleaser-action@v3
|
|
|
|
with:
|
|
|
|
version: latest
|
|
|
|
args: release --release-notes=output/notes.md --skip-validate
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
|
|
|
|
AUR_BOT_SSH_PRIVATE_KEY: ${{ secrets.AUR_BOT_SSH_PRIVATE_KEY }}
|