Files
typoraCracker/.github/workflows/manual.yml
2022-04-04 13:42:01 +08:00

136 lines
5.3 KiB
YAML

# This is a basic workflow that is manually triggered
name: Manual workflow
# Controls when the action will run. Workflow runs when manually triggered using the UI
# or API.
on:
workflow_dispatch:
schedule:
- cron: '23 21 * * 1'
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "greet"
check_version:
name: check the latest version
# The type of runner that the job will run on
runs-on: ubuntu-20.04
outputs:
RELEASE_VERSION: ${{ steps.getLatestRelease.outputs.RELEASE_VERSION }}
LATEST_VERSION: ${{ steps.checkVersion.outputs.LATEST_VERSION }}
steps:
- name: Get Latest Release
id: getLatestRelease
uses: actions/github-script@v3.1.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const releaseResponse = await github.repos.getLatestRelease({
owner: 'Mas0nShi',
repo: 'typoraCracker',
})
const {
data: { tag_name: ver }
} = releaseResponse;
core.setOutput('RELEASE_VERSION', ver);
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.8' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- name: install dependencies
run: |
sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install innoextract -y
python3 -m pip install loguru
- name: Check Latest Version
id: checkVersion
run: |
python3 auto-analysis/check_version.py
output="$(cat auto-analysis/win/x64/LATEST_VERSION)"
echo "$output"
echo '::set-output name=LATEST_VERSION::$output'
create_release:
needs: check_version
runs-on: ubuntu-20.04
if: needs.check_version.outputs.RELEASE_VERSION != needs.check_version.outputs.LATEST_VERSION
steps:
- run: echo '${{ needs.check_version.outputs.LATEST_VERSION }}'
- name: Create Runner Release
uses: actions/create-release@v1
id: createRelease
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: '${{ needs.check_version.outputs.LATEST_VERSION }}'
release_name: '${{ needs.check_version.outputs.LATEST_VERSION }}'
prerelease: false
patch_file:
needs: [check_version, create_release]
runs-on: ubuntu-20.04
if: needs.check_version.outputs.RELEASE_VERSION != needs.check_version.outputs.LATEST_VERSION
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.8' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- name: install dependencies
run: |
sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install innoextract cmake -y
python3 -m pip install r2pipe loguru
- name: build radare2
shell: bash
run: |
git clone https://github.com/radareorg/radare2
radare2/sys/install.sh
- name: patch version
run: |
python3 auto-analysis/patch.py
tar -zcvf auto-analysis/win/x64/build/typoraCracker.tar.gz auto-analysis/win/x64/build/*
- name: Check release version
id: checkReleaseVersion
uses: actions/github-script@v3.1.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
try {
const releaseVersion = '${{ needs.check_version.outputs.LATEST_VERSION }}'
const releaseResponse = await github.repos.getReleaseByTag({
owner: 'Mas0nShi',
repo: 'typoraCracker',
tag: releaseVersion
})
const {
data: { id: releaseId, html_url: htmlUrl, upload_url: uploadUrl }
} = releaseResponse;
core.setOutput('id', releaseId);
core.setOutput('html_url', htmlUrl);
core.setOutput('upload_url', uploadUrl);
core.setOutput('version', releaseVersion);
} catch (e) {
core.setFailed(e.message);
}
- name: Upload win x64 typora.py for typoraCracker
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: '${{ steps.checkReleaseVersion.outputs.upload_url }}'
asset_path: '${{ github.workspace }}/auto-analysis/win/x64/build/typoraCracker.tar.gz'
asset_name: '${{ needs.check_version.outputs.LATEST_VERSION }}-win-x64.tar.gz'
asset_content_type: application/x-tgz