Skip to content

Upload asset

Upload asset #69

Workflow file for this run

name: Build Firefox Extension XPI
on:
push:
branches: [ wip/build-xpi ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
- name: Get latest tag version
id: get-version
run: |
version=$(git tag --sort=-creatordate | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 | cut -c 2-)
echo "VERSION=$version" >> $GITHUB_ENV
- name: Generate 8-digit date
id: get-date
run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
- name: Set XPI file name
run: |
echo "XPI_NAME=tabmix-dev-build" >> $GITHUB_ENV
- name: Replace version in install.rdf
run: |
sed -i "s/1.0.0-unbundeled/${{ env.VERSION }}-${{ env.DATE }}/" addon/install.rdf
- name: Upload XPI to Release
id: upload-artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.XPI_NAME }}
path: addon/
- name: Download XPI from Release
id: download-artifact
uses: actions/download-artifact@v4
with:
name: ${{ env.XPI_NAME }}
- name: Update dev-build tag
run: |
git tag -d dev-build && git tag dev-build $(git rev-parse HEAD)
- name: Update dev-build release
uses: actions/github-script@v7
with:
github-token: ${{secrets.REPO_WORKFLOW_TOKEN}}
script: |
const { owner, repo } = context.repo
try {
const release = await github.rest.repos.getReleaseByTag({
owner,
repo,
tag: 'dev-build',
});
const releaseID = release.data.id
console.log('Update dev-build release, ID', releaseID)
const assets = await github.rest.repos.listReleaseAssets({
owner,
repo,
release_id: releaseID,
})
for (const asset of assets.data) {
if (asset.name === 'tabmix-dev-build.xpi') {
console.log('Delete existing asset', asset.name)
await github.rest.repos.deleteReleaseAsset({
owner,
repo,
asset_id: asset.id,
})
}
}
await github.rest.repos.updateRelease({
owner,
repo,
release_id: releaseID,
tag_name: 'dev-build',
draft: false,
make_latest: 'legacy',
})
console.log('dev-build release updated successfully')
} catch (error) {
console.log('dev-build release does not exist')
await github.rest.repos.createRelease({
owner,
repo,
tag_name: 'dev-build',
draft: false,
prerelease: true,
make_latest: 'legacy',
name: 'Development Build',
body: 'This release includes an XPI file that is automatically generated after each push to the main branch.'
});
console.log('dev-build release created successfully')
}
- name: Archive Release
uses: thedoctor0/[email protected]
with:
type: 'zip'
filename: ${{ env.XPI_NAME }}
- name: Upload asset
uses: ncipollo/[email protected]
with:
owner: 'onemen'
repo: 'TabMixPlus'
tag: 'dev-build'
allowUpdates: true
artifacts: ${{ env.XPI_NAME }}.zip
# - name: list files
# shell: bash
# # working-directory: ${{ github.workspace }}
# run: |
# echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token
# gh release upload dev-build ${{ steps.upload-artifact.outputs.artifact-url }} --clobber
# # gh release upload dev-build ${{ env.XPI_NAME }} --clobber
# # run: |
# # for filename in ./* ; do
# # echo "working on $filename..."
# # done
# - name: Upload new asset
# uses: actions/github-script@v7
# with:
# github-token: ${{secrets.REPO_WORKFLOW_TOKEN}}
# script: |
# const { owner, repo } = context.repo;
# const releaseId = ${{ env.RELEASE_ID }};
# // Use the captured artifact URL
# // const artifactUrl = '${{ steps.upload-artifact.outputs.artifact-url }}/${{ env.XPI_NAME }}.zip';
# const artifactUrl = '${{ steps.upload-artifact.outputs.artifact-url }}';
# const artifactDownloadPath = '${{ steps.download-artifact.outputs.download-path }}/${{ env.XPI_NAME }}.zip';
# const runId = github.run_id;
# const xpiName = process.env.XPI_NAME;
# const artifactDownloadUrl = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/artifacts/${runId}/download-artifact/${encodeURIComponent(xpiName)}.zip`;
# console.log('-------------------------------------------');
# console.log({artifactDownloadUrl})
# console.log({artifactDownloadPath})
# const assetName = 'tabmix-dev-build.xpi';
# /*
# const artifactResponse = await fetch("https://api.github.com/repos/onemen/TabMixPlus/actions/artifacts");
# if (!artifactResponse.ok) {
# throw new Error(`Can't find artifact id: ${artifactResponse.statusText}`);
# }
# // const data = await artifactResponse.json();
# // const firstArtifactId = data.artifacts[0].id;
# // const artifactUrl = `https://github.com/onemen/TabMixPlus/actions/artifacts/${firstArtifactId}`
# */
# // Download the artifact
# // const response = await fetch(artifactDownloadPath);
# const response = await fetch(artifactDownloadUrl);
# //console.log({firstArtifactId})
# console.log({artifactUrl})
# // console.log(response)
# console.log('-------------------------------------------')
# if (!response.ok) {
# throw new Error(`downloading artifact failed: ${response.statusText}`);
# }
# const asset = await response.arrayBuffer();
# const assetSize = asset.byteLength;
# const assetContentType = 'application/x-xpinstall';
# // Upload the asset
# await github.rest.repos.uploadReleaseAsset({
# owner,
# repo,
# release_id: releaseId,
# name: assetName,
# data: asset,
# headers: {
# 'content-length': assetSize,
# 'content-type': assetContentType,
# },
# });