aasdk/.github/workflows/build_compile.yml

163 lines
5.2 KiB
YAML

name: Build and test with docker
on:
push:
tags:
- '*'
jobs:
version:
outputs:
version: ${{ steps.get_version.outputs.version }}
buildname: ${{ steps.get_version.outputs.buildname }}
runs-on: "ubuntu-latest"
steps:
-
name: Checkout repository
uses: actions/checkout@v1
-
name: Get the version
id: get_version
run: |
if [ -z "$version" ]
then
version=$(date '+%Y%m%d')
echo ::set-output name=version::"${version}"
else
echo ::set-output name=version::"${version}"
fi
builddate=$(date '+%Y-%m-%d')
buildhash=$(git rev-parse --short "$GITHUB_SHA")
buildname="${builddate}-${buildhash}"
echo ::set-output name=version::${VERSION}
echo ::set-output name=buildhash::${buildhash}
echo ::set-output name=builddate::${builddate}
echo ::set-output name=buildname::${buildname}
env:
version: ${{ github.event.inputs.version }}
compile:
runs-on: ${{ matrix.host }}
needs: [ version ]
strategy:
fail-fast: false
max-parallel: 3
matrix:
host: [
"ubuntu-latest",
#"macos-10.15",
]
config:
- {
name: "armhf Release",
arch: "armhf"
}
- {
name: "amd64 Release",
arch: "amd64"
}
name: 'Build and Upload release: ${{ matrix.config.name }}'
steps:
- uses: actions/checkout@v2
-
name: Build the Docker image
run: docker build -t aasdk_builder --file buildenv/Dockerfile .
-
name: 'Build ${{ matrix.config.arch }} Debian package'
run: docker run -v "${PWD}/release":/release aasdk_builder:latest ${{ matrix.config.arch }}
-
name: Get Name of Artifact
id: get-artifact-name
run: |
ls -hla
ARTIFACT_PATHNAME=$(ls ./release/*.deb | head -n 1)
ARTIFACT_NAME=$(basename $ARTIFACT_PATHNAME)
echo ::set-output name=artifact_filename::${ARTIFACT_NAME}
echo ::set-output name=artifact_path::${ARTIFACT_PATHNAME}
-
name: Upload build artifacts
id: upload_deploy
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.config.arch }}
path: |
${{ steps.get-artifact-name.outputs.artifact_path }}
# Create Release
release:
runs-on: ubuntu-latest
needs: [ version, compile ]
if: startsWith(github.ref, 'refs/tags/')
name: 'Create release'
outputs:
release_upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
steps:
- uses: actions/checkout@v2
-
name: Build Changelog
id: github_release
uses: mikepenz/release-changelog-builder-action@v2.4.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
name: Create GitHub release
id: create_release
uses: softprops/action-gh-release@v0.1.13
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{needs.version.outputs.version }}
release_name: ${{needs.version.outputs.buildname }}
body: ${{steps.github_release.outputs.changelog}}
draft: true
prerelease: true
# Upload release artifacts
upload:
needs: [ version, compile, release ]
runs-on: ${{ matrix.host }}
strategy:
fail-fast: false
max-parallel: 3
matrix:
host: [
"ubuntu-latest",
#"macos-10.15",
]
config:
- {
name: "armhf Release",
arch: "armhf"
}
- {
name: "amd64 Release",
arch: "amd64"
}
name: 'Upload release: ${{ matrix.config.name }}'
steps:
-
name: Download build artifacts
uses: actions/download-artifact@v2
with:
name: ${{ steps.get_version.outputs.version }}
-
name: Get Artifact Filenames
id: get-artifact-name
run: |
ARTIFACT_PATHNAME=$(ls ${{ matrix.config.arch }}/*.deb | head -n 1)
ARTIFACT_NAME=$(basename $ARTIFACT_PATHNAME)
echo ::set-output name=artifact_filename::${ARTIFACT_NAME}
echo ::set-output name=artifact_path::${ARTIFACT_PATHNAME}
-
name: Upload zip to release
id: upload_zip
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_VERSION: ${{ needs.version.outputs.buildname }}
with:
upload_url: ${{needs.release.outputs.release_upload_url}}
asset_path: ${{ steps.get-artifact-name.outputs.artifact_path }}
asset_name: ${{ steps.get-artifact-name.outputs.artifact_filename }}
asset_content_type: application/vnd.debian.binary-package