summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2024-12-17 19:11:17 -0500
committerGitHub <noreply@github.com>2024-12-17 19:11:17 -0500
commita97ddf126b43165e9898798bbc3a1edd454d6b41 (patch)
treeffd387acfd8fc41166658987c3cc438968940bd7
parentcec14a0d3eea073732cb9f093a4ee923c131a3ae (diff)
ci(fix): Attempt to fix release.yml (#2293)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
-rw-r--r--.github/workflows/docker-release.yml76
-rw-r--r--.github/workflows/release-please.yml18
-rw-r--r--.github/workflows/release.yml130
-rw-r--r--packaging/alpine/APKBUILD.tmpl38
4 files changed, 146 insertions, 116 deletions
diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml
deleted file mode 100644
index a807d474..00000000
--- a/.github/workflows/docker-release.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-name: Docker Release Build
-
-on:
- release:
- types: [published]
-
-jobs:
- docker-release-build:
- runs-on: ubuntu-latest
- env:
- TAG_NAME: ${{ github.event.release.tag_name }}
- steps:
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3.2.0
- - name: Set up Docker Buildx
- id: buildx
- uses: docker/setup-buildx-action@v3.8.0
- with:
- version: v0.14.1
- driver-opts: |
- image=moby/buildkit:buildx-stable-1
- network=host
- - name: Available platforms
- run: echo {{ `${{ steps.buildx.outputs.platforms }}` }}
- - run: docker info && docker version
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Login to GHCR
- uses: docker/login-action@v3.3.0
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - name: Login to DockerHub
- uses: docker/login-action@v3.3.0
- with:
- # NOTE: DOCKERHUB_TOKEN and DOCKERHUB_USERNAME must be present in https://github.com/hairyhenderson/gomplate/settings
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
- - name: Build & Push
- run: |
- export srcrepo=${{ github.repository}}
-
- make docker-multi COMMIT=${{ github.sha }} DOCKER_REPO=${srcrepo} BUILDX_ACTION=--push
-
- set -x
- export repo=${srcrepo}
- export git_tag=${TAG_NAME}
- export major_version=${git_tag%\.*}
- docker buildx imagetools create -t ${repo}:stable ${srcrepo}:latest
- docker buildx imagetools create -t ${repo}:${git_tag} ${srcrepo}:latest
- docker buildx imagetools create -t ${repo}:${major_version} ${srcrepo}:latest
-
- docker buildx imagetools create -t ${repo}:stable-alpine ${srcrepo}:alpine
- docker buildx imagetools create -t ${repo}:${git_tag}-alpine ${srcrepo}:alpine
- docker buildx imagetools create -t ${repo}:${major_version}-alpine ${srcrepo}:alpine
-
- export repo=gomplate/gomplate
- docker buildx imagetools create -t ${repo}:stable ${srcrepo}:latest
- docker buildx imagetools create -t ${repo}:${git_tag} ${srcrepo}:latest
- docker buildx imagetools create -t ${repo}:${major_version} ${srcrepo}:latest
-
- docker buildx imagetools create -t ${repo}:stable-alpine ${srcrepo}:alpine
- docker buildx imagetools create -t ${repo}:${git_tag}-alpine ${srcrepo}:alpine
- docker buildx imagetools create -t ${repo}:${major_version}-alpine ${srcrepo}:alpine
-
- # and now GHCR
- export repo=ghcr.io/${srcrepo}
- docker buildx imagetools create -t ${repo}:stable ${srcrepo}:latest
- docker buildx imagetools create -t ${repo}:${git_tag} ${srcrepo}:latest
- docker buildx imagetools create -t ${repo}:${major_version} ${srcrepo}:latest
-
- docker buildx imagetools create -t ${repo}:stable-alpine ${srcrepo}:alpine
- docker buildx imagetools create -t ${repo}:${git_tag}-alpine ${srcrepo}:alpine
- docker buildx imagetools create -t ${repo}:${major_version}-alpine ${srcrepo}:alpine
diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml
index 233e4857..97569b97 100644
--- a/.github/workflows/release-please.yml
+++ b/.github/workflows/release-please.yml
@@ -221,21 +221,3 @@ jobs:
--repo ${{ github.repository }}
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
- deploy-homebrew:
- runs-on: ubuntu-latest
- needs: create-release
- steps:
- - uses: actions/create-github-app-token@v1
- id: app-token
- with:
- app-id: ${{ vars.APP_ID }}
- private-key: ${{ secrets.PRIVATE_KEY }}
- - name: Set up Homebrew
- id: set-up-homebrew
- uses: Homebrew/actions/setup-homebrew@master
- - name: Bump packages
- uses: Homebrew/actions/bump-packages@master
- with:
- token: ${{ steps.app-token.outputs.token }}
- formulae: gomplate
- fork: false
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 5dd5e6aa..ca59e550 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -7,6 +7,7 @@ on:
permissions:
contents: write
pull-requests: write
+ packages: write
jobs:
deploy-alpine:
@@ -21,6 +22,13 @@ jobs:
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
+ - name: install lab
+ env:
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
+ run: |
+ gh release download --repo zaquestion/lab v0.25.1 -p lab_0.25.1_linux_amd64.tar.gz
+ tar -xzf lab_0.25.1_linux_amd64.tar.gz
+ ./lab --version
- uses: actions/checkout@v4
- name: Retrieve release artifacts
id: artifacts
@@ -33,44 +41,51 @@ jobs:
# need gomplate to template the APKBUILD!
gh release download ${TAG_NAME} --skip-existing -p gomplate_linux-amd64
+ chmod 755 gomplate_linux-amd64
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
- name: checkout alpinelinux/aports
run: |
- git config user.name "${{ github.actor }}"
- git config user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
- git clone https://gitlab.alpinelinux.org/hairyhenderson/aports.git
- git remote add upstream https://gitlab.alpinelinux.org/alpine/aports.git
+ set -ex
+ git config --global user.name "${{ github.actor }}"
+ git config --global user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
+ git clone -v https://gitlab.alpinelinux.org/hairyhenderson/aports.git
cd aports
+ # note: this token expires, so needs to be rotated periodically
+ git remote set-url origin "https://oauth2:${{ secrets.GITLAB_ACCESS_TOKEN }}@gitlab.alpinelinux.org/hairyhenderson/aports.git"
+ git remote add upstream https://gitlab.alpinelinux.org/alpine/aports.git
git checkout master
- name: update fork
run: |
+ set -ex
cd aports
- git fetch upstream
+ git fetch -v upstream
git rebase upstream/master
git push
- name: upgrade gomplate in aports
run: |
+ set -ex
+ export VERSION=${TAG_NAME#v}
+
cd aports/community/gomplate
git checkout -b upgrade-gomplate-aport-${VERSION}
- export VERSION=${TAG_NAME#v}
-
export ENVJSON="{\"version\": \"${VERSION}\", \"sha512\": \"${{ steps.artifacts.outputs.sha512sum }}\" }"
- gomplate_linux-amd64 -c .=env:///ENVJSON\?type=application/json \
+ ../../../gomplate_linux-amd64 -c .=env:///ENVJSON\?type=application/json \
-f ../../../packaging/alpine/APKBUILD.tmpl \
-o APKBUILD
git add APKBUILD
- git commit -S -sm "community/gomplate: upgrade to ${VERSION}"
+ git commit -sm "community/gomplate: upgrade to ${VERSION}"
git push -u origin upgrade-gomplate-aport-${VERSION}
# open a PR
- lab mr create --allow-collaboration \
+ ../../../lab mr create --allow-collaboration \
-m "community/gomplate: upgrade to ${VERSION}" \
-m "https://github.com/${{ github.repository }}/releases/tag/${TAG_NAME}"
deploy-homebrew:
- runs-on: ubuntu-latest
+ # run on macOS - this doesn't work in Linuxbrew
+ runs-on: macos-latest
environment:
name: homebrew
env:
@@ -81,16 +96,6 @@ jobs:
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
- # - name: Retrieve release artifacts
- # id: artifacts
- # run: |
- # # need the checksum and archive
- # gh release download ${TAG_NAME} -p "${TAG_NAME}.sha*"
-
- # echo "sha256sum=$(cat ${TAG_NAME}.sha256)" >> $GITHUB_OUTPUT
- # echo "archive=https://github.com/${{ github.repository }}/archive/refs/tags/${TAG_NAME}.tar.gz" >> $GITHUB_OUTPUT
- # env:
- # GH_TOKEN: ${{ steps.app-token.outputs.token }}
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
@@ -99,4 +104,85 @@ jobs:
with:
token: ${{ steps.app-token.outputs.token }}
formulae: gomplate
- fork: false
+ fork: true
+ deploy-docker:
+ runs-on: ubuntu-latest
+ env:
+ TAG_NAME: ${{ github.event.release.tag_name }}
+ steps:
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3.2.0
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v3.8.0
+ with:
+ version: v0.19.3
+ driver-opts: |
+ image=moby/buildkit:buildx-stable-1
+ network=host
+ - name: Available platforms
+ run: echo {{ `${{ steps.buildx.outputs.platforms }}` }}
+ - run: docker info && docker version
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - uses: actions/create-github-app-token@v1
+ id: app-token
+ with:
+ app-id: ${{ vars.APP_ID }}
+ private-key: ${{ secrets.PRIVATE_KEY }}
+ - name: Login to GHCR
+ uses: docker/login-action@v3.3.0
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ steps.app-token.outputs.token }}
+ - name: Login to DockerHub
+ uses: docker/login-action@v3.3.0
+ with:
+ # NOTE: DOCKERHUB_TOKEN and DOCKERHUB_USERNAME must be present in https://github.com/hairyhenderson/gomplate/settings
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+ - name: Build & Push
+ run: |
+ set -ex
+
+ # seed from the last ghcr.io image(s)
+ docker pull ghcr.io/hairyhenderson/gomplate:latest
+ docker pull ghcr.io/hairyhenderson/gomplate:alpine
+
+ export srcrepo=ghcr.io/${{ github.repository}}
+ export COMMIT=${{ github.sha }}
+
+ make docker-multi COMMIT=${COMMIT} DOCKER_REPO=${srcrepo} BUILDX_ACTION=--push
+
+ set -x
+ export repo=${srcrepo}
+ export git_tag=${TAG_NAME}
+ export major_version=${git_tag%\.*}
+ docker buildx imagetools create -t ${repo}:stable ${srcrepo}:latest
+ docker buildx imagetools create -t ${repo}:${git_tag} ${srcrepo}:latest
+ docker buildx imagetools create -t ${repo}:${major_version} ${srcrepo}:latest
+
+ docker buildx imagetools create -t ${repo}:stable-alpine ${srcrepo}:alpine
+ docker buildx imagetools create -t ${repo}:${git_tag}-alpine ${srcrepo}:alpine
+ docker buildx imagetools create -t ${repo}:${major_version}-alpine ${srcrepo}:alpine
+
+ # and now DockerHub (if we don't get rate-limited)
+ export repo=gomplate/gomplate
+ docker buildx imagetools create -t ${repo}:stable ${srcrepo}:latest
+ docker buildx imagetools create -t ${repo}:${git_tag} ${srcrepo}:latest
+ docker buildx imagetools create -t ${repo}:${major_version} ${srcrepo}:latest
+
+ docker buildx imagetools create -t ${repo}:stable-alpine ${srcrepo}:alpine
+ docker buildx imagetools create -t ${repo}:${git_tag}-alpine ${srcrepo}:alpine
+ docker buildx imagetools create -t ${repo}:${major_version}-alpine ${srcrepo}:alpine
+
+ export repo=hairyhenderon/gomplate
+ docker buildx imagetools create -t ${repo}:stable ${srcrepo}:latest
+ docker buildx imagetools create -t ${repo}:${git_tag} ${srcrepo}:latest
+ docker buildx imagetools create -t ${repo}:${major_version} ${srcrepo}:latest
+
+ docker buildx imagetools create -t ${repo}:stable-alpine ${srcrepo}:alpine
+ docker buildx imagetools create -t ${repo}:${git_tag}-alpine ${srcrepo}:alpine
+ docker buildx imagetools create -t ${repo}:${major_version}-alpine ${srcrepo}:alpine
diff --git a/packaging/alpine/APKBUILD.tmpl b/packaging/alpine/APKBUILD.tmpl
new file mode 100644
index 00000000..38894597
--- /dev/null
+++ b/packaging/alpine/APKBUILD.tmpl
@@ -0,0 +1,38 @@
+# Maintainer: Dave Henderson <dhenderson@gmail.com>
+pkgname=gomplate
+pkgver={{.version}}
+pkgrel=0
+pkgdesc="A versatile Go template processor"
+url="https://github.com/hairyhenderson/gomplate"
+arch="all"
+license="MIT"
+depends="ca-certificates"
+makedepends="go"
+options="net"
+source="$pkgname-$pkgver.tar.gz::https://github.com/hairyhenderson/gomplate/archive/v$pkgver.tar.gz"
+
+export GOFLAGS="$GOFLAGS -trimpath -modcacherw"
+export GOCACHE="${GOCACHE:-"$srcdir/go-cache"}"
+export GOTMPDIR="${GOTMPDIR:-"$srcdir"}"
+export GOMODCACHE="${GOMODCACHE:-"$srcdir/go"}"
+
+build() {
+ # CGO needs to be able to be enabled for -buildmode=pie, setting it to an
+ # empty string is a workaround for now.
+ # See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/15809
+ make build \
+ CGO_ENABLED= \
+ VERSION="$pkgver" \
+ COMMIT="unknown"
+}
+
+check() {
+ # Note: make test (that runs go test -race) doesn't work.
+ go test -v
+}
+
+package() {
+ install -D -m 755 bin/gomplate "$pkgdir"/usr/bin/gomplate
+}
+
+sha512sums="{{.sha512}} gomplate-{{.version}}.tar.gz"