feat(ci): use ghcr and auto release

- Pushes images to GitHub Container Registry (GHCR) to deprecate Docker Hub
- Auto releases for nightly
- Auto releases for new release
This commit is contained in:
Jef LeCompte
2021-04-13 09:07:09 -04:00
committed by sentriz
parent e6b76915da
commit c2c7eb249f
5 changed files with 77 additions and 25 deletions

View File

@@ -23,5 +23,10 @@ jobs:
uses: golangci/golangci-lint-action@v2
with:
version: v1.33
- name: Update version.go
run: |
_version=v$(cat version.txt)
sed -Ei "s/VERSION = \"v0.0.0\"/VERSION = \"${_version}-nightly\"/g" version/version.go
./_do_gen_handler_tests
- name: Test
run: go test ./...

27
.github/workflows/nightly-release.yaml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: Nightly Release
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch: {}
jobs:
build-release:
name: Build and release Docker image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Update version.go
run: |
_version=v$(cat version.txt)
sed -Ei "s/VERSION = \"v0.0.0\"/VERSION = \"${_version}-nightly\"/g" version/version.go
- name: Login into GitHub Container Registry
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
- name: Build Docker image
run: |
docker build \
-t "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}" \
-t "ghcr.io/${GITHUB_REPOSITORY}:nightly" .
- name: Release Docker image
run: |
docker push "ghcr.io/${GITHUB_REPOSITORY}:${GITHUB_SHA:0:7}"
docker push "ghcr.io/${GITHUB_REPOSITORY}:nightly"

45
.github/workflows/release.yaml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: Release
on:
push:
branches:
- master
jobs:
release-please:
name: Run release-please
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup release please
uses: google-github-actions/release-please-action@v2
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
release-type: simple
changelog-path: CHANGELOG.md
package-name: gonic
build-tag-publish:
name: Build, tag, and publish Docker image
if: ${{ needs.release-please.outputs.release_created }}
needs: release-please
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Update version.go
run: sed -Ei 's/VERSION = "v0.0.0"/VERSION = "${{ needs.release-please.outputs.tag_name }}"/g' version/version.go
- name: Login into GitHub Container Registry
run: echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
- name: Build Docker image
if: ${{ needs.release-please.outputs.release_created }}
run: |
docker build \
-t "ghcr.io/${GITHUB_REPOSITORY}:${{ needs.release-please.outputs.tag_name }}" \
-t "ghcr.io/${GITHUB_REPOSITORY}:latest" .
- name: Release Docker image
run: |
docker push "ghcr.io/${GITHUB_REPOSITORY}:${{ needs.release-please.outputs.tag_name }}"
docker push "ghcr.io/${GITHUB_REPOSITORY}:latest"