mirror of https://github.com/opencardev/aasdk
163 lines
5.2 KiB
YAML
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
|