diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/mxe-dockerimage-stage1.yml | 49 | ||||
-rw-r--r-- | .github/workflows/mxe-dockerimage-stage2.yml | 34 |
2 files changed, 83 insertions, 0 deletions
diff --git a/.github/workflows/mxe-dockerimage-stage1.yml b/.github/workflows/mxe-dockerimage-stage1.yml new file mode 100644 index 000000000..1452fab38 --- /dev/null +++ b/.github/workflows/mxe-dockerimage-stage1.yml @@ -0,0 +1,49 @@ +name: Docker Image CI + +on: + push: + paths: + - scripts/docker/mxe-build-container/* + + +jobs: + mxe-build-container-stage1: + runs-on: ubuntu-latest + env: + # IMPORTANT: use the second digit to test new versions, each new official build should be n.0 with the first one being 1.0 + # as you test changes toward a new release, call those 1.1, 1.2, 1.3, etc + # VERSION is just that version presented as a string constant + # + VERSION: ${{ '0.5' }} + + steps: + - uses: actions/checkout@v1 + + # Because, reasons, we can't really do anything in YAML, so do this crazy shell callout thingy in order to assemble + # sane variables to use later in this job - if someone knows an easier way to do this, please let me know! + # This abomination below assembles the docker image NAME and appends ".stage1" to the VERSION + - name: set env + run: | + v=${{ env.VERSION }} + s=".stage1" + echo "::set-env name=NAME::subsurface/mxe-build-container:${v}${s}" + + - name: Build and Publish stage 1 Docker image to Dockerhub + uses: elgohr/Publish-Docker-Github-Action@master + with: + name: ${{ env.NAME }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + dockerfile: 'Dockerfile-stage1' + workdir: './scripts/docker/mxe-build-container/' + + - name: Trigger stage 2 to run + # this triggers a dispatch event in our own repository - this allows us to work around the + # 6h runtime max (as on a two core system the total build time of this container is closer to 7h) + # we use the event_type to pass the version that we are building to the second stage + run: | + curl -XPOST -H 'authorization: token ${{ secrets.ACCESS_TOKEN }}' \ + -H "Accept: application/vnd.github.everest-preview+json" \ + -H "Content-Type: application/json" \ + https://api.github.com/repos/subsurface-divelog/subsurface/dispatches \ + --data '{"event_type": "${{ env.VERSION }}" }' diff --git a/.github/workflows/mxe-dockerimage-stage2.yml b/.github/workflows/mxe-dockerimage-stage2.yml new file mode 100644 index 000000000..531982a70 --- /dev/null +++ b/.github/workflows/mxe-dockerimage-stage2.yml @@ -0,0 +1,34 @@ +name: Docker Image CI stage 2 + +# trigger this second stage via a repository dispaych event +# the version that we are building is passed in via the event type that is available to us here +# as github.event.action + +on: repository_dispatch + +jobs: + mxe-build-container-stage2: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + # Grab the version from the event name that we were triggered by and add ".stage1" to find the docker image to start FROM + # And create the NAME of the final docker image + - name: set env + run: | + v=${{ github.event.action }} + s=".stage1" + echo "::set-env name=VERSION::${v}${s}" + echo "::set-env name=NAME::subsurface/mxe-build-container:${v}" + + - name: Build and Publish stage 2 Docker image to Dockerhub + uses: elgohr/Publish-Docker-Github-Action@master + with: + name: ${{ env.NAME }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + dockerfile: 'Dockerfile-stage2' + workdir: './scripts/docker/mxe-build-container/' + buildargs: VERSION + |