Skip to content

Fornightly Release

Fornightly Release #1

name: Fornightly Release
on:
schedule:
- cron: '30 9 1-10 * 5'
- cron: '30 9 20-30 * 5'
# workflow_dispatch:
# # Inputs the workflow accepts.
# inputs:
# tag:
# description: "Tag name, e.g. v0.4"
# default: v0.4
# required: true
# release:
# description: "Release name, e.g. release-0.4"
# default: release-0.4
# required: true
# rpm_version:
# description: "rpm version, e.g. 0.4"
# default: 0.4
# required: true
# rpm_release:
# description: "rpm release, e.g. 1"
# default: 1
# required: true
# committer:
# description: "rpm committer, e.g. gh-actions"
# default: "gh-actions"
# required: false
# changelog:
# description: "rpm changelog, e.g. new release"
# default: "new release"
# required: false
# arch:
# description: "rpm arch, e.g. x86_64"
# default: "x86_64"
# required: false
jobs:
build:
name: Upload Release Asset
runs-on: ubuntu-latest
steps:
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Set environment variable
run: |
echo "RELEASE_NAME=fornightly-$(date +'%Y-%m-%d')" >> $GITHUB_ENV
echo "TAG_NAME=fornightly-$(date +'%Y-%m-%d')" >> $GITHUB_ENV
echo "RPM_RELEASE=fornightly-$(date +'%Y-%m-%d')" >> $GITHUB_ENV
echo "COMMITTER=gh-actions" >> $GITHUB_ENV
echo "CHANGE_LOG=fornightly release" >> $GITHUB_ENV
echo "ARCH=x86_64" >> $GITHUB_ENV
- name: Checkout code
uses: actions/checkout@v3
- name: Create tag
uses: actions/github-script@v5
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/${{ env.TAG_NAME }}',
sha: context.sha
})
- name: Create Release
id: create_release
uses: actions/create-release@v1
with:
tag_name: ${{ env.TAG_NAME }}
release_name: ${{ env.RELEASE_NAME }}
draft: false
prerelease: false
- name: Build RPM packages
id: rpm_build
env:
_VERSION_ : ${{ env.RELEASE_NAME }}
_RELEASE_: ${{ env.RELEASE_NAME }}
_COMMITTER_: ${{ env.COMMITTER }}
_CHANGELOG_: ${{ env.CHANGE_LOG }}
_ARCH_: ${{ env.ARCH }}
run: |
make containerized_build_rpm
make containerized_build_container_rpm
cd _output/rpmbuild/
sudo tar czvf /tmp/kepler.rpm.tar.gz RPMS/
- name: release rpm
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: /tmp/kepler.rpm.tar.gz
asset_name: kepler.rpm.tar.gz
asset_content_type: application/gzip
push-image:
name: Push image to the registry
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Quay
uses: docker/login-action@v1
with:
registry: quay.io/sustainable_computing_io
username: ${{ secrets.BOT_NAME }}
password: ${{ secrets.BOT_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64
push: true
tags: quay.io/sustainable_computing_io/kepler:latest, quay.io/sustainable_computing_io/kepler:${{ env.RELEASE_NAME }}
labels: latest, ${{ env.RELEASE_NAME }}
file: build/Dockerfile
- name: Generate SBOM
uses: anchore/sbom-action@v0.14.2
with:
image: quay.io/sustainable_computing_io/kepler:${{ env.RELEASE_NAME }}
artifact-name: sbom-kepler- ${{ env.RELEASE_NAME }}.json
output-file: ./sbom-kepler- ${{ env.RELEASE_NAME }}.spdx.json
- name: Attach SBOM to release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.TAG_NAME }}
files: ./sbom-kepler- ${{ env.RELEASE_NAME }}.spdx.json