├── ExampleGameInDirectory ├── debug.keystore.pass.txt ├── input │ └── game.input_binding ├── debug.keystore ├── assets │ ├── background.png │ └── app_icons │ │ ├── icon_114.png │ │ ├── icon_120.png │ │ ├── icon_144.png │ │ ├── icon_152.png │ │ ├── icon_167.png │ │ ├── icon_180.png │ │ ├── icon_192.png │ │ ├── icon_36.png │ │ ├── icon_48.png │ │ ├── icon_57.png │ │ ├── icon_72.png │ │ ├── icon_76.png │ │ └── icon_96.png ├── .gitignore ├── main │ ├── main.atlas │ ├── main.script │ └── main.collection ├── README.md ├── game.project └── .gitattributes ├── static └── img │ ├── change-workflow.png │ ├── logo-workflow.png │ ├── slack-and-diawi.png │ └── build-in-github-actions.png ├── .gitignore ├── README.md └── .github └── workflows └── defold-build.yml /ExampleGameInDirectory/debug.keystore.pass.txt: -------------------------------------------------------------------------------- 1 | android -------------------------------------------------------------------------------- /ExampleGameInDirectory/input/game.input_binding: -------------------------------------------------------------------------------- 1 | mouse_trigger { 2 | input: MOUSE_BUTTON_1 3 | action: "touch" 4 | } 5 | -------------------------------------------------------------------------------- /static/img/change-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/static/img/change-workflow.png -------------------------------------------------------------------------------- /static/img/logo-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/static/img/logo-workflow.png -------------------------------------------------------------------------------- /static/img/slack-and-diawi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/static/img/slack-and-diawi.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/debug.keystore -------------------------------------------------------------------------------- /static/img/build-in-github-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/static/img/build-in-github-actions.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/background.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_114.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_120.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_144.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_152.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_167.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_180.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_192.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_36.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_48.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_57.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_72.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_76.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/assets/app_icons/icon_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamtheater/defold-githubactions-builder/HEAD/ExampleGameInDirectory/assets/app_icons/icon_96.png -------------------------------------------------------------------------------- /ExampleGameInDirectory/.gitignore: -------------------------------------------------------------------------------- 1 | /.internal 2 | /build 3 | .externalToolBuilders 4 | .DS_Store 5 | Thumbs.db 6 | .lock-wscript 7 | *.pyc 8 | .project 9 | .cproject 10 | builtins -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /bob.jar 3 | 4 | /.internal 5 | /build 6 | .externalToolBuilders 7 | .DS_Store 8 | Thumbs.db 9 | .lock-wscript 10 | *.pyc 11 | .project 12 | .cproject 13 | builtins 14 | -------------------------------------------------------------------------------- /ExampleGameInDirectory/main/main.atlas: -------------------------------------------------------------------------------- 1 | images { 2 | image: "/assets/app_icons/icon_180.png" 3 | } 4 | images { 5 | image: "/assets/background.png" 6 | } 7 | margin: 0 8 | extrude_borders: 0 9 | inner_padding: 0 10 | -------------------------------------------------------------------------------- /ExampleGameInDirectory/main/main.script: -------------------------------------------------------------------------------- 1 | function init(self) 2 | msg.post(".", "acquire_input_focus") 3 | msg.post("@render:", "use_fixed_fit_projection", { near = -1, far = 1 }) 4 | end 5 | 6 | function on_input(self, action_id, action) 7 | if action_id == hash("touch") and action.pressed then 8 | print("Touch!") 9 | end 10 | end -------------------------------------------------------------------------------- /ExampleGameInDirectory/README.md: -------------------------------------------------------------------------------- 1 | # Welcome to Defold 2 | 3 | This project was created from the "mobile" project template. This means that the settings in ["game.project"](defold://open?path=/game.project) have been changed to be suitable for a mobile game: 4 | 5 | - The screen size is set to 640x1136 6 | - The projection is set to Fixed Fit 7 | - Orientation is fixed vertically 8 | - Android and iOS icons are set 9 | - Mouse click/single touch is bound to action "touch" 10 | - A simple script in a game object is set up to receive and react to input 11 | - Accelerometer input is turned off (for better battery life) 12 | 13 | [Build and run](defold://build) to see it in action. You can of course alter these settings to fit your needs. 14 | 15 | Check out [the documentation pages](https://defold.com/learn) for examples, tutorials, manuals and API docs. 16 | 17 | If you run into trouble, help is available in [our forum](https://forum.defold.com). 18 | 19 | Happy Defolding! 20 | 21 | --- 22 | -------------------------------------------------------------------------------- /ExampleGameInDirectory/game.project: -------------------------------------------------------------------------------- 1 | [project] 2 | title = ExampleGameInDirectory 3 | 4 | [bootstrap] 5 | main_collection = /main/main.collectionc 6 | 7 | [input] 8 | game_binding = /input/game.input_bindingc 9 | use_accelerometer = 0 10 | 11 | [display] 12 | width = 640 13 | height = 1136 14 | 15 | [ios] 16 | app_icon_120x120 = /assets/app_icons/icon_120.png 17 | app_icon_180x180 = /assets/app_icons/icon_180.png 18 | app_icon_76x76 = /assets/app_icons/icon_76.png 19 | app_icon_152x152 = /assets/app_icons/icon_152.png 20 | app_icon_57x57 = /assets/app_icons/icon_57.png 21 | app_icon_114x114 = /assets/app_icons/icon_114.png 22 | app_icon_72x72 = /assets/app_icons/icon_72.png 23 | app_icon_144x144 = /assets/app_icons/icon_144.png 24 | app_icon_167x167 = /assets/app_icons/icon_167.png 25 | bundle_identifier = com.example.todo 26 | 27 | [osx] 28 | bundle_identifier = com.example.todo 29 | 30 | [android] 31 | app_icon_36x36 = /assets/app_icons/icon_36.png 32 | app_icon_48x48 = /assets/app_icons/icon_48.png 33 | app_icon_72x72 = /assets/app_icons/icon_72.png 34 | app_icon_96x96 = /assets/app_icons/icon_96.png 35 | app_icon_144x144 = /assets/app_icons/icon_144.png 36 | app_icon_192x192 = /assets/app_icons/icon_192.png 37 | input_method = HiddenInputField 38 | 39 | [script] 40 | shared_state = 1 41 | 42 | [physics] 43 | gravity_y = -1000.0 44 | scale = 0.01 45 | 46 | -------------------------------------------------------------------------------- /ExampleGameInDirectory/.gitattributes: -------------------------------------------------------------------------------- 1 | # Defold Protocol Buffer Text Files (https://github.com/github/linguist/issues/5091) 2 | *.animationset linguist-language=JSON5 3 | *.atlas linguist-language=JSON5 4 | *.camera linguist-language=JSON5 5 | *.collection linguist-language=JSON5 6 | *.collectionfactory linguist-language=JSON5 7 | *.collectionproxy linguist-language=JSON5 8 | *.collisionobject linguist-language=JSON5 9 | *.cubemap linguist-language=JSON5 10 | *.display_profiles linguist-language=JSON5 11 | *.factory linguist-language=JSON5 12 | *.font linguist-language=JSON5 13 | *.gamepads linguist-language=JSON5 14 | *.go linguist-language=JSON5 15 | *.gui linguist-language=JSON5 16 | *.input_binding linguist-language=JSON5 17 | *.label linguist-language=JSON5 18 | *.material linguist-language=JSON5 19 | *.mesh linguist-language=JSON5 20 | *.model linguist-language=JSON5 21 | *.particlefx linguist-language=JSON5 22 | *.render linguist-language=JSON5 23 | *.sound linguist-language=JSON5 24 | *.sprite linguist-language=JSON5 25 | *.spinemodel linguist-language=JSON5 26 | *.spinescene linguist-language=JSON5 27 | *.texture_profiles linguist-language=JSON5 28 | *.tilemap linguist-language=JSON5 29 | *.tilesource linguist-language=JSON5 30 | 31 | # Defold JSON Files 32 | *.buffer linguist-language=JSON 33 | 34 | # Defold GLSL Shaders 35 | *.fp linguist-language=GLSL 36 | *.vp linguist-language=GLSL 37 | 38 | # Defold Lua Files 39 | *.editor_script linguist-language=Lua 40 | *.render_script linguist-language=Lua 41 | *.script linguist-language=Lua 42 | *.gui_script linguist-language=Lua 43 | -------------------------------------------------------------------------------- /ExampleGameInDirectory/main/main.collection: -------------------------------------------------------------------------------- 1 | name: "main" 2 | scale_along_z: 0 3 | embedded_instances { 4 | id: "go" 5 | data: "components {\n" 6 | " id: \"main\"\n" 7 | " component: \"/main/main.script\"\n" 8 | " position {\n" 9 | " x: 0.0\n" 10 | " y: 0.0\n" 11 | " z: 0.0\n" 12 | " }\n" 13 | " rotation {\n" 14 | " x: 0.0\n" 15 | " y: 0.0\n" 16 | " z: 0.0\n" 17 | " w: 1.0\n" 18 | " }\n" 19 | "}\n" 20 | "embedded_components {\n" 21 | " id: \"logo\"\n" 22 | " type: \"sprite\"\n" 23 | " data: \"tile_set: \\\"/main/main.atlas\\\"\\n" 24 | "default_animation: \\\"icon_180\\\"\\n" 25 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 26 | "blend_mode: BLEND_MODE_ALPHA\\n" 27 | "\"\n" 28 | " position {\n" 29 | " x: 0.0\n" 30 | " y: 0.0\n" 31 | " z: 0.0\n" 32 | " }\n" 33 | " rotation {\n" 34 | " x: 0.0\n" 35 | " y: 0.0\n" 36 | " z: 0.0\n" 37 | " w: 1.0\n" 38 | " }\n" 39 | "}\n" 40 | "embedded_components {\n" 41 | " id: \"background\"\n" 42 | " type: \"sprite\"\n" 43 | " data: \"tile_set: \\\"/main/main.atlas\\\"\\n" 44 | "default_animation: \\\"background\\\"\\n" 45 | "material: \\\"/builtins/materials/sprite.material\\\"\\n" 46 | "blend_mode: BLEND_MODE_ALPHA\\n" 47 | "\"\n" 48 | " position {\n" 49 | " x: 0.0\n" 50 | " y: 0.0\n" 51 | " z: -1.0\n" 52 | " }\n" 53 | " rotation {\n" 54 | " x: 0.0\n" 55 | " y: 0.0\n" 56 | " z: 0.0\n" 57 | " w: 1.0\n" 58 | " }\n" 59 | "}\n" 60 | "" 61 | position { 62 | x: 320.0 63 | y: 568.0 64 | z: 0.0 65 | } 66 | rotation { 67 | x: 0.0 68 | y: 0.0 69 | z: 0.0 70 | w: 1.0 71 | } 72 | scale3 { 73 | x: 1.0 74 | y: 1.0 75 | z: 1.0 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Defold GitHub Actions Builder 2 | 3 | Defold build workflow for Android & iOS. 4 | 5 | ![Build Github Action](static/img/logo-workflow.png) 6 | 7 | Steps: 8 | 9 | - Builds and signs apps (`.ipa`, `.apk`) using [Bob](https://defold.com/manuals/bob) 10 | - Generate download links from a mobile device using [Diawi](https://www.diawi.com) 11 | - Send generated links to [Slack](https://slack.com) channel 12 | 13 | --- 14 | 15 | ## Start build process 16 | 17 | ### Run workflow 18 | 19 | ![Build Github Action](static/img/build-in-github-actions.png) 20 | 21 | ### Get the links in Slack and install on your mobile device 22 | 23 | ![Result in Slack](static/img/slack-and-diawi.png) 24 | 25 | --- 26 | 27 | ## Setup workflow 28 | 29 | ### Copy 30 | Copy the GitHub workflow file [.github/workflows/defold-build.yml](.github/workflows/defold-build.yml) into our project 31 | 32 | ### Change workflow file 33 | 34 | ![Result in Slack](static/img/change-workflow.png) 35 | 36 | ### Set Secrets variables 37 | Set the required secret variables for GitHub Actions. 38 | 39 | (Section with secrets: GitHub Repository / Settings / Secrets) 40 | 41 | | Secret | Description | 42 | | ----------- | ----------- | 43 | | MACOS_BUILD_CERTIFICATE_BASE64 | Encrypted file content `.p12`, containing Apple Developer Certificate. And encoded in base64 for correct transmission to GitHub Secret. | 44 | | MACOS_P12_PASSWORD | Password to decrypted the file `.p12` | 45 | | MACOS_BUILD_PROVISION_PROFILE_BASE64 | Apple profile file content `.mobileprovision` (in base64) | 46 | | DIAWI_TOKEN | API-token https://dashboard.diawi.com/profile/api, which generates links to pages for installing `.ipa` for iOS and `.apk` for Android | 47 | | SLACK_WEBHOOK | URL to webhook Slack https://slack.com/apps/A0F7XDUAZ-incoming-webhooks, which message is sent to the Slack with final apps. | 48 | 49 | Hint: command for base64 encoding and copy 50 | ```bash 51 | $ base64 file.p12 | pbcopy 52 | ``` 53 | -------------------------------------------------------------------------------- /.github/workflows/defold-build.yml: -------------------------------------------------------------------------------- 1 | name: Build Defold Android & iOS 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | branch: 7 | description: "Branch for Build" 8 | required: true 9 | default: "main" 10 | settings: 11 | description: "File name setting. Example: 'prod.ini'" 12 | required: false 13 | default: "" 14 | 15 | env: 16 | DEFOLD_VERSION_SHA: 6bfeea3b13d7b8920483ea2cba9c181a8650b84d # version 1.2.188 17 | DEFOLD_BUILD_SERVER: https://build.defold.com 18 | DEFOLD_GAME_TITLE: ExampleGameInDirectory 19 | DEFOLD_GAME_DIRECTORY: ./ExampleGameInDirectory # '.' if root or './GameName' if in directory 20 | SLACK_CHANNEL: defold-githubactions-builder 21 | 22 | jobs: 23 | variables: 24 | name: Set variables 25 | runs-on: ubuntu-20.04 26 | outputs: 27 | DEFOLD_GAME_TITLE: ${{ env.DEFOLD_GAME_TITLE }} 28 | steps: 29 | - name: Global Environment variables 30 | run: echo "This is an empty step for a valid structure job" 31 | build_on_macOS: 32 | name: Build 33 | runs-on: macos-11 34 | needs: [variables] 35 | defaults: 36 | run: 37 | working-directory: ${{ env.DEFOLD_GAME_DIRECTORY }} 38 | outputs: 39 | iOS-url: ${{ steps.link.outputs.iOS-url }} 40 | iOS-qrcode: ${{ steps.link.outputs.iOS-qrcode }} 41 | Android-url: ${{ steps.link.outputs.Android-url }} 42 | Android-qrcode: ${{ steps.link.outputs.Android-qrcode }} 43 | strategy: 44 | matrix: 45 | os: [Android, iOS] 46 | include: 47 | - os: Android 48 | platform: armv7-android 49 | bundlePath: ${{ needs.variables.outputs.DEFOLD_GAME_TITLE }}/${{ needs.variables.outputs.DEFOLD_GAME_TITLE }}.apk 50 | - os: iOS 51 | platform: armv7-darwin 52 | bundlePath: ${{ needs.variables.outputs.DEFOLD_GAME_TITLE }}.ipa 53 | steps: 54 | - uses: actions/checkout@v2 55 | with: 56 | ref: ${{ github.event.inputs.branch }} 57 | 58 | - uses: actions/setup-java@v1 59 | with: 60 | java-version: '11.0.2' 61 | 62 | - name: Download bob.jar 63 | run: | 64 | wget -q http://d.defold.com/archive/stable/${{env.DEFOLD_VERSION_SHA}}/bob/bob.jar 65 | java -jar bob.jar --version 66 | 67 | - name: Install the Apple certificate and provisioning profile 68 | id: apple 69 | if: ${{ matrix.os == 'iOS' }} 70 | env: 71 | MACOS_BUILD_CERTIFICATE_BASE64: ${{ secrets.MACOS_BUILD_CERTIFICATE_BASE64 }} 72 | MACOS_P12_PASSWORD: ${{ secrets.MACOS_P12_PASSWORD }} 73 | MACOS_BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.MACOS_BUILD_PROVISION_PROFILE_BASE64 }} 74 | KEYCHAIN_PASSWORD: rAnDom_PaSsWord_09_@# 75 | run: | 76 | # create variables 77 | CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 78 | PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision 79 | KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db 80 | 81 | # import certificate and provisioning profile from secrets 82 | echo -n "$MACOS_BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH 83 | echo -n "$MACOS_BUILD_PROVISION_PROFILE_BASE64" | base64 --decode --output $PP_PATH 84 | 85 | # create temporary keychain 86 | security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH 87 | security set-keychain-settings -lut 21600 $KEYCHAIN_PATH 88 | security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH 89 | 90 | # import certificate to keychain 91 | security import $CERTIFICATE_PATH -P "$MACOS_P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH 92 | security list-keychain -d user -s $KEYCHAIN_PATH 93 | 94 | # apply provisioning profile 95 | mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles 96 | cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles 97 | 98 | echo "::set-output name=identity::$(security find-identity -v -p codesigning | grep '1)' | sed -e 's/ 1) //' | sed 's/ .*//')" 99 | echo "::set-output name=mobileprovision::~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision" 100 | - name: Bob bundle flags 101 | id: bob 102 | run: | 103 | FLAGS+=$([[ ${{ matrix.os }} = iOS ]] && echo ' --identity ${{ steps.apple.outputs.identity }} --mobileprovisioning ${{ steps.apple.outputs.mobileprovision }}' || echo) 104 | 105 | FLAGS+=$([[ ${{ matrix.os }} = Android ]] && echo ' --keystore debug.keystore --keystore-pass debug.keystore.pass.txt --keystore-alias androiddebugkey' || echo) 106 | 107 | FLAGS+=$([[ '${{ github.event.inputs.settings }}' ]] && echo ' --settings ${{ github.event.inputs.settings }}' || echo) 108 | 109 | echo "::set-output name=flags::$FLAGS" 110 | - name: Resolve libraries 111 | run: java -jar bob.jar resolve 112 | - name: Build 113 | run: java -jar bob.jar --platform=${{ matrix.platform }} build --archive --build-server=${{env.DEFOLD_BUILD_SERVER}} 114 | - name: Bundle 115 | run: java -jar bob.jar --platform=${{ matrix.platform }} ${{ steps.bob.outputs.flags }} bundle 116 | - name: Show files 117 | run: | 118 | ls -l build 119 | ls -l build/default 120 | - name: Get short commit sha 121 | id: short-commit-sha 122 | run: echo "::set-output name=sha::$(git rev-parse --short ${{ github.sha }})" 123 | - uses: actions/upload-artifact@v2 124 | with: 125 | name: ${{ matrix.os }}_commit_${{ steps.short-commit-sha.outputs.sha }} 126 | path: ${{ env.DEFOLD_GAME_DIRECTORY }}/build/default/${{matrix.bundlePath}} 127 | - name: Get link from https://www.diawi.com 128 | uses: rnkdsh/action-upload-diawi@v1.2.1 129 | id: diawi 130 | with: 131 | token: ${{ secrets.DIAWI_TOKEN }} 132 | file: ${{ env.DEFOLD_GAME_DIRECTORY }}/build/default/${{matrix.bundlePath}} 133 | - name: Save diawi links to global outputs 134 | id: link 135 | run: | 136 | echo "::set-output name=${{matrix.os}}-url::${{ steps.diawi.outputs.url }}" 137 | echo "::set-output name=${{matrix.os}}-qrcode::${{ steps.diawi.outputs.qrcode }}" 138 | 139 | slack: 140 | name: Slack Notification 141 | runs-on: ubuntu-20.04 142 | needs: [build_on_macOS] 143 | steps: 144 | - name: Slack Notification 145 | uses: rtCamp/action-slack-notify@v2 146 | env: 147 | SLACK_CHANNEL: ${{ env.SLACK_CHANNEL }} 148 | SLACK_COLOR: ${{ job.status }} # or a specific color like 'good' or '#ff00ff' 149 | SLACK_ICON: '-' 150 | SLACK_TITLE: '${{ github.event.inputs.settings }} New apps:' 151 | SLACK_MESSAGE: | 152 | - 153 | *iOS:* 154 | Install: ${{ needs.build_on_macOS.outputs.iOS-url }} 155 | QR-code: ${{ needs.build_on_macOS.outputs.iOS-qrcode }} 156 | - 157 | *Android:* 158 | Install: ${{ needs.build_on_macOS.outputs.Android-url }} 159 | QR-code: ${{ needs.build_on_macOS.outputs.Android-qrcode }} 160 | SLACK_FOOTER: Apps stored are stored for 3 day. To install iOS you need to add your device UUID to our list 161 | SLACK_USERNAME: Bob 162 | SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} 163 | --------------------------------------------------------------------------------