0
0
mirror of https://github.com/cucumber-sp/yandex-music-linux.git synced 2024-12-23 22:22:59 +03:00
yandex-music-linux/.github/workflows/update-build-release.yml
2024-11-24 14:38:30 +03:00

159 lines
5.4 KiB
YAML

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 }}