-
-
Notifications
You must be signed in to change notification settings - Fork 128
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Special tactics * Create extra workflow for legacy images
- Loading branch information
1 parent
9fab31b
commit 349c738
Showing
4 changed files
with
188 additions
and
2 deletions.
There are no files selected for viewing
180 changes: 180 additions & 0 deletions
180
.github/workflows/new-legacy-editor-image-requested.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,180 @@ | ||
name: New Editor Version 🗔 | ||
|
||
on: | ||
repository_dispatch: | ||
types: [new_legacy_editor_image_requested] | ||
|
||
# Further reading: | ||
# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#repository_dispatch | ||
# https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#create-a-repository-dispatch-event | ||
# https://developer.github.com/webhooks/event-payloads/#repository_dispatch | ||
|
||
jobs: | ||
buildImage: | ||
name: "🛠 Build unityci/editor (${{ matrix.targetPlatform }})" | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
targetPlatform: | ||
- base # Base is a special name, which indicates that no modules are installed, like with linux-mono on ubuntu | ||
# - linux-il2cpp | ||
- windows-mono | ||
- mac-mono | ||
- ios | ||
- android | ||
- webgl | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
########################### | ||
# Variables # | ||
########################### | ||
- name: Show hook input | ||
run: | | ||
echo "Event ${{ github.event.event_type }}" | ||
echo "jobId: ${{ github.event.client_payload.jobId }}" | ||
echo "Unity editor version: ${{ github.event.client_payload.editorVersion }}" | ||
echo "Unity changeset: ${{ github.event.client_payload.changeSet }}" | ||
echo "repoVersion (full): ${{ github.event.client_payload.repoVersionFull }}" | ||
echo "repoVersion (only minor and major): ${{ github.event.client_payload.repoVersionMinor }}" | ||
echo "repoVersion (only major): ${{ github.event.client_payload.repoVersionMajor }}" | ||
- name: Report new build | ||
uses: ./.github/workflows/actions/report-to-backend | ||
with: | ||
token: ${{ secrets.VERSIONING_TOKEN }} | ||
jobId: ${{ github.event.client_payload.jobId }} | ||
status: started | ||
# Build info | ||
imageType: editor | ||
baseOs: ubuntu | ||
repoVersion: ${{ github.event.client_payload.repoVersionFull }} | ||
editorVersion: ${{ github.event.client_payload.editorVersion }} | ||
targetPlatform: ${{ matrix.targetPlatform }} | ||
########################### | ||
# Setup # | ||
########################### | ||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v1 | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v1 | ||
- name: Login to DockerHub | ||
uses: docker/login-action@v1 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
- name: Check if image not already exists | ||
run: | | ||
# Source: https://stackoverflow.com/a/39731444/3593896 | ||
function docker_tag_exists() { | ||
curl --silent -f -lSL https://index.docker.io/v1/repositories/$1/tags/$2 > /dev/null | ||
} | ||
if docker_tag_exists unityci/editor ubuntu-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionFull }} ; then | ||
echo "Image already exists. Exiting." | ||
exit 1 | ||
fi | ||
- name: Cache Docker layers | ||
uses: actions/cache@v2 | ||
with: | ||
path: /tmp/.buildx-cache | ||
key: ${{ github.event.client_payload.repoVersionFull }}-${{ runner.os }}-buildx-editor-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.sha }} | ||
restore-keys: | | ||
${{ github.event.client_payload.repoVersionFull }}-${{ runner.os }}-buildx-editor-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}- | ||
${{ github.event.client_payload.repoVersionFull }}-${{ runner.os }}-buildx-editor-${{ github.event.client_payload.editorVersion }}- | ||
${{ github.event.client_payload.repoVersionFull }}-${{ runner.os }}-buildx-editor- | ||
${{ github.event.client_payload.repoVersionFull }}-${{ runner.os }}-buildx- | ||
########################### | ||
# Free disk space # | ||
########################### | ||
- name: Free disk space | ||
run: .github/workflows/scripts/free_disk_space.sh | ||
########################### | ||
# Pull previous images # | ||
########################### | ||
- name: Pull base image (must exist) | ||
run: docker pull unityci/base:${{ github.event.client_payload.repoVersionFull }} | ||
- name: Pull hub image (must exist) | ||
run: docker pull unityci/hub:${{ github.event.client_payload.repoVersionFull }} | ||
########################### | ||
# Editor image # | ||
########################### | ||
- name: Build and publish | ||
uses: docker/build-push-action@v2 | ||
id: build_editor_image | ||
with: | ||
context: . | ||
file: ./editor/Dockerfile | ||
build-args: | | ||
hubImage=unityci/hub:${{ github.event.client_payload.repoVersionFull }} | ||
baseImage=unityci/base:${{ github.event.client_payload.repoVersionFull }} | ||
version=${{ github.event.client_payload.editorVersion }} | ||
changeSet=${{ github.event.client_payload.changeSet }} | ||
module=${{ matrix.targetPlatform }} | ||
cache-from: type=local,src=/tmp/.buildx-cache | ||
cache-to: type=local,dest=/tmp/.buildx-cache | ||
push: true | ||
tags: | | ||
unityci/editor:ubuntu-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionFull }} | ||
unityci/editor:${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionFull }} | ||
unityci/editor:ubuntu-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionMinor }} | ||
unityci/editor:${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionMinor }} | ||
unityci/editor:ubuntu-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionMajor }} | ||
unityci/editor:${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionMajor }} | ||
### Warning: If we once publish latest, we will have to do it forever. Lets not do that unless it's needed ### | ||
- name: Inspect | ||
run: | | ||
docker buildx imagetools inspect unityci/editor:ubuntu-${{ github.event.client_payload.editorVersion }}-${{ matrix.targetPlatform }}-${{ github.event.client_payload.repoVersionFull }} | ||
- name: Image digest | ||
run: echo ${{ steps.build_editor_image.outputs.digest }} | ||
- name: Update DockerHub description | ||
uses: peter-evans/dockerhub-description@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
repository: unityci/editor | ||
short-description: $(cat ./editor/100-characters-dockerhub-description.txt) | ||
readme-filepath: ./editor/README.md | ||
########################### | ||
# reporting # | ||
########################### | ||
- name: Report publication | ||
if: ${{ success() }} | ||
uses: ./.github/workflows/actions/report-to-backend | ||
with: | ||
token: ${{ secrets.VERSIONING_TOKEN }} | ||
jobId: ${{ github.event.client_payload.jobId }} | ||
status: published | ||
# Build info | ||
imageType: editor | ||
baseOs: ubuntu | ||
repoVersion: ${{ github.event.client_payload.repoVersionFull }} | ||
editorVersion: ${{ github.event.client_payload.editorVersion }} | ||
targetPlatform: ${{ matrix.targetPlatform }} | ||
# Publication info | ||
imageRepo: unityci | ||
imageName: editor | ||
friendlyTag: ${{ github.event.client_payload.repoVersionMinor }} | ||
specificTag: ubuntu-${{ github.event.client_payload.repoVersionFull }} | ||
digest: ${{ steps.build_editor_image.outputs.digest }} | ||
- name: Report failure | ||
if: ${{ failure() || cancelled() }} | ||
uses: ./.github/workflows/actions/report-to-backend | ||
with: | ||
token: ${{ secrets.VERSIONING_TOKEN }} | ||
jobId: ${{ github.event.client_payload.jobId }} | ||
status: failed | ||
# Build info | ||
imageType: editor | ||
baseOs: ubuntu | ||
repoVersion: ${{ github.event.client_payload.repoVersionFull }} | ||
editorVersion: ${{ github.event.client_payload.editorVersion }} | ||
targetPlatform: ${{ matrix.targetPlatform }} | ||
# Failure info | ||
reason: ${{ job.status }} | ||
########################### | ||
# Metrics # | ||
########################### | ||
- name: Disk space after | ||
if: always() | ||
run: df -h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters