Automate image release process (#79)

This commit is contained in:
Adriano Orioli
2022-03-31 23:28:02 +02:00
committed by GitHub
parent 685c022b8f
commit 83ead0139f
5 changed files with 149 additions and 7 deletions

56
.github/workflows/check-release.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
name: "Check Releases"
on:
schedule:
- cron: '27 23 * * *'
push:
branches:
- master
jobs:
fetch:
name: Fetch Latest Godot Engine Release
runs-on: ubuntu-20.04
outputs:
release_tag: ${{ steps.parse.outputs.tag }}
json: ${{ steps.get_latest_release.outputs.data }}
steps:
- uses: octokit/request-action@v2.x
id: get_latest_release
with:
route: GET /repos/godotengine/godot/releases/latest
owner: octokit
repo: request-action
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- id: parse
run: |
TAG=$(echo '${{ steps.get_latest_release.outputs.data }}' | jq --raw-output .tag_name)
echo "::set-output name=tag::$TAG"
current:
name: Fetch Current Godot CI release
runs-on: ubuntu-20.04
outputs:
release_tag: ${{ steps.parse.outputs.tag }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- id: parse
run: echo "::set-output name=tag::$(git tag --list --sort=-creatordate | head --lines 1)"
create:
needs: [fetch, current]
name: Create New Godot CI Release
runs-on: ubuntu-20.04
if: needs.fetch.outputs.release_tag != needs.current.outputs.release_tag
steps:
- uses: actions/checkout@v3
- run: echo '${{ needs.fetch.outputs.json }}' | jq --raw-output .body | sed 's/\\r\\n/\n/g' > body.txt
- run: |
git config user.name github-actions
git config user.email github-actions@github.com
git tag ${{ needs.fetch.outputs.release_tag }}
git push
- uses: softprops/action-gh-release@v0.1.14
with:
body_path: body.txt
tag_name: ${{ needs.fetch.outputs.release_tag }}
token: ${{ secrets.PAT }}

View File

@@ -8,7 +8,7 @@ env:
jobs:
export-windows:
name: Windows Export
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
container:
image: barichello/godot-ci:3.3.4
steps:
@@ -33,7 +33,7 @@ jobs:
export-linux:
name: Linux Export
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
container:
image: barichello/godot-ci:3.3.4
steps:
@@ -58,7 +58,7 @@ jobs:
export-web:
name: Web Export
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
container:
image: barichello/godot-ci:3.3.4
steps:
@@ -80,6 +80,9 @@ jobs:
with:
name: web
path: build/web
- name: Install rsync 📚
run: |
apt-get update && apt-get install -y rsync
- name: Deploy to GitHub Pages 🚀
uses: JamesIves/github-pages-deploy-action@releases/v4
with:
@@ -88,7 +91,7 @@ jobs:
export-mac:
name: Mac Export
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
container:
image: barichello/godot-ci:3.3.4
steps:

83
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
name: Release
on:
release:
types: [released]
env:
IMAGE_NAME: godot-ci
jobs:
version:
name: Get Version
runs-on: ubuntu-20.04
outputs:
version: ${{ steps.calculate.outputs.version }}
release_name: ${{ steps.calculate.outputs.release_name }}
steps:
- id: calculate
run: |
REF_NAME=${{ github.ref_name }}
echo "::set-output name=version::${REF_NAME%-*}"
echo "::set-output name=release_name::${REF_NAME#*-}"
build:
name: Build Image
runs-on: ubuntu-20.04
needs: [version]
steps:
- uses: actions/checkout@v3
- run: echo IMAGE_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.14.1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker images
uses: docker/build-push-action@v2.9.0
with:
context: .
file: Dockerfile
push: true
tags: |
ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.version }}
ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.version }}
build-args: |
GODOT_VERSION=${{ needs.version.outputs.version }}
build-mono:
name: Build Mono Image
runs-on: ubuntu-20.04
needs: [version]
steps:
- uses: actions/checkout@v3
- run: echo IMAGE_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.14.1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker images
uses: docker/build-push-action@v2.9.0
with:
context: .
file: mono.Dockerfile
push: true
tags: |
ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:mono-${{ needs.version.outputs.version }}
ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:mono-latest
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:mono-latest
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:mono-${{ needs.version.outputs.version }}
build-args: |
GODOT_VERSION=${{ needs.version.outputs.version }}
RELEASE_NAME=${{ needs.version.outputs.release_name }}