# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: Build Packages on: release: types: [published] push: tags: - v* branches: [ master, dev] pull_request: branches: [ master ] # # Allows you to run this workflow manually from the Actions tab # workflow_dispatch: jobs: build-src: name: Build Base Packages runs-on: ubuntu-latest strategy: matrix: ARCH: ['x86_64'] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 - name: Test run: | echo "$UID, $GID" - name: Generate TAG id: Tag run: | tag='continuous' name='Continuous Build' if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then tag='${{ github.ref_name }}' name='${{ github.ref_name }}' fi echo "tag result: $tag - $name" echo "::set-output name=tag::$tag" echo "::set-output name=name::$name" - name: Build run: | export ACTION_MODE=true export DOCKER_UID=$UID export DOCKER_GID=$GID ls -l export NO_WINE=false docker-compose up - name: Compress Resources run: | ls -l mkdir -p tmp/src rm -rf nwjs/node nwjs/node.exe cp node/bin/node nwjs/node cd nwjs && ln -s node node.exe cd .. tar -zcf tmp/src/src-wine.tar.gz bin nwjs package.nw tools export NO_WINE=true "tools/fix-core.sh" "tools/fix-other.sh" tar -zcf tmp/src/src-no-wine.tar.gz bin nwjs package.nw tools - name: Compress nodegit compiler run: | ls -l mkdir -p tmp/build cp -r package.nw/node_modules/nodegit . sudo rm -rf compiler/test tar -zcf compiler.tar.gz compiler tar -zcf nodegit.tar.gz nodegit mv nodegit.tar.gz tmp/build mv compiler.tar.gz tmp/build cd tmp/build ls -l - name: View Directory run: | ls -l - name: Upload artifact uses: actions/upload-artifact@v2.3.1 with: # Artifact name name: wechat-devtools-${{ matrix.ARCH }}.src path: tmp/src - name: Upload artifact uses: actions/upload-artifact@v2.3.1 with: # Artifact name name: wechat-devtools-${{ matrix.ARCH }}.build path: tmp/build build-tar: name: Build tar.gz AppImage needs: - build-src runs-on: ubuntu-latest strategy: matrix: ARCH: ['x86_64'] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 - name: Download artifacts uses: actions/download-artifact@v2 - name: Test run: | echo "$UID, $GID" - name: Generate TAG id: Tag run: | tag='continuous' name='Continuous Build' if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then tag='${{ github.ref_name }}' name='${{ github.ref_name }}' fi echo "tag result: $tag - $name" echo "::set-output name=tag::$tag" echo "::set-output name=name::$name" - name: Build run: | export NO_WINE=false export ACTION_MODE=true # tar.gz AppImage ls -l mkdir -p tmp/build tools/build-prepare.sh tools/build-release.sh ${{ matrix.ARCH }} ${{ steps.tag.outputs.tag }} - name: View Directory run: | ls -l - name: Upload artifact uses: actions/upload-artifact@v2.3.1 with: # Artifact name name: wechat-devtools-${{ matrix.ARCH }}.build path: tmp/build # build-deb: # name: Build Deb Package # needs: # - build-src # runs-on: ubuntu-18.04 # strategy: # matrix: # ARCH: ['x86_64'] # # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ # steps: # - uses: actions/checkout@v2 # - name: Download artifacts # uses: actions/download-artifact@v2 # - name: Generate TAG # id: Tag # run: | # tag='continuous' # name='Continuous Build' # if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then # tag='${{ github.ref_name }}' # name='${{ github.ref_name }}' # fi # echo "tag result: $tag - $name" # echo "::set-output name=tag::$tag" # echo "::set-output name=name::$name" # - name: Build Deb Package # run: | # export BUILD_VERSION=${{ steps.tag.outputs.tag }} # ls -l # mkdir -p tmp/build # tools/build-prepare.sh # tools/build-deb.sh ${{ steps.tag.outputs.tag }} # export NO_WINE=true # tools/build-prepare.sh # tools/build-deb.sh ${{ steps.tag.outputs.tag }} # - name: Upload artifact # uses: actions/upload-artifact@v2.3.1 # with: # # Artifact name # name: wechat-devtools-${{ matrix.ARCH }}.build # path: tmp/build build-deb: name: Build DEB Package needs: - build-src runs-on: ubuntu-18.04 strategy: matrix: ARCH: ['x86_64'] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 - name: Download artifacts uses: actions/download-artifact@v2 - name: Generate TAG id: Tag run: | tag='continuous' name='Continuous Build' if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then tag='${{ github.ref_name }}' name='${{ github.ref_name }}' fi echo "tag result: $tag - $name" echo "::set-output name=tag::$tag" echo "::set-output name=name::$name" # https://stackoverflow.com/questions/61096521/how-to-use-gpg-key-in-github-actions - name: Configure GPG Key run: | echo -n "$GPG_SIGNING_KEY" | base64 --decode | gpg --import env: GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} - name: Build Deb Package run: | sudo apt-get install -y build-essential fakeroot devscripts git git-buildpackage debhelper debmake lintian pbuilder export BUILD_VERSION=${{ steps.tag.outputs.tag }} ls -l mkdir -p tmp/build tools/build-prepare.sh env NO_WINE=false tools/build-deepin.sh ${{ steps.tag.outputs.tag }} export NO_WINE=true tools/build-prepare.sh env NO_WINE=true tools/build-deepin.sh ${{ steps.tag.outputs.tag }} - name: Upload artifact uses: actions/upload-artifact@v2.3.1 with: # Artifact name name: wechat-devtools-${{ matrix.ARCH }}.build path: tmp/build build-arch: name: Build ArchLinux Package runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: node-version: [16.x] ARCH: ['x86_64'] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Prepare run: | npm install node-gyp nw-gyp npm -g node-gyp install cat /etc/passwd - name: Generate TAG id: Tag run: | tag='continuous' name='Continuous Build' if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then tag='${{ github.ref_name }}' name='${{ github.ref_name }}' fi echo "tag result: $tag - $name" echo "::set-output name=tag::$tag" echo "::set-output name=name::$name" - name: Build ArchLinux Package uses: countstarlight/arch-makepkg-action@master env: BUILD_VERSION: ${{ steps.tag.outputs.tag }} with: repos: > archlinuxcn=https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch before: "tools/build-aur.sh && sudo pacman -S --noconfirm archlinuxcn-keyring" packages: > gconf p7zip libxkbfile python2 openssl gcc make libssh2 krb5 scripts: "cd tmp/AUR && makepkg && ls -l && cd ../../" - name: Fix Permissions run: | sudo chmod -R 0777 tmp mkdir -p tmp/build mv tmp/AUR/*.pkg.* tmp/build cd tmp/build for file in `ls *.pkg.*`;do mv $file `echo $file|sed 's/:/-/g'`;done; ls -l - name: Upload artifact uses: actions/upload-artifact@v2.3.1 with: # Artifact name name: wechat-devtools-${{ matrix.ARCH }}.build path: tmp/build upload: name: Create release and upload artifacts needs: - build-tar - build-deb # - build-deepin - build-arch runs-on: ubuntu-latest steps: - name: Download artifacts uses: actions/download-artifact@v2 - name: Inspect directory after downloading artifacts run: ls -alFR - name: Generate TAG id: Tag run: | tag='continuous' name='Continuous Build' if [ 'true' == ${{ startsWith(github.ref, 'refs/tags/') }} ];then tag='${{ github.ref_name }}' name='${{ github.ref_name }}' fi echo "tag result: $tag - $name" echo "::set-output name=tag::$tag" echo "::set-output name=name::$name" - name: Create release and upload artifacts if: startsWith(github.ref, 'refs/heads/') env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | wget -q https://github.com/TheAssassin/pyuploadtool/releases/download/continuous/pyuploadtool-x86_64.AppImage chmod +x pyuploadtool-x86_64.AppImage ./pyuploadtool-x86_64.AppImage **build/WeChat*.AppImage **build/*.tar.gz **build/*.deb **build/*.pkg.* - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: # note you'll typically need to create a personal access token # with permissions to create releases in the other repo name: ${{ steps.tag.outputs.name }} tag_name: ${{ steps.tag.outputs.tag }} files: | **build/WeChat*.AppImage **build/*.tar.gz **build/*.deb **build/*.pkg.*