更新release发布脚本

pull/83/head
sky 4 years ago
parent ba964c7a03
commit 21174e63a2
  1. 280
      .github/workflows/release.yml

@ -1,145 +1,145 @@
name: Build Hack-Browser-Data Release name: Build Hack-Browser-Data Release
on: on:
release: release:
types: [created] types: [created]
jobs: jobs:
build: build:
name: Build Binary name: Build Binary
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [windows-latest, macos-latest, ubuntu-latest] os: [windows-latest, macos-latest, ubuntu-latest]
arch: [amd64, '386'] arch: [amd64, '386']
include: include:
- os: windows-latest - os: windows-latest
goos: windows goos: windows
bin: 'hack-browser-data.exe' bin: 'hack-browser-data.exe'
args: -9 args: -9
releaseos: windows releaseos: windows
- os: macos-latest - os: macos-latest
goos: darwin goos: darwin
bin: 'hack-browser-data' bin: 'hack-browser-data'
args: -9 args: -9
releaseos: osx releaseos: osx
- os: ubuntu-latest - os: ubuntu-latest
goos: linux goos: linux
bin: 'hack-browser-data' bin: 'hack-browser-data'
args: -9 args: -9
releaseos: linux releaseos: linux
exclude: exclude:
- os: macos-latest - os: macos-latest
arch: '386' arch: '386'
steps: - os: windows-latest
- name: Set up Go arch: '386'
uses: actions/setup-go@v2 steps:
with: - name: Set up Go
go-version: 1.15 uses: actions/setup-go@v2
- if: matrix.os == 'ubuntu-latest' with:
run: sudo apt-get update && sudo apt-get install -y gcc-multilib go-version: 1.15
- if: matrix.arch == '386' - if: matrix.os == 'ubuntu-latest'
run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-32bit" >> $GITHUB_ENV run: sudo apt-get update && sudo apt-get install -y gcc-multilib
- if: matrix.arch == 'amd64' - if: matrix.arch == '386'
run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-64bit" >> $GITHUB_ENV run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-32bit" >> $GITHUB_ENV
- if: matrix.os == 'windows-latest' && matrix.arch == 'amd64' - if: matrix.arch == 'amd64'
shell: powershell run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-64bit" >> $GITHUB_ENV
run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-64bit" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - if: matrix.os == 'windows-latest'
- if: matrix.os == 'windows-latest' && matrix.arch == '386' shell: powershell
shell: powershell run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-64bit" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
run: echo "RELEASE=hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-32bit" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - uses: actions/checkout@v2
- uses: actions/checkout@v2 - name: Build ${{ matrix.goos }}/${{ matrix.arch }}
- name: Build ${{ matrix.goos }}/${{ matrix.arch }} run: go build -ldflags '-w -s' -o ${{ matrix.bin }}
run: go build -ldflags '-w -s' -o ${{ matrix.bin }} env:
env: GOOS: ${{ matrix.goos }}
GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.arch }}
GOARCH: ${{ matrix.arch }} CGO_ENABLED: 1
CGO_ENABLED: 1 - uses: svenstaro/upx-action@v2
- uses: svenstaro/upx-action@v2 with:
with: args: ${{ matrix.args }}
args: ${{ matrix.args }} file: ${{ matrix.bin }}
file: ${{ matrix.bin }} - name: Upload to artifacts
- name: Upload to artifacts uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2 with:
with: name: ${{ env.RELEASE }}
name: ${{ env.RELEASE }} path: ${{ matrix.bin }}
path: ${{ matrix.bin }} package:
package: name: Package Assets
name: Package Assets runs-on: ubuntu-latest
runs-on: ubuntu-latest needs: build
needs: build steps:
steps: - uses: actions/checkout@v2
- uses: actions/checkout@v2 - uses: actions/download-artifact@v2
- uses: actions/download-artifact@v2 with:
with: path: bin
path: bin - name: Package Releases
- name: Package Releases run: |
run: | mkdir releases;
mkdir releases; for RELEASE_DIR in bin/*
for RELEASE_DIR in bin/* do
do echo "Creating release $RELEASE_DIR"
echo "Creating release $RELEASE_DIR" for BINARY in $RELEASE_DIR/*
for BINARY in $RELEASE_DIR/* do
do chmod 777 $BINARY;
chmod 777 $BINARY; cp $BINARY .;
cp $BINARY .; zip -r releases/$(basename $RELEASE_DIR).zip \
zip -r releases/$(basename $RELEASE_DIR).zip \ $(basename ${BINARY}) \
$(basename ${BINARY}) \ README.md \
README.md \ README_ZH.md;
README_ZH.md; rm $BINARY;
rm $BINARY; done
done done
done - name: Upload to artifacts
- name: Upload to artifacts uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v2 with:
with: name: releases
name: releases path: releases/*.zip
path: releases/*.zip
upload:
name: Upload to the Release
runs-on: ubuntu-latest
needs: package
steps:
- uses: actions/download-artifact@v2
with:
name: releases
path: releases/
- name: Upload Archives to Release
env:
UPLOAD_URL: ${{ github.event.release.upload_url }}
API_HEADER: "Accept: application/vnd.github.v3+json"
AUTH_HEADER: "Authorization: token ${{ secrets.GITHUB_TOKEN }}"
run: |
UPLOAD_URL=$(echo -n $UPLOAD_URL | sed s/\{.*//g)
for FILE in releases/*
do
echo "Uploading ${FILE}";
curl \
-H "${API_HEADER}" \
-H "${AUTH_HEADER}" \
-H "Content-Type: $(file -b --mime-type ${FILE})" \
--data-binary "@${FILE}" \
"${UPLOAD_URL}?name=$(basename ${FILE})";
done
- name: Generate SHA256 Hashes
env:
API_HEADER: "Accept: application/vnd.github.v3+json"
AUTH_HEADER: "Authorization: token ${{ secrets.GITHUB_TOKEN }}"
RELEASE_URL: ${{ github.event.release.url }}
run: |
HASH_TABLE="| SHA256 Hash | Filename |"
HASH_TABLE="${HASH_TABLE}\n|-----|-----|\n"
for FILE in releases/*
do
FILENAME=$(basename ${FILE})
HASH=$(sha256sum ${FILE} | cut -d ' ' -f 1)
HASH_TABLE="${HASH_TABLE}|${HASH}|${FILENAME}|\n"
done
echo "${HASH_TABLE}"
curl \
-XPATCH \
-H "${API_HEADER}" \
-H "${AUTH_HEADER}" \
-H "Content-Type: application/json" \
-d "{\"body\": \"${HASH_TABLE}\"}" \
"${RELEASE_URL}";
upload:
name: Upload to the Release
runs-on: ubuntu-latest
needs: package
steps:
- uses: actions/download-artifact@v2
with:
name: releases
path: releases/
- name: Upload Archives to Release
env:
UPLOAD_URL: ${{ github.event.release.upload_url }}
API_HEADER: "Accept: application/vnd.github.v3+json"
AUTH_HEADER: "Authorization: token ${{ secrets.GITHUB_TOKEN }}"
run: |
UPLOAD_URL=$(echo -n $UPLOAD_URL | sed s/\{.*//g)
for FILE in releases/*
do
echo "Uploading ${FILE}";
curl \
-H "${API_HEADER}" \
-H "${AUTH_HEADER}" \
-H "Content-Type: $(file -b --mime-type ${FILE})" \
--data-binary "@${FILE}" \
"${UPLOAD_URL}?name=$(basename ${FILE})";
done
- name: Generate SHA256 Hashes
env:
API_HEADER: "Accept: application/vnd.github.v3+json"
AUTH_HEADER: "Authorization: token ${{ secrets.GITHUB_TOKEN }}"
RELEASE_URL: ${{ github.event.release.url }}
run: |
HASH_TABLE="| SHA256 Hash | Filename |"
HASH_TABLE="${HASH_TABLE}\n|-----|-----|\n"
for FILE in releases/*
do
FILENAME=$(basename ${FILE})
HASH=$(sha256sum ${FILE} | cut -d ' ' -f 1)
HASH_TABLE="${HASH_TABLE}|${HASH}|${FILENAME}|\n"
done
echo "${HASH_TABLE}"
curl \
-XPATCH \
-H "${API_HEADER}" \
-H "${AUTH_HEADER}" \
-H "Content-Type: application/json" \
-d "{\"body\": \"${HASH_TABLE}\"}" \
"${RELEASE_URL}";

Loading…
Cancel
Save