# 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 Linux on: release: types: [published] push: tags: - v* branches: [ master, dev, 45-snap-version] 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: 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 with: submodules: 'recursive' - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 - name: Prepare run: | cd compiler && npm install 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 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-linux.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: 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: Download artifacts uses: actions/download-artifact@v2 - name: Prepare run: | cd compiler && npm install sudo apt install -y fuse 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 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-20.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: Prepare run: | sudo apt-get install -y build-essential fakeroot devscripts debhelper # debmake lintian pbuilder - name: Build Deb Package run: | export BUILD_VERSION=${{ steps.tag.outputs.tag }} ls -l mkdir -p tmp/build export WINE=false tools/build-prepare.sh env WINE=false 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 # with: # submodules: 'recursive' # - name: Use Node.js ${{ matrix.node-version }} # uses: actions/setup-node@v2 # with: # node-version: ${{ matrix.node-version }} # cache: 'npm' # - name: Prepare # run: | # cd compiler && npm install # 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 # wget # 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 # build-snap: # name: Build Snap Package # runs-on: ubuntu-18.04 # 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 # with: # submodules: 'recursive' # - name: Install Snapcraft # uses: samuelmeuli/action-snapcraft@v1 # with: # use_lxd: true # - name: Prepare # run: | # cd compiler && npm install # git --version # git --help # # You can now run Snapcraft shell commands # - name: Build snap # run: sg lxd -c 'snapcraft --use-lxd' # - name: move file # run: | # mkdir -p tmp/build # mv *.snap tmp/build # - 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-snap # - 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: | sudo apt install -y fuse 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.* **build/*.snap - 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.* # **build/*.snap