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:
|
||||
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
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/*
|
||||
|
||||
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 \
|
||||
&& 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
|
||||
# https://downloads.tuxfamily.org/godotengine/
|
||||
ENV GODOT_VERSION "3.4.2"
|
||||
ARG GODOT_VERSION="3.4.2"
|
||||
|
||||
# Example values: stable, beta3, rc1, alpha2, etc.
|
||||
# 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)
|
||||
# e.g. SUBDIR "/beta3"
|
||||
|
||||
Reference in New Issue
Block a user