Merge pull request #1697 from pierotofy/321 #382
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: Publish Docker and WSL Images | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
jobs: | |
build: | |
runs-on: self-hosted | |
timeout-minutes: 2880 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
with: | |
config-inline: | | |
[worker.oci] | |
max-parallelism = 1 | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
# Use the repository information of the checked-out code to format docker tags | |
- name: Docker meta | |
id: docker_meta | |
uses: crazy-max/ghaction-docker-meta@v1 | |
with: | |
images: opendronemap/odm | |
tag-semver: | | |
{{version}} | |
- name: Build and push Docker image | |
id: docker_build | |
uses: docker/build-push-action@v2 | |
with: | |
file: ./portable.Dockerfile | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
no-cache: true | |
tags: | | |
${{ steps.docker_meta.outputs.tags }} | |
opendronemap/odm:latest | |
- name: Export WSL image | |
id: wsl_export | |
run: | | |
docker pull opendronemap/odm | |
docker export $(docker create opendronemap/odm) --output odm-wsl-rootfs-amd64.tar.gz | |
gzip odm-wsl-rootfs-amd64.tar.gz | |
echo ::set-output name=amd64-rootfs::"odm-wsl-rootfs-amd64.tar.gz" | |
# Convert tag into a GitHub Release if we're building a tag | |
- name: Create Release | |
if: github.event_name == 'tag' | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Release ${{ github.ref }} | |
draft: false | |
prerelease: false | |
# Upload the WSL image to the new Release if we're building a tag | |
- name: Upload amd64 Release Asset | |
if: github.event_name == 'tag' | |
id: upload-amd64-wsl-rootfs | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
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 | |
asset_path: ./${{ steps.wsl_export.outputs.amd64-rootfs }} | |
asset_name: ${{ steps.wsl_export.outputs.amd64-rootfs }} | |
asset_content_type: application/gzip | |
# Always archive the WSL rootfs | |
- name: Upload amd64 Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: wsl-rootfs | |
path: ${{ steps.wsl_export.outputs.amd64-rootfs }} | |
- name: Docker image digest and WSL rootfs download URL | |
run: | | |
echo "Docker image digest: ${{ steps.docker_build.outputs.digest }}" | |
echo "WSL AMD64 rootfs URL: ${{ steps.upload-amd64-wsl-rootfs.browser_download_url }}" | |
# Trigger NodeODM build | |
- name: Dispatch NodeODM Build Event | |
id: nodeodm_dispatch | |
run: | | |
curl -X POST -u "${{secrets.PAT_USERNAME}}:${{secrets.PAT_TOKEN}}" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" https://api.github.com/repos/OpenDroneMap/NodeODM/actions/workflows/publish-docker.yaml/dispatches --data '{"ref": "master"}' |