name: Update, build and release on: workflow_dispatch: schedule: - cron: '0 0 * * *' push: branches: - 'master' - 'dev' jobs: update_packages: runs-on: ubuntu-latest container: image: archlinux:latest steps: - name: Install dependencies run: pacman -Syy -q --noconfirm && pacman -S -q --noconfirm git jq nix python python-requests openssl gcc-libs glibc - name: Checkout uses: actions/checkout@v4 - name: Git Access Fix run: git config --global --add safe.directory "*" - name: Update package files run: | python utility/update_version.py python utility/generate_packages.py - name: Commit and push changes uses: EndBug/add-and-commit@v9.1.4 id: commit with: message: Update packages add: "." author_name: GitHub Actions author_email: loraner123@gmail.com" - name: Get Version id: version run: | VERSION=$(jq -r '.ym.version' ./utility/version_info.json) release_name="v$VERSION" tag_name="v$VERSION" echo "VERSION=$VERSION" >> $GITHUB_OUTPUT echo "release_name=$release_name" >> $GITHUB_OUTPUT echo "tag_name=$tag_name" >> $GITHUB_OUTPUT - name: Tag Repo uses: rickstaa/action-create-tag@v1 with: tag: ${{ steps.version.outputs.tag_name }} force_push_tag: true commit_sha: ${{ steps.commit.outputs.commit_long_sha || github.event.head_commit.id}} - name: Outputs id: outputs run: | echo "commited=${{ steps.commit.outputs.commited || github.event.head_commit }}" >> $GITHUB_OUTPUT echo "commit_long_sha=${{ steps.commit.outputs.commit_long_sha || github.event.head_commit.id}}" >> $GITHUB_OUTPUT echo "commit_name=${{ github.event.head_commit.message || 'Update packages' }}" >> $GITHUB_OUTPUT echo "tag_name=${{ steps.version.outputs.tag_name }}" >> $GITHUB_OUTPUT echo "release_name=${{ steps.version.outputs.release_name }}" >> $GITHUB_OUTPUT echo "VERSION=${{ steps.version.outputs.VERSION }}" >> $GITHUB_OUTPUT cat $GITHUB_OUTPUT outputs: commited: ${{ steps.outputs.outputs.commited != '' }} commit_long_sha: ${{ steps.outputs.outputs.commit_long_sha }} commit_name: ${{ steps.outputs.outputs.commit_name }} tag_name: ${{ steps.outputs.outputs.tag_name }} release_name: ${{ steps.outputs.outputs.release_name }} version: ${{ steps.outputs.outputs.VERSION }} build: needs: [update_packages] uses: ./.github/workflows/build.yml if: ${{ needs.update_packages.outputs.commited }} with: ref: ${{ needs.update_packages.outputs.commit_long_sha }} upload-release: needs: [build, update_packages] if: ${{ needs.update_packages.outputs.commited && github.ref_name == 'master' }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: ref: ${{ needs.update_packages.outputs.commit_long_sha }} - name: Publish package changes to AUR uses: KSXGitHub/github-actions-deploy-aur@v2.7.2 with: pkgname: "yandex-music" pkgbuild: "PKGBUILD" updpkgsums: false allow_empty_commits: true commit_username: "cucumber-sp" commit_email: "loraner123@gmail.com" ssh_private_key: "${{ secrets.AUR_SSH_PRIVATE_KEY }}" commit_message: "${{ needs.update_packages.outputs.commit_name }}" ssh_keyscan_types: "rsa,ecdsa,ed25519" - name: Download artifact uses: actions/download-artifact@v4 with: merge-multiple: true path: dist - name: Install packages run: | sudo apt-get update -y sudo apt-get install jq -y - name: Copy files to APT server uses: appleboy/scp-action@v0.1.7 with: host: ${{ secrets.CLOUD_SSH_HOST }} username: ${{ secrets.CLOUD_SSH_USERNAME }} password: ${{ secrets.CLOUD_SSH_PASSWORD }} source: "dist/*.deb" target: ~/apt/repo/deb-packages rm: true strip_components: 1 - name: Update APT repo uses: appleboy/ssh-action@v1.1.0 with: host: ${{ secrets.CLOUD_SSH_HOST }} username: ${{ secrets.CLOUD_SSH_USERNAME }} password: ${{ secrets.CLOUD_SSH_PASSWORD }} script: ~/apt/update-repo.sh - name: Get Release Notes HTML id: release_notes run: echo "release_html=$(jq -r --arg version "${{ needs.update_packages.outputs.version }}" '.["desktop-release-notes." + $version]' ./dist/release_notes.json)" >> $GITHUB_OUTPUT - run: rm -rf dist/release_notes.json - name: Upload files to a GitHub release uses: ncipollo/release-action@v1.13.0 with: allowUpdates: true artifacts: dist/* makeLatest: true name: ${{ needs.update_packages.outputs.release_name }} replacesArtifacts: true tag: ${{ needs.update_packages.outputs.tag_name }} body: ${{ steps.release_notes.outputs.release_html }}