diff --git a/.github/workflows/check-release.yml b/.github/workflows/check-release.yml new file mode 100644 index 0000000..bb0e794 --- /dev/null +++ b/.github/workflows/check-release.yml @@ -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 }} diff --git a/.github/workflows/godot-ci.yml b/.github/workflows/godot-ci.yml index 3306236..39c1f6d 100644 --- a/.github/workflows/godot-ci.yml +++ b/.github/workflows/godot-ci.yml @@ -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: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c53fc13 --- /dev/null +++ b/.github/workflows/release.yml @@ -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 }} + diff --git a/Dockerfile b/Dockerfile index feb0adc..58ce96d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 \ diff --git a/mono.Dockerfile b/mono.Dockerfile index 7e06e0e..3163907 100644 --- a/mono.Dockerfile +++ b/mono.Dockerfile @@ -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"