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