diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..0832a58 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,70 @@ +name: QVNote Actions +on: [push] +jobs: + Build-Binary: + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup NodeJS + uses: actions/setup-node@v3 + with: + node-version: '16' + - name: Setup GoLang + uses: actions/setup-go@v3 + with: + go-version: '^1.17.8' + + - name: Setup ENV + run: | + export TAG_NAME=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }') + if [[ "$TAG_NAME" == "master" ]]; then export TAG_NAME=$(date +'%Y%m%d%H%M%S'); fi + echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV + + - name: Install requests + run: | + npm i + export CGO_ENABLED=1; go mod download + export GO111MODULE=off; go get -u github.com/go-bindata/go-bindata/... + export GO111MODULE=off; go get -u github.com/josephspurrier/goversioninfo/cmd/goversioninfo + + - name: Build frontend + run: | + npm run build + cd templates && go-bindata -o ../bindata.go -fs ./... ../icon.ico && cd .. + + - name: Building MacOS binary + run: | + mkdir QVNote.app; mkdir QVNote.app/Contents; mkdir QVNote.app/Contents/MacOS; mkdir QVNote.app/Contents/Resources + cp Info.plist QVNote.app/Contents; cp icon.icns QVNote.app/Contents/Resources + export CGO_ENABLED=1; export GOOS=darwin; export GOARCH=amd64; go build -o QVNote.app/Contents/MacOS/QVNote && chmod a+x QVNote.app/Contents/MacOS/QVNote + + - name: Building Linux binary + run: | + export CGO_ENABLED=0; export GOOS=linux; export GOARCH=amd64; go build -o qvnote-linux-x64 && chmod a+x qvnote-linux-x64 + + - name: Building Windows binary + run: | + goversioninfo + export CGO_ENABLED=0; export GOOS=windows; export GOARCH=amd64; go build -a -gcflags=all="-l -B" -ldflags="-w -s -H windowsgui" -o QVNote-windows-x64.exe + + - name: Archiving + if: startsWith(github.ref, 'refs/tags/') + run: | + 7z a -tzip qvnote-${{ env.TAG_NAME }}-linux-x64.zip notes qvnote-linux-x64 + 7z a -tzip qvnote-${{ env.TAG_NAME }}-mac-x64.zip notes QVNote.app + 7z a -tzip qvnote-${{ env.TAG_NAME }}-win-x64.zip notes QVNote-windows-x64.exe + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + tag_name: ${{ env.TAG_NAME }} + draft: true + files: | + qvnote-${{ env.TAG_NAME }}-linux-x64.zip + qvnote-${{ env.TAG_NAME }}-mac-x64.zip + qvnote-${{ env.TAG_NAME }}-win-x64.zip + + diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 47fbfad..0000000 --- a/.travis.yml +++ /dev/null @@ -1,65 +0,0 @@ -os: - - osx - - windows -language: go -go: - - 1.14.x -before_install: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then nvm install 12; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export HOMEBREW_NO_AUTO_UPDATE=1; brew install p7zip; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then choco install nodejs-lts; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then choco install 7zip; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then export "PATH=/c/Program Files/7-Zip:/c/Users/travis/gopath/bin:/c/Program Files/nodejs:$PATH"; fi -install: - - npm install -g npm@latest - - npm install - - npm ddp - - export GO111MODULE=off; go get -u github.com/go-bindata/go-bindata/... - - export GO111MODULE=off; go get -u github.com/josephspurrier/goversioninfo/cmd/goversioninfo -# - go mod download -# - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then go get -u github.com/gonutz/w32; fi -script: - - npm run build - - go-bindata templates/... icon.ico - # building MacOS binary - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkdir QVNote.app; mkdir QVNote.app/Contents; mkdir QVNote.app/Contents/MacOS; mkdir QVNote.app/Contents/Resources; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cp Info.plist QVNote.app/Contents; cp icon.icns QVNote.app/Contents/Resources; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then go build -o QVNote.app/Contents/MacOS/QVNote && chmod a+x QVNote.app/Contents/MacOS/QVNote; fi - # building Linux binary - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export CGO_ENABLED=0; export GOOS=linux; export GOARCH=amd64; go build -o qvnote-linux-x64 && chmod a+x qvnote-linux-x64; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export CGO_ENABLED=0; export GOOS=linux; export GOARCH=386; go build -o qvnote-linux-x86 && chmod a+x qvnote-linux-x86; fi - # building Windows binary - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then goversioninfo; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then export CGO_ENABLED=0; export GOOS=windows; export GOARCH=amd64; go build -ldflags -H=windowsgui -o QVNote-windows-x64.exe; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then export CGO_ENABLED=0; export GOOS=windows; export GOARCH=386; go build -ldflags -H=windowsgui -o QVNote-windows-x86.exe; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then export CGO_ENABLED=0; export GOOS=windows; export GOARCH=amd64; go build -o QVNote-windows-x64-console.exe; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then export CGO_ENABLED=0; export GOOS=windows; export GOARCH=386; go build -o QVNote-windows-x86-console.exe; fi - -before_deploy: - - export RELEASE_TITLE=$(date '+%Y%m%d%H%M%S')-$TRAVIS_JOB_NUMBER - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then 7z a -tzip qvnote-$TRAVIS_TAG-linux-x86.zip notes qvnote-linux-x86; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then 7z a -tzip qvnote-$TRAVIS_TAG-linux-x64.zip notes qvnote-linux-x64; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then 7z a -tzip qvnote-$TRAVIS_TAG-mac-x64.zip notes QVNote.app; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then 7z.exe a -tzip qvnote-$TRAVIS_TAG-win-x86.zip notes QVNote-windows-x86.exe; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then 7z.exe a -tzip qvnote-$TRAVIS_TAG-win-x64.zip notes QVNote-windows-x64.exe; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then 7z.exe a -tzip qvnote-$TRAVIS_TAG-win-x86-console.zip notes QVNote-windows-x86-console.exe; fi - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then 7z.exe a -tzip qvnote-$TRAVIS_TAG-win-x64-console.zip notes QVNote-windows-x64-console.exe; fi -deploy: - provider: releases - name: Release $TRAVIS_TAG ($RELEASE_TITLE) - file_glob: true - token: - secure: Xux7SYhUqyYo99TGewxKMhQOW5V83LeCLKu+vYJEKekrHpyWtpqE7dVjce3sUjakZaYRIggDvQH7GAtVpKRkk+Ux+L5jUnpQsQMs5CAKw8xHZ6NgMi/+iJ63N1LCd6WEmuuigjZ+R0IMCQahmQmYRJleUSxYcybiqAOuMVfrfo+fHPpMiG8xunLtWYRu/A1XCKeCe8SdtShv2PI0ED2SeHLU2Y9/cV7PMu5XQG4Tozd4KCnvYIr0zATDd7KcjgVk9nQCyMvQjmQ5GpROOO8eiCz16X8sGrPZ21UZfzd3lx18Dr8p0D++7p7J1mDYmy8DHFlLeIk7aG0UpoeBhpB0u4lxUw4HHozu+jrCEhov94MMKPuSCCemkuy2czEEvzoyHBfCzWxCsITOWEt3daW+WnKJpspkQPa+MF+NL5okqk/JyEsJBKByyzJ6wupaEfylTftHSHk9rkSuWjjO+Dzxa1hLI6qcKjZfn0l0AF11GRDOzEJ6YOWX3BIEewpsh4+KQl7RddNGS24XS/dqfURwSBtTSuvR1wBC4LbyJpCh4LnnNtZWI2sxe0kQCpeds6DTBks9HvwvLAfQnygtFsVzZmnT4r01h5NcsouDv90voVXtv2fU42v+E5iDeb55eDzSHCSOIUu7CQeZem9hwRpoVnca9uMWs6DvaKi0FXjBb5c= - file: - - qvnote-$TRAVIS_TAG-win-x86.zip - - qvnote-$TRAVIS_TAG-win-x64.zip - - qvnote-$TRAVIS_TAG-win-x86-console.zip - - qvnote-$TRAVIS_TAG-win-x64-console.zip - - qvnote-$TRAVIS_TAG-linux-x86.zip - - qvnote-$TRAVIS_TAG-linux-x64.zip - - qvnote-$TRAVIS_TAG-mac-x64.zip - draft: true - on: - repo: NightMan-1/QVNote - tags: true - all_branches: true