# Variables: # - RUNNER_TAG: optional, defines on which runner the workflow will use, default ubuntu-latest # - DYNAMIC_MANIFEST: optional, if set it will build the manifest from header.yml and module.yml files (json not yet supported) # - MANIFEST_FILENAME: needed, the manifest name such as net.retrodeck.retrodeck.yaml name: "Build Artifacts for RetroDECK main manifest" on: workflow_dispatch: workflow_call: inputs: MANIFEST_FILENAME: required: true type: string DYNAMIC_MANIFEST: required: false type: string default: "false" env: DATE: ${{ github.run_id }} jobs: Building-project: runs-on: ubuntu-latest steps: - name: Generate a token for Rekku if: ${{ github.repository == 'RetroDECK/RetroDECK' }} id: generate-rekku-token uses: actions/create-github-app-token@v1 with: app-id: ${{ vars.REKKU_APP_ID }} private-key: ${{ secrets.REKKU_PRIVATE_KEY }} repositories: "RetroDECK,Cooker" owner: "RetroDECK" - name: Clone repo uses: actions/checkout@v3 with: submodules: 'true' - name: "Assembling manifest" if: ${{ inputs.DYNAMIC_MANIFEST == 'true' }} run: | if [ -f "${GITHUB_WORKSPACE}/automation_tools/assemble_manifest.sh" ]; then /bin/bash "${GITHUB_WORKSPACE}/automation_tools/assemble_manifest.sh" else echo "Manifest assembly script not found." exit 1 fi - name: "[DEBUG] Outputting manifest" if: ${{ inputs.DYNAMIC_MANIFEST == 'true' }} run: | if [ -f "${{ inputs.MANIFEST_FILENAME }}" ]; then cat "${{ inputs.MANIFEST_FILENAME }}" else echo "ERROR: manifest file not found: ${{ inputs.MANIFEST_FILENAME }}" exit 1 fi - name: "Build flatpak" run: | # Pull the Docker image docker pull ghcr.io/retrodeck/retrodeck-builder:latest # Configure Git git config --global protocol.file.allow always # Run the flatpak build inside the Docker container docker run --rm \ -v "${GITHUB_WORKSPACE}:/workspace" \ -w /workspace \ ghcr.io/retrodeck/retrodeck-builder:latest \ --user --force-clean \ --install-deps-from=flathub \ --install-deps-from=flathub-beta \ --repo="/workspace/artifacts-repo" \ "/workspace/artifacts-build-dir" \ "${{ inputs.MANIFEST_FILENAME }}" - name: "Exporting dir tree" id: tree run: | tree -H ./ > ${GITHUB_WORKSPACE}/tree.html echo "Directory tree exported to tree.html" - name: "Create Artifact for RetroDECK" run: | tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/artifacts-build-dir . hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz)) echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.sha - name: Upload Artifacts uses: actions/upload-artifact@v3 with: name: RetroDECK-Artifacts path: | ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz ${GITHUB_WORKSPACE}/tree.html - name: Set environment variable with current branch name run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV - name: Get branch name id: branch_name run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV - name: Publish the artifacts in a new release uses: ncipollo/release-action@v1 with: tag: "${{ github.ref_name }}-${{ github.run_id }}" body: | # Release Notes These are the artifacts for RetroDECK from ${{ github.repository }}, built from commit: ${{ github.repository }}@${{ github.sha }}. On branch [${{ github.ref_name }}](https://github.com/${{ github.repository }}/tree/${{ github.ref_name }}). artifacts: "${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz, ${GITHUB_WORKSPACE}/tree.html" allowUpdates: true makeLatest: true token: ${{ steps.generate-rekku-token.outputs.token || secrets.TRIGGER_BUILD_TOKEN || secrets.GITHUB_TOKEN }}