Skip to content

Commit

Permalink
wip: test github actions
Browse files Browse the repository at this point in the history
  • Loading branch information
otech47 committed Dec 6, 2023
1 parent 3f7e631 commit 3359c22
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/public-release-with-apk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Create or Update Release

on:
workflow_dispatch:
repository_dispatch:
types: [publish-apk]

jobs:
create-or-update-release:
runs-on: ubuntu-latest
steps:
- name: Checkout script in repo
uses: actions/checkout@v3

- name: Run publish-release
uses: actions/github-script@v7
id: gh-script
env:
RELEASE_ID: ${{ github.event.client_payload.release_id }}
with:
github-token: ${{ secrets.SOURCE_GH_TOKEN }}
result-encoding: string
script: |
const script = require('./publish-release.js')
await script({github, context, core})
74 changes: 74 additions & 0 deletions publish-release.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
module.exports = async ({ github, context, core }) => {
const { RELEASE_ID } = process.env;

const publish = async () => {
// Fetch release assets from the source repo
const assets = await github.rest.repos.listReleaseAssets({
owner: context.repo.owner,
repo: 'fedi',
release_id: RELEASE_ID,
});

console.log(`assets: ${JSON.stringify(assets)}`);

// Find the APK file
const apkAsset = assets.data.find((asset) => asset.name.endsWith('.apk'));
if (!apkAsset) {
throw new Error('APK file not found');
}

// Extract version and commit hash from the APK filename
const regex = /app-production-release-(\d+\.\d+\.\d+)-([0-9a-f]+)\.apk/;
const match = apkAsset.name.match(regex);
if (!match) {
throw new Error('Invalid APK filename format');
}

const [fullMatch, version, commitHash] = match;

// Prepare new release details
const newTagName = `v${version}`;
const newTitle = `Fedi Alpha v${version.split('.').slice(0, 2).join('.')} - APK Download`;
const truncatedCommitHash = commitHash.substring(0, 6);
const newFileName = `app-production-release-${version}-${truncatedCommitHash}.apk`;
const newDescription = `Download & Test Fedi Alpha <br><br> Download: [${newFileName}](https://github.com/${context.repo.owner}/fedi-alpha/releases/download/${newTagName}/${newFileName})`;

// Check if a release with the same title exists in the target repo
const releases = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: 'fedi-alpha',
});

const existingRelease = releases.data.find((release) => release.name === newTitle);

if (existingRelease) {
// Update existing release
await github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: 'fedi-alpha',
release_id: existingRelease.id,
tag_name: newTagName,
name: newTitle,
body: newDescription,
});
// TODO: Upload new APK and delete old APK
} else {
// Create a new release
await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: 'fedi-alpha',
tag_name: newTagName,
name: newTitle,
body: newDescription,
});
// TODO: Upload APK
}
};

try {
publish();
} catch (error) {
console.error(error);
process.exit(1);
}
};

0 comments on commit 3359c22

Please sign in to comment.