1e01aa904Sopenharmony_ciname: Build Deploy Container 2e01aa904Sopenharmony_ci 3e01aa904Sopenharmony_cion: 4e01aa904Sopenharmony_ci 5e01aa904Sopenharmony_ci # Always have a base image ready to go - this is a nightly build 6e01aa904Sopenharmony_ci schedule: 7e01aa904Sopenharmony_ci - cron: 0 3 * * * 8e01aa904Sopenharmony_ci 9e01aa904Sopenharmony_ci # Allow manual trigger of a build 10e01aa904Sopenharmony_ci workflow_dispatch: 11e01aa904Sopenharmony_ci inputs: 12e01aa904Sopenharmony_ci whatever: 13e01aa904Sopenharmony_ci description: 'This variable does not matter, its a GHA bug.' 14e01aa904Sopenharmony_ci 15e01aa904Sopenharmony_ci # On push to main we build and deploy images 16e01aa904Sopenharmony_ci push: 17e01aa904Sopenharmony_ci branches: 18e01aa904Sopenharmony_ci - develop 19e01aa904Sopenharmony_ci 20e01aa904Sopenharmony_ci # Do build to test works on PR 21e01aa904Sopenharmony_ci pull_request: [] 22e01aa904Sopenharmony_ci 23e01aa904Sopenharmony_ci # Publish packages on release 24e01aa904Sopenharmony_ci release: 25e01aa904Sopenharmony_ci types: [published] 26e01aa904Sopenharmony_ci 27e01aa904Sopenharmony_cijobs: 28e01aa904Sopenharmony_ci build: 29e01aa904Sopenharmony_ci permissions: 30e01aa904Sopenharmony_ci packages: write 31e01aa904Sopenharmony_ci strategy: 32e01aa904Sopenharmony_ci fail-fast: false 33e01aa904Sopenharmony_ci matrix: 34e01aa904Sopenharmony_ci 35e01aa904Sopenharmony_ci # Dockerfiles to build, container names to use, and to tag as libabigail:latest? 36e01aa904Sopenharmony_ci container: [["Dockerfile.fedora", "ghcr.io/woodard/libabigail-fedora", true], 37e01aa904Sopenharmony_ci ["Dockerfile.ubuntu", "ghcr.io/woodard/libabigail-ubuntu-22.04", false], 38e01aa904Sopenharmony_ci ["Dockerfile.fedora-base", "ghcr.io/woodard/libabigail-fedora-base", false]] 39e01aa904Sopenharmony_ci 40e01aa904Sopenharmony_ci runs-on: ubuntu-latest 41e01aa904Sopenharmony_ci name: Build 42e01aa904Sopenharmony_ci steps: 43e01aa904Sopenharmony_ci - name: Checkout 44e01aa904Sopenharmony_ci uses: actions/checkout@v3 45e01aa904Sopenharmony_ci 46e01aa904Sopenharmony_ci - name: Make Space For Build 47e01aa904Sopenharmony_ci run: | 48e01aa904Sopenharmony_ci sudo rm -rf /usr/share/dotnet 49e01aa904Sopenharmony_ci sudo rm -rf /opt/ghc 50e01aa904Sopenharmony_ci 51e01aa904Sopenharmony_ci # It's easier to reference named variables than indexes of the matrix 52e01aa904Sopenharmony_ci - name: Set Environment 53e01aa904Sopenharmony_ci env: 54e01aa904Sopenharmony_ci dockerfile: ${{ matrix.container[0] }} 55e01aa904Sopenharmony_ci uri: ${{ matrix.container[1] }} 56e01aa904Sopenharmony_ci isLatest: ${{ matrix.container[2] }} 57e01aa904Sopenharmony_ci run: | 58e01aa904Sopenharmony_ci echo "dockerfile=$dockerfile" >> $GITHUB_ENV 59e01aa904Sopenharmony_ci echo "uri=$uri" >> $GITHUB_ENV 60e01aa904Sopenharmony_ci echo "isLatest=$isLatest" >> $GITHUB_ENV 61e01aa904Sopenharmony_ci 62e01aa904Sopenharmony_ci - name: Pull previous layers for cache 63e01aa904Sopenharmony_ci run: docker pull ${uri}:latest || echo "No container to pull" 64e01aa904Sopenharmony_ci 65e01aa904Sopenharmony_ci - name: Build Container 66e01aa904Sopenharmony_ci run: | 67e01aa904Sopenharmony_ci container=$uri:latest 68e01aa904Sopenharmony_ci docker build -f docker/${dockerfile} -t ${container} . 69e01aa904Sopenharmony_ci if [[ "${isLatest}" == "true" ]]; then 70e01aa904Sopenharmony_ci docker tag ${container} ghcr.io/woodard/libabigail:latest 71e01aa904Sopenharmony_ci fi 72e01aa904Sopenharmony_ci echo "container=$container" >> $GITHUB_ENV 73e01aa904Sopenharmony_ci 74e01aa904Sopenharmony_ci - name: GHCR Login 75e01aa904Sopenharmony_ci if: (github.event_name != 'pull_request') 76e01aa904Sopenharmony_ci uses: docker/login-action@v1 77e01aa904Sopenharmony_ci with: 78e01aa904Sopenharmony_ci registry: ghcr.io 79e01aa904Sopenharmony_ci username: ${{ github.actor }} 80e01aa904Sopenharmony_ci password: ${{ secrets.GITHUB_TOKEN }} 81e01aa904Sopenharmony_ci 82e01aa904Sopenharmony_ci - name: Deploy 83e01aa904Sopenharmony_ci if: (github.event_name != 'pull_request') 84e01aa904Sopenharmony_ci run: | 85e01aa904Sopenharmony_ci docker push ${container} 86e01aa904Sopenharmony_ci if [[ "${isLatest}" == "true" ]]; then 87e01aa904Sopenharmony_ci docker push ghcr.io/woodard/libabigail:latest 88e01aa904Sopenharmony_ci fi 89e01aa904Sopenharmony_ci 90e01aa904Sopenharmony_ci - name: Tag and Push Release 91e01aa904Sopenharmony_ci if: (github.event_name == 'release') 92e01aa904Sopenharmony_ci run: | 93e01aa904Sopenharmony_ci tag=${GITHUB_REF#refs/tags/} 94e01aa904Sopenharmony_ci echo "Tagging and releasing ${uri}:${tag}" 95e01aa904Sopenharmony_ci docker tag ${uri}:latest ${uri}:${tag} 96e01aa904Sopenharmony_ci docker push ${uri}:${tag} 97e01aa904Sopenharmony_ci if [[ "${isLatest}" == "true" ]]; then 98e01aa904Sopenharmony_ci docker tag ${uri}:latest ghcr.io/woodard/libabigail:${tag} 99e01aa904Sopenharmony_ci docker push ghcr.io/woodard/libabigail:${tag} 100e01aa904Sopenharmony_ci fi 101