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 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
|
name: ci-release
on:
push:
branches:
- master
- 'release-*'
jobs:
release-please:
runs-on: ubuntu-latest
outputs:
releases_created: ${{ steps.release-please.outputs.releases_created }}
tag_name: ${{ steps.release-please.outputs.tag_name }}
permissions:
issues: write
contents: write
pull-requests: write
steps:
- id: release-please
name: Release please
uses: googleapis/release-please-action@v4
with:
release-type: go
target-branch: ${{ github.ref_name }}
goreleaser:
needs: release-please
if: needs.release-please.outputs.releases_created == 'true'
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ needs.release-please.outputs.tag_name }}
- name: Install syft
uses: anchore/sbom-action/download-syft@v0
- name: Setup Cosign CLI
uses: sigstore/cosign-installer@v3
- name: Install goreleaser
run: |
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install -y goreleaser libx11-dev
goreleaser --version
- id: semantic-release
name: Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: goreleaser release --release-notes CHANGELOG.md --clean
postrelease-test-ubuntu:
needs: goreleaser
runs-on: ubuntu-latest
env:
TAG: ${{ needs.release-please.outputs.tag_name }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Install deps
run: |
sudo apt install -y libx11-dev
- name: Install GitHub CLI
run: sudo apt install -y gh
- name: Download Linux release archive
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir release
gh release download "$TAG" \
--repo ${{ github.repository }} \
--pattern "${{ github.event.repository.name }}_*_linux_amd64.tar.gz" \
--dir release
- name: Extract archive
run: |
mkdir extracted
tar -xzf release/*.tar.gz -C extracted
- name: Run end-to-end tests
run: |
echo "--- Listing all"
ls
echo "--- Listing extracted"
ls ./extracted
echo "--- Running version"
./extracted/${{ github.event.repository.name }} --version
echo "--- Running e2e tests"
NERDLOG_E2E_TEST_NERDLOG_BINARY="${PWD}/extracted/${{ github.event.repository.name }}" make test ARGS='-run TestE2EScenarios'
postrelease-test-macos:
needs: goreleaser
runs-on: macos-latest
env:
TAG: ${{ needs.release-please.outputs.tag_name }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Install deps
run: |
brew update
brew install gawk tmux
- name: Install GitHub CLI
run: |
brew install gh
- name: Download MacOS release archive
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir release
gh release download "$TAG" \
--repo ${{ github.repository }} \
--pattern "${{ github.event.repository.name }}_*_darwin_amd64.tar.gz" \
--dir release
- name: Extract archive
run: |
mkdir extracted
tar -xzf release/*.tar.gz -C extracted
- name: Run end-to-end tests
run: |
echo "--- Listing all"
ls
echo "--- Listing extracted"
ls ./extracted
echo "--- Running version"
./extracted/${{ github.event.repository.name }} --version
echo "--- Running e2e tests"
NERDLOG_E2E_TEST_NERDLOG_BINARY="${PWD}/extracted/${{ github.event.repository.name }}" make test ARGS='-run TestE2EScenarios'
postrelease-test-freebsd:
needs: goreleaser
runs-on: ubuntu-latest
env:
TAG: ${{ needs.release-please.outputs.tag_name }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run e2e tests in FreeBSD VM
uses: vmactions/freebsd-vm@v1
with:
usesh: true
prepare: |
pkg install -y go git bash gawk tmux
pkg install -y gh
run: |
set -e
# Workaround for git safety checks
git config --global --add safe.directory "${PWD}"
echo "--- Creating release dir"
mkdir release
echo "--- Downloading release archive"
export GH_TOKEN="${{ secrets.GITHUB_TOKEN }}"
gh release download "$TAG" \
--repo ${{ github.repository }} \
--pattern "${{ github.event.repository.name }}_*_freebsd_amd64.tar.gz" \
--dir release
echo "--- Extracting archive"
mkdir extracted
tar -xzf release/*.tar.gz -C extracted
echo "--- Listing all"
ls
echo "--- Listing extracted"
ls ./extracted
echo "--- Running version"
./extracted/${{ github.event.repository.name }} --version
echo "--- Running e2e tests"
NERDLOG_E2E_TEST_NERDLOG_BINARY="${PWD}/extracted/${{ github.event.repository.name }}" make test ARGS='-run TestE2EScenarios'
|