Add auto realease creation #952
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build addon | |
on: | |
push: | |
branches: | |
- "*" | |
tags: | |
- "*" | |
pull_request: | |
env: | |
TARGET: nextcloud_backup | |
IMAGE: "hassio-nextcloud-backup" | |
REPOSITORY: ghcr.io/sebclem | |
IMAGE_SOURCE: https://github.com/Sebclem/hassio-nextcloud-backup | |
permissions: write-all | |
jobs: | |
build-front: | |
name: Build Front | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Enable corepack | |
run: corepack enable | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: "pnpm" | |
cache-dependency-path: nextcloud_backup/frontend/pnpm-lock.yaml | |
- name: Install dependencies | |
run: pnpm i | |
working-directory: nextcloud_backup/frontend | |
- name: Build | |
run: pnpm build | |
working-directory: nextcloud_backup/frontend | |
- name: Upload production-ready build files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: front_dist | |
path: nextcloud_backup/frontend/dist/ | |
build-back: | |
name: Build back | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Enable corepack | |
run: corepack enable | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: "pnpm" | |
cache-dependency-path: nextcloud_backup/backend/pnpm-lock.yaml | |
- name: Install dependencies | |
run: pnpm i | |
working-directory: nextcloud_backup/backend | |
- name: Lint | |
run: pnpm lint | |
working-directory: nextcloud_backup/backend | |
- name: Build | |
run: pnpm build | |
working-directory: nextcloud_backup/backend | |
- name: Upload production-ready build files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: back_dist | |
path: nextcloud_backup/backend/dist/ | |
build-dockers: | |
runs-on: ubuntu-latest | |
needs: | |
- build-back | |
- build-front | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [aarch64, amd64, armv7] | |
include: | |
- arch: aarch64 | |
arch_value: linux/arm64/v8 | |
- arch: amd64 | |
arch_value: linux/amd64 | |
- arch: armv7 | |
arch_value: linux/arm/v7 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Cosign | |
uses: sigstore/[email protected] | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Read addon config | |
uses: pietrobolcato/[email protected] | |
id: addon_conf | |
with: | |
config: ${{ env.TARGET }}/config.yml | |
- name: Get build_from | |
id: build_from | |
run: | | |
echo "build_from=ghcr.io/home-assistant/${{ matrix.arch }}-base:$(cat nextcloud_backup/.base_version)" >> $GITHUB_OUTPUT | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.REPOSITORY }}/${{ env.IMAGE }}/${{ matrix.arch }} | |
tags: | | |
type=ref,event=branch | |
type=ref,event=branch,suffix=.${{ github.run_number }} | |
type=ref,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
labels: | | |
io.hass.name=${{ steps.addon_conf.outputs['name'] }} | |
io.hass.description=${{ steps.addon_conf.outputs['description'] }} | |
io.hass.url=${{ steps.addon_conf.outputs['url'] }} | |
io.hass.arch=${{ matrix.arch }} | |
io.hass.type=addon | |
- name: Change version in config file | |
uses: fjogeleit/[email protected] | |
with: | |
valueFile: "nextcloud_backup/config.yml" | |
propertyPath: "version" | |
value: ${{ steps.meta.outputs.version }}.${{ github.run_number}} | |
commitChange: false | |
- name: Login to ghcr.io | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push ${{matrix.arch}} | |
uses: docker/build-push-action@v6 | |
id: build-and-push | |
with: | |
push: ${{ github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.event_name == 'release') }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: | | |
${{ steps.meta.outputs.labels }} | |
io.hass.version=${{steps.meta.outputs.version}} | |
build-args: | | |
BUILD_FROM=${{ steps.build_from.outputs['build_from'] }} | |
file: ./${{ env.TARGET }}/Dockerfile | |
cache-from: type=registry,ref=${{ env.REPOSITORY }}/${{ env.IMAGE }}/${{ matrix.arch }}:latest | |
cache-to: type=inline | |
context: ./${{ env.TARGET }}/ | |
platforms: ${{ matrix.arch_value }} | |
- name: Sign the images with GitHub OIDC Token | |
if: ${{ github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.event_name == 'release') }} | |
env: | |
DIGEST: ${{ steps.build-and-push.outputs.digest }} | |
TAGS: ${{ steps.meta.outputs.tags }} | |
run: | | |
images="" | |
for tag in ${TAGS}; do | |
images+="${tag}@${DIGEST} " | |
done | |
cosign sign --yes ${images} | |
update_branch_ha_repository: | |
name: Update HA addon repository | |
runs-on: ubuntu-latest | |
needs: | |
- build-dockers | |
if: ${{ github.ref == 'refs/heads/main' }} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
path: "addon" | |
- name: Get branch names | |
id: branch-names | |
uses: tj-actions/branch-names@v8 | |
- name: Checkout Hass repo | |
uses: actions/checkout@v4 | |
with: | |
repository: Sebclem/sebclem-hassio-addon-repository | |
path: "repository" | |
token: ${{ secrets.PAT_PR }} | |
ref: ${{ steps.branch-names.outputs.current_branch }} | |
- name: Generate readme | |
uses: cuchi/[email protected] | |
with: | |
template: addon/nextcloud_backup/.README.md.j2 | |
output_file: repository/nextcloud_backup/README.md | |
variables: version=${{ steps.branch-names.outputs.current_branch }}.${{ github.run_number}} | |
- name: Move other files | |
run: | | |
cp addon/nextcloud_backup/DOCS.md repository/nextcloud_backup/ | |
cp addon/nextcloud_backup/icon.png repository/nextcloud_backup/ | |
cp addon/nextcloud_backup/logo.png repository/nextcloud_backup/ | |
cp addon/nextcloud_backup/config.yml repository/nextcloud_backup/ | |
- name: Change version in config file | |
uses: fjogeleit/[email protected] | |
with: | |
valueFile: "repository/nextcloud_backup/config.yml" | |
propertyPath: "version" | |
value: ${{ steps.branch-names.outputs.current_branch }}.${{ github.run_number}} | |
commitChange: false | |
- name: Add image propertie | |
uses: fjogeleit/[email protected] | |
with: | |
valueFile: "repository/nextcloud_backup/config.yml" | |
propertyPath: "image" | |
value: "ghcr.io/sebclem/hassio-nextcloud-backup/{arch}" | |
commitChange: false | |
- name: Commit and push | |
run: | | |
cd repository | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
git add . | |
git commit -m "Update Nextcloud Backup to ${{ steps.branch-names.outputs.current_branch }}.${{ github.run_number }}" | |
git push | |
draft-release: | |
name: Draft release | |
runs-on: ubuntu-latest | |
needs: | |
- build-dockers | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Get changelog | |
run: npx auto-changelog --handlebars-setup .github/custom-handlebars.js | |
- name: Create release | |
uses: softprops/action-gh-release@v2 | |
with: | |
body: CHANGELOG.md | |
draft: true |