1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-04-05 04:35:08 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Frank Halasz
20046b265b Taking source builds out of buildReleaseInclDocker workflow (#418)
Github does this automatically when release published
2022-02-12 13:44:50 -08:00
Frank Halasz
e6a974a2a7 Fix for maiko buildReleaseInclDocker workflow failures. Dockerfile out of sync. (#416)
* Adding new workflow that builds maiko releaases for Linux/amd64, Linux/arm64, Linux/arm7, Macos/amd64.  (Not Macos/arm64 as yet.) Also builds and pushes to DockerHub docker images for Linux/amd64 and Linux/arm64.  Delete old buildDocker.yml workflow.

* Adding latest version of buildReleaseInclDocker.yml; builds release and docker images for all major platforms except MacOs arm64.

* Adding Dockerfile.  Was out of sync with final dev version at fghalasz/maiko
2022-02-12 09:36:04 -08:00
2 changed files with 54 additions and 74 deletions

View File

@@ -8,7 +8,8 @@
# For macOS: release assets are built/pushed for X86_64. (No aarch64 as yet.)
# For Windows: not supported
#
# Note release pushed to github also includes source code assets in tar and zip formats.
# Note release pushed to github automatically includes source code assets
# in tar and zip formats.
#
# 2022-01-16 by Frank Halasz based on earlier workflow called buildDocker.yml
#
@@ -54,15 +55,13 @@ defaults:
run:
shell: bash
# 3 separate jobs here that can run in parallel
# 2 separate jobs here that can run in parallel
#
# 1. Linux: Build/push a multiplatform Linux Docker image and use results to
# build/push Linux release assets.
#
# 2. MacOs_x86_64: Build maiko for MacOS on X86_64 then create and push release assets.
#
# 3. Sources: create/push sources assets for this release.
#
jobs:
@@ -319,62 +318,6 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
######################################################################################
# Sources: create and push release assets containing sources to github
sources:
needs: [inputs, sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
runs-on: ubuntu-latest
steps:
# Checkout the branch
- name: Checkout
uses: actions/checkout@v2
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v2
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Setup release tag
- name: Setup Release Tag
id: tag
uses: ./../actions/release-tag-action
# Create source tars for the release
- name: Make source tars
env:
RELEASE_TAG: ${{ steps.tag.outputs.release_tag }}
run: |
mkdir -p /tmp/release_tars
pushd ${GITHUB_WORKSPACE}/../ >/dev/null
mv maiko ${RELEASE_TAG}
/usr/bin/tar -c -z -f /tmp/release_tars/${RELEASE_TAG}-source.tgz --exclude=.git ${RELEASE_TAG}
/usr/bin/find ${RELEASE_TAG} -name .git -prune -o -print |\
/usr/bin/zip -@ /tmp/release_tars/${RELEASE_TAG}-source.zip
mv ${RELEASE_TAG} maiko
popd >/dev/null
# Push Release
- name: Push the release
uses: ncipollo/release-action@v1.8.10
with:
allowUpdates: true
artifacts:
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-source.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-source.zip
tag: ${{ steps.tag.outputs.release_tag }}
draft: true
token: ${{ secrets.GITHUB_TOKEN }}
######################################################################################
@@ -388,7 +331,7 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, linux, macos_x86_64, sources]
needs: [inputs, sentry, linux, macos_x86_64]
steps:
# Checkout the actions for this repo owner

View File

@@ -1,18 +1,55 @@
#*******************************************************************************
#
# Dockerfile to build Maiko (Stage 1) and create a Docker image and push it
# to DockerHub (stage 2).
#
# Copyright 2022 by Interlisp.org
#
# ******************************************************************************
#
# Build Maiko Stage
#
FROM ubuntu:focal AS builder
SHELL ["/bin/bash", "-c"]
USER root:root
# Install build tools
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
# Copy over / clean maiko repo
COPY . /app/maiko
RUN rm -rf /app/maiko/linux*
# Build maiko
WORKDIR /app/maiko/bin
RUN ./makeright x
RUN if [ "$(./osversion)" = "linux" ] && [ "$(./machinetype)" = "x86_64" ]; then ./makeright init; fi
# Prep for Install Stage
RUN mv ../$(./osversion).$(./machinetype) ../TRANSFER
#
# Install Maiko Stage
#
FROM ubuntu:focal
ARG BUILD_DATE
ARG BUILD_DATE="not_available"
ARG RELEASE_TAG="not_available"
LABEL name="Maiko"
LABEL description="Virtual machine for Interlisp Medley"
LABEL url="https://github.com/Interlisp/maiko"
LABEL build-time=$BUILD_DATE
ARG TARGETPLATFORM
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
COPY --chown=nonroot:nonroot . /app/maiko
RUN rm -rf /app/maiko/linux*
WORKDIR /app/maiko/bin
RUN ./makeright x
RUN rm -rf /app/maiko/inc /app/maiko/include /app/maiko/src
LABEL release_tag=$RELEASE_TAG
ENV MAIKO_RELEASE=$RELEASE_TAG
ENV MAIKO_BUILD_DATE=$BUILD_DATE
ARG BUILD_LOCATION=/app/maiko
ARG INSTALL_LOCATION=/usr/local/interlisp/maiko
#
SHELL ["/bin/bash", "-c"]
USER root:root
# Copy release files into /usr/local/directories
COPY --from=builder ${BUILD_LOCATION}/bin/osversion ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/bin/machinetype ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/bin/config.guess ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/bin/config.sub ${INSTALL_LOCATION}/bin/
COPY --from=builder ${BUILD_LOCATION}/TRANSFER/lde* ${INSTALL_LOCATION}/TRANSFER/
RUN cd ${INSTALL_LOCATION} && mv TRANSFER "$(cd bin && ./osversion).$(cd bin/ && ./machinetype)"
# Some niceties
USER root
WORKDIR /root
ENTRYPOINT /bin/bash