Skip to content

Commit

Permalink
Merge pull request #112 from gliderlabs/automate-releases
Browse files Browse the repository at this point in the history
feat: add ability to create releases from a github workflow
  • Loading branch information
josegonzalez authored May 19, 2024
2 parents 60cb182 + 0635a43 commit 1540c00
Show file tree
Hide file tree
Showing 6 changed files with 240 additions and 0 deletions.
1 change: 1 addition & 0 deletions .github/.ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.3.1
6 changes: 6 additions & 0 deletions .github/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
source 'https://rubygems.org'

ruby file: ".ruby-version"

gem "fpm"
gem "package_cloud"
68 changes: 68 additions & 0 deletions .github/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
GEM
remote: https://rubygems.org/
specs:
arr-pm (0.0.12)
backports (3.25.0)
cabin (0.9.0)
clamp (1.0.1)
domain_name (0.6.20240107)
dotenv (3.1.2)
fpm (1.15.1)
arr-pm (~> 0.0.11)
backports (>= 2.6.2)
cabin (>= 0.6.0)
clamp (~> 1.0.0)
pleaserun (~> 0.0.29)
rexml
stud
highline (2.0.3)
http-accept (1.7.0)
http-cookie (1.0.5)
domain_name (~> 0.5)
insist (1.0.0)
json_pure (2.3.1)
mime-types (3.5.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2024.0507)
mustache (0.99.8)
netrc (0.11.0)
package_cloud (0.3.14)
highline (~> 2.0.0)
json_pure (~> 2.3.0)
rainbow (= 2.2.2)
rest-client (~> 2.0)
thor (~> 1.2)
pleaserun (0.0.32)
cabin (> 0)
clamp
dotenv
insist
mustache (= 0.99.8)
stud
rainbow (2.2.2)
rake
rake (13.2.1)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.2.8)
strscan (>= 3.0.9)
strscan (3.1.0)
stud (0.0.23)
thor (1.3.1)

PLATFORMS
arm64-darwin-23
ruby

DEPENDENCIES
fpm
package_cloud

RUBY VERSION
ruby 3.3.1p55

BUNDLED WITH
2.5.9
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
---
version: 2
updates:
- package-ecosystem: "bundler"
directory: "/.github"
schedule:
interval: "daily"
- package-ecosystem: "docker"
directory: "/"
schedule:
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/bump-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
name: "bump-version"

# yamllint disable-line rule:truthy
on:
workflow_dispatch:
inputs:
bump_type:
description: "Bump type"
default: "patch"
required: true
type: choice
options:
- patch
- minor
- major

env:
GITHUB_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}

jobs:
bump-version:
name: bump-version
runs-on: ubuntu-22.04

steps:
- name: Checkout
uses: actions/[email protected]
with:
fetch-depth: 0
token: ${{ env.GITHUB_ACCESS_TOKEN }}

- name: Get Latest Tag
id: latest-tag
run: |
echo GIT_LATEST_TAG="$(git describe --tags "$(git rev-list --tags --max-count=1)")" >>"$GITHUB_OUTPUT"
- name: Compute Next Tag
id: next-tag
uses: docker://ghcr.io/dokku/semver-generator:latest
with:
bump: ${{ github.event.inputs.bump_type }}
input: ${{ steps.latest-tag.outputs.GIT_LATEST_TAG }}

- name: Create and Push Tag
run: |
git config --global user.name 'Dokku Bot'
git config --global user.email [email protected]
git tag "$GIT_NEXT_TAG"
git push origin "$GIT_NEXT_TAG"
env:
GIT_NEXT_TAG: ${{ steps.next-tag.outputs.version }}
109 changes: 109 additions & 0 deletions .github/workflows/tagged-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
name: "tagged-release"

# yamllint disable-line rule:truthy
on:
push:
tags:
- "*"

permissions:
attestations: write
id-token: write
contents: write

jobs:
tagged-release:
name: tagged-release
runs-on: ubuntu-22.04
env:
CI_BRANCH: release
PACKAGECLOUD_REPOSITORY: dokku/dokku
VERSION: ${{ github.ref_name }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"

- name: Get Repository Name
id: repo-name
run: |
echo "REPOSITORY_NAME=$(echo "${{ github.repository }}" | cut -d '/' -f 2)" >> $GITHUB_OUTPUT
- name: Build binaries
uses: crazy-max/ghaction-xgo@v3
with:
xgo_version: latest
go_version: 1.21
dest: dist
prefix: ${{ steps.repo-name.outputs.REPOSITORY_NAME }}
targets: darwin/amd64,darwin/arm64,linux/arm64,linux/amd64
v: true
x: false
race: false
ldflags: -s -w -X main.Version=${{ github.ref_name }}
buildmode: default
trimpath: true

- name: Attest Build Provenance - darwin-amd64
uses: actions/[email protected]
with:
subject-path: "dist/${{ steps.repo-name.outputs.REPOSITORY_NAME }}-darwin-amd64"

- name: Attest Build Provenance - darwin-arm64
uses: actions/[email protected]
with:
subject-path: "dist/${{ steps.repo-name.outputs.REPOSITORY_NAME }}-darwin-arm64"

- name: Attest Build Provenance - linux-amd64
uses: actions/[email protected]
with:
subject-path: "dist/${{ steps.repo-name.outputs.REPOSITORY_NAME }}-linux-amd64"

- name: Attest Build Provenance - linux-arm64
uses: actions/[email protected]
with:
subject-path: "dist/${{ steps.repo-name.outputs.REPOSITORY_NAME }}-linux-arm64"

- name: Setup Ruby
uses: ruby/[email protected]
with:
bundler-cache: true
working-directory: .github

- name: Build Debian Packages
run: |
mkdir -p build/linux
cp dist/${{ steps.repo-name.outputs.REPOSITORY_NAME }}-linux-amd64 build/linux/${{ github.repository }}-amd64
cp dist/${{ steps.repo-name.outputs.REPOSITORY_NAME }}-linux-arm64 build/linux/${{ github.repository }}-arm64
bundle exec make build/deb/${{ github.repository }}_${{ github.ref_name }}_arm64.deb
bundle exec make build/deb/${{ github.repository }}_${{ github.ref_name }}_amd64.deb
cp build/deb/*.deb dist/
env:
BUNDLE_GEMFILE: .github/Gemfile

- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/*

- name: Release to PackageCloud
run: bundle exec make release-packagecloud
env:
BUNDLE_GEMFILE: .github/Gemfile
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}

- name: Release
uses: softprops/action-gh-release@v2
with:
files: dist/*
generate_release_notes: true
make_latest: "true"

0 comments on commit 1540c00

Please sign in to comment.