build(deps): adder 0.31.0 and gouroboros 0.130.1 (#379) #344
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: publish | |
on: | |
push: | |
branches: ['main'] | |
tags: | |
- 'v*.*.*' | |
concurrency: ${{ github.ref }} | |
jobs: | |
create-draft-release: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
outputs: | |
RELEASE_ID: ${{ steps.create-release.outputs.result }} | |
steps: | |
- run: "echo \"RELEASE_TAG=${GITHUB_REF#refs/tags/}\" >> $GITHUB_ENV" | |
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 https://github.com/actions/github-script/releases/tag/v7.0.1 | |
id: create-release | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
result-encoding: string | |
script: | | |
try { | |
const response = await github.rest.repos.createRelease({ | |
draft: true, | |
generate_release_notes: true, | |
name: process.env.RELEASE_TAG, | |
owner: context.repo.owner, | |
prerelease: false, | |
repo: context.repo.repo, | |
tag_name: process.env.RELEASE_TAG, | |
}); | |
return response.data.id; | |
} catch (error) { | |
core.setFailed(error.message); | |
} | |
build-binaries: | |
strategy: | |
matrix: | |
os: [linux, darwin, freebsd, windows] | |
arch: [amd64, arm64] | |
runs-on: ubuntu-latest | |
needs: [create-draft-release] | |
permissions: | |
actions: write | |
attestations: write | |
checks: write | |
contents: write | |
id-token: write | |
packages: write | |
statuses: write | |
steps: | |
- run: "echo \"RELEASE_TAG=${GITHUB_REF#refs/tags/}\" >> $GITHUB_ENV" | |
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 https://github.com/actions/checkout/releases/tag/v5.0.0 | |
with: | |
fetch-depth: '0' | |
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 https://github.com/actions/setup-go/releases/tag/v5.5.0 | |
with: | |
go-version: 1.24.x | |
- name: Build binary | |
run: GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} make build | |
- name: Upload release asset | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
_filename=cdnsd-${{ env.RELEASE_TAG }}-${{ matrix.os }}-${{ matrix.arch }} | |
if [[ ${{ matrix.os }} == windows ]]; then | |
_filename=${_filename}.exe | |
fi | |
cp cdnsd ${_filename} | |
curl \ | |
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
-H "Content-Type: application/octet-stream" \ | |
--data-binary @${_filename} \ | |
https://uploads.github.com/repos/${{ github.repository_owner }}/cdnsd/releases/${{ needs.create-draft-release.outputs.RELEASE_ID }}/assets?name=${_filename} | |
- name: Attest binary | |
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0 https://github.com/actions/attest-build-provenance/releases/tag/v2.4.0 | |
with: | |
subject-path: 'cdnsd' | |
build-images: | |
runs-on: ubuntu-latest | |
needs: [create-draft-release] | |
permissions: | |
actions: write | |
attestations: write | |
checks: write | |
contents: write | |
id-token: write | |
packages: write | |
statuses: write | |
steps: | |
- run: "echo \"RELEASE_TAG=${GITHUB_REF#refs/tags/}\" >> $GITHUB_ENV" | |
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 https://github.com/actions/checkout/releases/tag/v5.0.0 | |
with: | |
fetch-depth: '0' | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0 https://github.com/docker/setup-qemu-action/releases/tag/v3.6.0 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 https://github.com/docker/setup-buildx-action/releases/tag/v3.11.1 | |
- name: Login to Docker Hub | |
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 https://github.com/docker/login-action/releases/tag/v3.5.0 | |
with: | |
username: blinklabs | |
password: ${{ secrets.DOCKER_PASSWORD }} # uses token | |
- name: Login to GHCR | |
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 https://github.com/docker/login-action/releases/tag/v3.5.0 | |
with: | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
registry: ghcr.io | |
- id: meta | |
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0 https://github.com/docker/metadata-action/releases/tag/v5.8.0 | |
with: | |
images: | | |
blinklabs/cdnsd | |
ghcr.io/${{ github.repository }} | |
tags: | | |
# Only version, no revision | |
type=match,pattern=v(.*)-(.*),group=1 | |
# branch | |
type=ref,event=branch | |
# semver | |
type=semver,pattern={{version}} | |
- name: Build images | |
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 https://github.com/docker/build-push-action/releases/tag/v6.18.0 | |
id: push | |
with: | |
outputs: "type=registry,push=true" | |
platforms: linux/amd64,linux/arm64 | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Attest Docker Hub image | |
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0 https://github.com/actions/attest-build-provenance/releases/tag/v2.4.0 | |
with: | |
subject-name: index.docker.io/blinklabs/cdnsd | |
subject-digest: ${{ steps.push.outputs.digest }} | |
push-to-registry: true | |
- name: Attest GHCR image | |
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0 https://github.com/actions/attest-build-provenance/releases/tag/v2.4.0 | |
with: | |
subject-name: ghcr.io/${{ github.repository }} | |
subject-digest: ${{ steps.push.outputs.digest }} | |
push-to-registry: true | |
# Update Docker Hub from README | |
- name: Docker Hub Description | |
uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2 https://github.com/peter-evans/dockerhub-description/releases/tag/v4.0.2 | |
with: | |
username: blinklabs | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
repository: blinklabs/cdnsd | |
readme-filepath: ./README.md | |
short-description: "DNS resolver for Handshake SLDs on Cardano" | |
finalize-release: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
needs: [create-draft-release, build-binaries, build-images] | |
steps: | |
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 https://github.com/actions/github-script/releases/tag/v7.0.1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
try { | |
await github.rest.repos.updateRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: ${{ needs.create-draft-release.outputs.RELEASE_ID }}, | |
draft: false, | |
}); | |
} catch (error) { | |
core.setFailed(error.message); | |
} |