Automate image release process (#79)
This commit is contained in:
56
.github/workflows/check-release.yml
vendored
Normal file
56
.github/workflows/check-release.yml
vendored
Normal 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 }}
|
||||||
11
.github/workflows/godot-ci.yml
vendored
11
.github/workflows/godot-ci.yml
vendored
@@ -8,7 +8,7 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
export-windows:
|
export-windows:
|
||||||
name: Windows Export
|
name: Windows Export
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
container:
|
container:
|
||||||
image: barichello/godot-ci:3.3.4
|
image: barichello/godot-ci:3.3.4
|
||||||
steps:
|
steps:
|
||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
|
|
||||||
export-linux:
|
export-linux:
|
||||||
name: Linux Export
|
name: Linux Export
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
container:
|
container:
|
||||||
image: barichello/godot-ci:3.3.4
|
image: barichello/godot-ci:3.3.4
|
||||||
steps:
|
steps:
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
|
|
||||||
export-web:
|
export-web:
|
||||||
name: Web Export
|
name: Web Export
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
container:
|
container:
|
||||||
image: barichello/godot-ci:3.3.4
|
image: barichello/godot-ci:3.3.4
|
||||||
steps:
|
steps:
|
||||||
@@ -80,6 +80,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: web
|
name: web
|
||||||
path: build/web
|
path: build/web
|
||||||
|
- name: Install rsync 📚
|
||||||
|
run: |
|
||||||
|
apt-get update && apt-get install -y rsync
|
||||||
- name: Deploy to GitHub Pages 🚀
|
- name: Deploy to GitHub Pages 🚀
|
||||||
uses: JamesIves/github-pages-deploy-action@releases/v4
|
uses: JamesIves/github-pages-deploy-action@releases/v4
|
||||||
with:
|
with:
|
||||||
@@ -88,7 +91,7 @@ jobs:
|
|||||||
|
|
||||||
export-mac:
|
export-mac:
|
||||||
name: Mac Export
|
name: Mac Export
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
container:
|
container:
|
||||||
image: barichello/godot-ci:3.3.4
|
image: barichello/godot-ci:3.3.4
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
83
.github/workflows/release.yml
vendored
Normal file
83
.github/workflows/release.yml
vendored
Normal 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 }}
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
||||||
ENV GODOT_VERSION "3.4.2"
|
ARG GODOT_VERSION="3.4.2"
|
||||||
|
|
||||||
RUN wget https://downloads.tuxfamily.org/godotengine/${GODOT_VERSION}/Godot_v${GODOT_VERSION}-stable_linux_headless.64.zip \
|
RUN wget https://downloads.tuxfamily.org/godotengine/${GODOT_VERSION}/Godot_v${GODOT_VERSION}-stable_linux_headless.64.zip \
|
||||||
&& wget https://downloads.tuxfamily.org/godotengine/${GODOT_VERSION}/Godot_v${GODOT_VERSION}-stable_export_templates.tpz \
|
&& wget https://downloads.tuxfamily.org/godotengine/${GODOT_VERSION}/Godot_v${GODOT_VERSION}-stable_export_templates.tpz \
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
|
|
||||||
# When in doubt see the downloads page
|
# When in doubt see the downloads page
|
||||||
# https://downloads.tuxfamily.org/godotengine/
|
# https://downloads.tuxfamily.org/godotengine/
|
||||||
ENV GODOT_VERSION "3.4.2"
|
ARG GODOT_VERSION="3.4.2"
|
||||||
|
|
||||||
# Example values: stable, beta3, rc1, alpha2, etc.
|
# Example values: stable, beta3, rc1, alpha2, etc.
|
||||||
# Also change the SUBDIR property when NOT using stable
|
# Also change the SUBDIR property when NOT using stable
|
||||||
ENV RELEASE_NAME "stable"
|
ARG RELEASE_NAME="stable"
|
||||||
|
|
||||||
# This is only needed for non-stable builds (alpha, beta, RC)
|
# This is only needed for non-stable builds (alpha, beta, RC)
|
||||||
# e.g. SUBDIR "/beta3"
|
# e.g. SUBDIR "/beta3"
|
||||||
|
|||||||
Reference in New Issue
Block a user